原型 · 预览版:收录官方注册中心里的全部服务器,每 30 分钟同步一次。评价和账户功能将在后续阶段推出。
PopNx MCP为使用 AI 的人准备的 MCP 服务器 · 用大白话讲清楚

Flow Learning System

作者:ghlee0786版本 0.1.0i★ –i在你的电脑上运行
注册名称io.github.ghlee0786/flow-learning-system

安装

概览

作者提供的说明(英文原文)

Build motion-graphics lessons with sentence-synced TTS for any subject: one sentence, one scene.

PopNx MCP 的三大支柱

这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。

它能帮你做什么

我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。

  • 连接方式: 在你的电脑上运行
  • 传输方式: stdio
  • 分类: 其他

安装

选择你使用的 AI 应用,然后复制设置。

安装之前

  • 基础检查:1 项中通过 1 项
  • 在你的电脑上运行,拥有你的用户账户的权限(文件、网络、应用)。
  • 注册中心没有列出需要填写的密钥。

你用的是哪个应用?

在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。

下载作者的 .mcpb 文件

链接指向作者自己的文件;我们不托管也不重新打包它。打开文件后,Claude Desktop 会进行安装。

在终端中运行这条命令

浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。

浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。

这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。

你的选择通过 Cookie 保存在这台设备上,无需账户。

这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。

它能做什么

它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。

基础检查i

我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月6日

  • ✓ 通过

    作者与仓库一致

    注册名称已通过 GitHub 账户 ghlee0786 验证,该账户拥有此仓库

  • … 尚未检查

    仍在维护

    我们还没有从 GitHub 读取这个仓库

  • … 尚未检查

    有许可证

    我们还没有从 GitHub 读取这个仓库

  • – 不适用

    端点有响应

    它在你的电脑上运行,没有互联网端点

  • – 不适用

    使用 OAuth 登录

    在你的电脑上运行,改用本地设置

  • … 尚未检查

    工具描述中没有隐藏指令

    它在你的电脑上运行;我们只能读取互联网端点的工具列表

与“其他”中的其他服务器比较i

  • 星标数多于此分类中其他 32505 个服务器的 0%
  • 发布到注册中心的时间比此分类中其他 32505 个服务器的 73% 更新
  • 基础检查结果等于或优于此分类中其他 32505 个服务器的 100%

与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。

常见问题

Flow Learning System 安全吗?

它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。

它需要哪些密钥或代码?

注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。

它在我的电脑上运行还是在云端?

它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。

它还在维护吗?

GitHub 仓库最后更新于–,最新版本(0.1.0)于14天前进入注册中心。

哪些应用可以使用它?

支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 MCPB。

有什么可以替代它?

同一分类中有:Spec Driven Development, Remote Desktop Commander, topo^alpin

替代选择

同一分类中其他作者的服务器,按星标数排序。

如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i

Spec Driven Development

作者:formulahendry

MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.

在你的电脑上运行★ 440MIT14个月前更新
安装

Remote Desktop Commander

作者:desktop-commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

在云端运行★ 211昨天更新
安装

topo^alpin

作者:topoalpin.app

Avalanche bulletins and mountain weather forecasts for any place in the Alps.

在云端运行今天更新
安装

作者的 README

打开 README

按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。

Flow Learning System

English · 한국어 · 日本語 · 简体中文

A learning system built on motion graphics and TTS. It works for any subject: math, science, English, biology, programming, and more. Write a lesson as JSON data and each sentence becomes one scene. The result is a single-file HTML textbook in which graphs, equations, sentence parts, 3D illustrations, and code move on screen the moment the voice starts reading the sentence they belong to. An AI uses MCP tools to write the textbook, check it, run its example code to verify the output, render 3D illustrations with Blender, record the narration, and build it. The bundled TTS (Supertonic) currently voices Korean and English, and the sample courses are in Korean.

Math · Translating a quadratic function The curve slides into its new position, and the changing part of the equation is highlighted

Science · A block on an incline On top of a Blender render, gravity splits into two components that grow out of it

English · Forming the passive voice Words move to new positions, and example sentences are read by an English voice

Biology · Structure of the animal cell Zooms into a 3D cross-section of the cell, pointing out organelles one by one

Programming · Lesson 7 (Arrays) of a 17-lesson C# syntax course — current-line highlighting, array cells filling in, an execution trace table, collapsible contents and script panels


Core idea: one sentence = one scene

  • Each say in a lesson is one scene. A scene bundles the script sentence, a large key phrase, and the visuals for that moment (graph, equation, sentence parts, image, code, variables…).
  • Narration is synthesized sentence by sentence and concatenated, and the start time of each sentence is recorded in timing.json.
  • The player reads the audio's current playback position every frame and picks the scene from it. Changing the playback speed or jumping to the middle never puts the picture and the voice out of sync.

Example courses

SubjectCourseScenesVisuals usedWhat to look for
Mathexamples/math-quadratic13plot, math, tblA curve with the same name morphs between scenes, so the translation is visible
Scienceexamples/physics-incline12img (3D render), math, bars, plotArrows grow toward force endpoints computed in 3D; zoom
Englishexamples/english-passive12tokens, example-sentence panel, tbl, flowWord chunks move to new positions; `{en…}` segments use an English voice
Biologyexamples/biology-cell13img (3D render), flow, cardsOrganelle labels move around as the view zooms into the cell cross-section
Programmingexamples/csharp-grammar321 (17 lessons)Code, variables, arrays, stack/queue/dictionary, consoleAll 48 examples are actually run and compared against the on-screen output

Adding 3D illustrations with Blender

The render_3d tool runs an AI-written Blender scene script headlessly and renders it with Cycles. When the script marks a 3D position with spot("name", (x, y, z)), the tool computes where that point lands in the perspective-projected image and saves it alongside the render. Lessons then refer to those names for labels, zoom centers, and arrows.

# Block on an incline — compute the endpoints of gravity and its two components as 3D vectors

th = math.radians(30) d = V3((math.cos(th), 0, -math.sin(th))) # down-slope direction n = V3((math.sin(th), 0, math.cos(th))) # normal to the incline spot("block", C) spot("g_tip", C + V3((0, 0, -2.6))) # gravity mg spot("par_tip", C + d * 2.6 * math.sin(th)) # mg sinθ spot("perp_tip", C - n * 2.6 * math.cos(th)) # mg cosθ

{"img": ["assets/incline.png", {

"spots": {"theta": {"label": "θ = 30°"}}, "arrows": [{"from": "block", "to": "g_tip", "label": "mg", "c": "bad"}, {"from": "block", "to": "par_tip", "label": "mg sinθ", "c": "g1"}], "zoom": 1.35, "focus": "block"}]}

Because the arrow tips are points computed in 3D, they line up exactly with the rendered incline. Scene scripts are kept in assets/src/, so they can be re-rendered at any time.

Screen layout

AreaContents
Left: ContentsLessons and sections. Collapsible; clicking a section jumps to that scene
Center: StageKey phrase + left panel (code or example sentences, with the current line highlighted) + visuals. Always dark, regardless of theme
Right: ScriptAbout 1/5 of the screen. Highlights the sentence being read; clicking a sentence plays from there. Collapsible
Bottom: TimelineProgress bar divided by scene

The top bar holds only lesson navigation, play, scene navigation, and playback speed (0.75×–2×). On phones, the contents and script panels become drawers that open over the stage.

Motion rules

When the scene changes, on-screen elements are matched by name (key) and animated. No animation needs to be specified separately: changing the data is enough to produce motion.

MotionWhenExample
SlideAn element with the same name is in a different positionArray sorting, pointer i, words moving in the passive voice
MorphThe coordinates of a curve, point, or line with the same name changeTranslating a parabola, changing its width
Fly inA source cell is given with fromanswer[(i + k) % n] = arr[i]
GrowA new arrow appearsResolving a force into components
Zoom / panAn image's zoom or focus changesPointing out cell organelles
Blink · ScatterOnly the value changes · element disappearsVariable values, Pop

Anatomy of a lesson

{

"id": 1, "group": "수학", "title": "이차함수의 평행이동", "ops": [ {"op": "part", "title": "x축 방향으로 평행이동"}, {"op": "say", "head": "{m|y = (x - 2)^2} : 오른쪽으로 2", "text": "x 자리에 x 빼기 2를 넣으면 그래프 전체가 오른쪽으로 2만큼 미끄러집니다.", "board": {"seq": [ {"plot": [{"curves": [{"fn": "(x-2)**2", "c": "g1", "key": "p"}], "points": [{"x": 2, "y": 0, "label": "꼭짓점 (2, 0)", "key": "v"}]}]}, {"math": [["y = x^2", "y = (x - 2)^2"], {"hl": [1]}]}]}} ] }

The sample courses are narrated in Korean; {en|…} segments switch to an English voice.

The ops before a say build up the screen state, and the say captures that moment, together with its sentence, as a scene. The 22 ops, 24 widgets, and sentence markup ({m|equation}, {en|English}, [[written form|spoken form]]) are documented in the [authoring guide](docs/authoring.md) (in Korean). The MCP authoring_guide tool returns the same content.

Workflow

sequenceDiagram

participant U as User participant AI as AI (Claude, etc.) participant M as Flow Learning System MCP participant F as Course folder U->>AI: "Make a lesson on cell organelles" AI->>M: authoring_guide AI->>M: course_init AI->>M: render_3d(cell scene script) M->>F: assets/cell.png + hotspot coordinates AI->>M: lesson_save(lesson JSON) M-->>AI: Validation results (missing hotspots, hard-to-read words …) AI->>M: speech_preview → pronunciation_add AI->>M: code_verify (subjects with code) AI->>M: audio_synthesize M->>F: audio/l01.mp3 + timing.json AI->>M: course_build M->>F: dist/index.html U->>F: Open with fls serve

What the checks catch:

  • Validation: unknown ops or widgets, hotspots that don't exist in the image, scenes that try to highlight lines not in the code, English words the TTS can't read
  • Code verification: actually compiles and runs each example and compares it character by character with the on-screen console output (C#: Mono or .NET SDK; Python)
  • Reading preview: 17개 → 열일곱 개 (native Korean counting), 19.6 → 십구 점 육 (Sino-Korean "nineteen point six"), 8분의 1 → 팔분의 일 ("one eighth"), {en|…} → English voice

Installation

git clone https://github.com/ghlee0786/flow-learning-system.git

cd flow-learning-system pip install -e ".[tts]"

RequirementUsed forWithout it
Python 3.10+Everything—
Supertonic ([tts])Korean and English speech synthesis. Downloads the model from Hugging Face on first runThe textbook runs without audio, using estimated timings
ffmpegSaving as mp3Saves as wav
Blender 3.6+render_3dOnly 3D illustrations are unavailable. If it is not on PATH, set FLS_BLENDER to the executable path
Mono or .NET SDKVerifying C# examplesOnly C# verification is skipped

Registering the MCP server

There is no need to keep the MCP server running. Register it once with your client, and the AI launches it on its own whenever it uses a tool (stdio).

Claude Code

claude mcp add flow-learning-system -- python -m flow_learning_system.server

Claude Desktop (claude_desktop_config.json)

{

"mcpServers": { "flow-learning-system": { "command": "python", "args": ["-m", "flow_learning_system.server"], "env": { "FLS_BLENDER": "C:\\Program Files\\Blender Foundation\\Blender 4.2\\blender.exe" } } } }

On Windows, if python points to a different environment, use the full path to python.exe in the virtual environment where you installed the package.

Tools (13)
ToolWhat it does
authoring_guideLesson format, widgets, motion rules, how to write sentences
course_init / course_statusCreate a new course / per-lesson scene count, issue count, and audio status
lesson_get / lesson_saveRead a lesson / validate and save it (not saved if there are errors)
lesson_validateValidation
render_3dBlender scene script → image + hotspot coordinates
assets_listThe course's images and their hotspot names and coordinates
speech_previewThe exact sentences the TTS will read for each scene
pronunciation_addRegister Hangul readings for English words
code_verifyCheck that example code output matches the on-screen console output
audio_synthesizeLesson audio and timing table (changed lessons only)
course_builddist/index.html + audio + images

Command line

fls validate examples/biology-cell              # validation

fls render examples/biology-cell --name cell --script scene.py # Blender render fls speech examples/english-passi

只显示了开头部分;其余内容请在仓库中阅读

问 PopNx