
Flow Learning System
io.github.ghlee0786Published by GitHub account ghlee0786v0.1.0Updated Oct 24, 2026
Build motion-graphics lessons with sentence-synced TTS for any subject: one sentence, one scene.
Overview
An MCP server for building motion-graphics lessons with sentence-synced narration, letting an assistant author, validate and build HTML courses.
- What you can do
- Get the lesson authoring guide, create a course, read, validate and save lessons, and check course status. Render 3D illustrations from Blender scene scripts with hotspot coordinates, and list course assets and their hotspots. Preview the sentences the TTS will read, register Hangul readings for English words, and synthesize lesson audio with a timing table. Run example code and compare its output with the on-screen console, then build the single-file HTML textbook.
- When to use it
- Use it to turn a subject into a narrated motion-graphics course, with the assistant writing the lesson JSON, validating it, generating speech and building a single-file HTML textbook. Suited to math, science, language, biology and programming lessons that need animated graphs, equations or code.
- Requirements
- Runs locally with Python 3.10 or newer, installed via pip. Speech synthesis needs Supertonic, which downloads its model from Hugging Face on first run; saving mp3 needs ffmpeg. 3D illustrations need Blender 3.6 or newer, located via FLS_BLENDER if not on PATH; C# verification needs Mono or the .NET SDK.
Installation
In SourceWeft
- Open Flow Learning System in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
Flow Learning System
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.
[Programming: C# arrays]
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
[Syncing narration and scenes]
- Each
sayin 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
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.
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
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.
Anatomy of a lesson
[Mapping JSON ops to the screen]
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 (in Korean). The MCP authoring_guide tool returns the same content.
Workflow
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
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 Desktop (claude_desktop_config.json)
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)
Command line
A built textbook consists only of index.html plus the audio/ and assets/ folders, so it works without a server. It can be uploaded as-is to static hosting such as GitHub Pages.
Audio files are not included in the repository. Generate them with fls audio <course>.
Folder structure
License
MIT. The Supertonic Python package used for speech synthesis is MIT-licensed and its model is under the OpenRAIL license; neither is included in this repository (the model is downloaded on first run).
Source: README.md at commit 5b7488d
Tools
0Version history
1- v0.1.0LatestOct 24, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts