Flow Learning System
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| FLS_BLENDER | No | Path to the Blender executable. Only needed if Blender is not on PATH; used by the render_3d tool. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| authoring_guideA | 레슨 JSON 형식(op, 장면 옵션, 위젯), 모션 규칙, TTS 문장 쓰는 법을 담은 가이드. 레슨을 쓰기 전에 읽으세요. |
| course_initC | 새 코스 폴더를 만듭니다. code_lang: csharp | python, voice: F1 |
| course_statusC | 코스의 레슨 목록, 장면 수, 형식 문제 수, 음성 상태를 보여 줍니다. |
| lesson_getC | 레슨 JSON 하나를 그대로 돌려줍니다(고쳐 쓸 때). |
| lesson_saveB | 레슨 JSON을 검사하고, 오류가 없으면 lessons/NN.json으로 저장합니다(같은 id면 덮어씀). lesson = {"id": 1, "group": "...", "title": "...", "sub": "...", "ops": [...]} |
| lesson_validateB | 레슨 형식을 검사합니다(없는 코드 줄, 모르는 op·위젯, 읽기 어려운 단어 등). lesson_id를 비우면 전체. |
| speech_previewC | 장면마다 TTS가 실제로 읽을 문장을 보여 주고, 영어 단어처럼 읽기 어려운 조각을 표시합니다. |
| pronunciation_addC | 영어 단어의 한글 읽기를 코스에 등록합니다. 예: word="Dictionary", reading="딕셔너리". |
| code_verifyC | 코드 블록을 실제로 컴파일·실행해 화면 콘솔 출력(out/write)과 같은지 확인합니다. C#은 mono 또는 dotnet, Python은 python. |
| audio_synthesizeA | Supertonic TTS로 레슨 음성(audio/lNN.mp3)과 문장별 시각표(timing.json)를 만듭니다. 바뀌지 않은 레슨은 건너뜁니다. 레슨이 많으면 lesson_id를 하나씩 주어 나눠 실행하세요. |
| render_3dA | Blender로 3D 장면을 렌더해 assets/.png 와 핫스폿 좌표를 만듭니다. script: bpy 파이썬 코드(장면만 만들면 됨). spot("이름", (x, y, z))로 찍은 3D 위치가 이미지의 어디인지 계산되어, 레슨에서 {"img": ["assets/.png", {"spots": ["이름"], "arrows": [{"from": "a", "to": "b"}]}]}로 가리킬 수 있습니다. 도우미: mat(이름, (r,g,b), rough, metal, emit, sss), paint(obj, mat), spot, camera(위치, 대상, lens), sun, area, world, look_at, cylinder_between. Blender가 PATH에 없으면 FLS_BLENDER 환경 변수에 실행 파일 경로를 넣으세요. |
| assets_listB | 코스의 이미지와 각 이미지의 핫스폿 이름·좌표(0~1)를 보여 줍니다. |
| course_buildC | 한 파일짜리 HTML 플레이어(dist/index.html)와 음성 파일을 만듭니다. 음성이 없는 레슨은 소리 없이 예상 시간으로 진행합니다. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| guide_resource | 레슨 작성 가이드 |
TDQS
Scored across 13 tools
Each tool maps to a distinct stage of the authoring pipeline (init → guide → lesson_get/save/validate → speech_preview/audio_synthesize → render_3d → course_build), so selection is mostly unambiguous. Minor overlap exists between lesson_validate and lesson_save (which also validates), and between speech_preview and audio_synthesize (both deal with TTS text/audio).
The dominant convention is noun_verb (lesson_get, lesson_save, lesson_validate, course_init, course_build, course_status, assets_list, speech_preview, pronunciation_add, code_verify, audio_synthesize), which is predictable. Deviations are small: render_3d is verb-first and authoring_guide has no verb at all.
13 tools is well within the ideal range and each covers a discrete authoring concern (course scaffolding, lesson CRUD/validation, speech, 3D assets, build, status, docs). No obvious filler tools or redundant wrappers.
The lesson and course lifecycle is well covered: init, get, save, validate, status, build, plus speech and asset generation. Gaps are minor but real — there is no lesson delete/list-by-id beyond course_status, no way to remove or inspect registered pronunciations, and no asset deletion tool.