Chalkcast について
Chalkcastは、自然言語の説明からManimの数学アニメーションを作成、レンダリング、検証するMCPサーバーです。測定結果と判定を返し、エージェントがエクスポート前に修正できるループを提供します。
主な機能
- 01シーン、数式、プロット、図形を作成
- 02アニメーションと個別フレームをレンダリング
- 03配置、可読性、タイミング、忠実度を測定
- 04シーンの機械的な問題を自動修復
- 05問題が残る間はGIFエクスポートを禁止
活用シーン
- 01説明文から数学解説アニメーションを作成
- 02レンダリングした数式やプロットを検証
- 03重なりや画面外の要素を修正
- 04検証済みアニメーションをGIFで出力
MCP 対応
Chalkcastは、プロジェクト管理、作成、編集、検証、レンダリング、エクスポートのツールをMCPクライアントに公開します。レンダリング検査では、サンプルフレームの根拠と構造化された判定を返します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
21掲載時のツール一覧 · 4 日前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| fps | any | いいえ | |
| theme | string | いいえ | |
| quality | string | いいえ |
詳細
Chalkcast
コンセプトを説明するだけで、検証済みのアニメーション解説を作成できます。
Chalkcast は、エージェントが Manim アニメーションを作成、レンダリング、視覚的に検証できるMCP サーバーです。画面上で実際に正しく表示される動画を出力でき、もっともらしいもののレンダリングすると間違っているスクリプトを作ることはありません。

MCP サーバーだけを通じて作成、検証、レンダリングした一連のアニメーションです(初回のレンダリングで合格)。フーリエ級数の項が一つずつ増えて方形波になり、ギブスのオーバーシュート(正しい値である約 1.179)が端に現れます。python examples/showcase.pyで再現できます。
対象ユーザー
- 教育者と学生 — Manim を学んだり、LaTeX を手作業で書いたりすることなく、「フーリエ級数を説明して」を、見やすいアニメーション解説にできます。
- STEM コンテンツ制作者 — コーディングやレンダリングのデバッグに何時間もかける代わりに、3Blue1Brown 風のアニメーションを数分で作成できます。
- エージェントとツール — AI が最初から最後まで操作できる、型付きで検証可能な MCP インターフェースです。確認できない動画ではなく、対処可能な判定結果を得られます。
なぜ別の Manim MCP が必要なのですか?
既存の Manim MCP サーバーがエージェントに提供するツールは一つだけです。このコードを実行して、動画を返すというものです。エージェントは何も確認できないまま Manim を記述し、うまくいくことを願います。しかし Manim は容赦がありません(LaTeX の誤字、画面外のラベル、重なり合う項、対象が存在する前に実行されるトランジションなど)。動画の「レンダリング」は完了しても、間違ったままです。そして、エージェントにはそれを知る方法がありません。
Chalkcast はエージェントに視覚的な確認手段と修正ループを提供します。
author scene ──► render ──► inspect (verification lanes) ──► verdict
▲ │
└──────────────── fix obligations ◄──── needs_fix ─────────┘
レンダリングごとに、エビデンス(成果物とサンプリングしたフレーム)と、構造化された判定結果が返されます。問題は、解決するまでエクスポートをブロックする対応必須事項になります。設計の全容はdocs/SPEC.mdを参照してください。
インストール
ワンコマンド(Claude Code。 uv が必要です):
claude mcp add chalkcast -- uvx --python 3.12 --from "chalkcast[render]" chalkcast serve
--python 3.12が重要です。Chalkcast には Python ≥ 3.11 が必要で、システムの Python が古い場合は uv がダウンロードします(macOS には 3.9 が付属しています)。あとは自然言語で依頼するだけです。
または、Python ≥ 3.11 の任意の環境に pip でインストールできます。
pip install "chalkcast[render]"
claude mcp add chalkcast -- chalkcast serve
[render]を指定すると Manim と同梱の ffmpeg がインストールされます。数式にはLaTeXディストリビューションも必要です。chalkcast doctorを実行すると、すべてを確認し、お使いの OS に合わせた正確な修正コマンドが表示されます。
chalkcast doctor # Manim / LaTeX / dvisvgm / physics.sty / ffmpeg
chalkcast demo # builds + verifies + renders the demo scene
macOS: Manim が依存する
pycairoには macOS 用のホイールがなく、ソースからビルドされるため、事前にbrew install cairo pkg-configが必要です。Manim のネイティブ依存関係を手動でビルドしたマシンでは、scripts/dev-env.shとscripts/serve.shを参照してください。
エージェントが使えるもの
| グループ | ツール |
|---|---|
| セッション | open_project · inspect_project · close_project |
| 作成 | add_scene · add_equation · add_plot · add_area · add_riemann · add_text · add_shape · add_parameter · add_step |
| 編集 | update_object · remove_object(連鎖削除)· remove_step |
| 検証 | inspect_render(動画なしで計測)· fix_scene(自動修復) |
| レンダリング | render_scene · render_frame |
| エクスポート | export_gif(エラーに関する未解決の対応事項がある間はブロック) |
| 検出 | inspect_environment |
- 連続アニメーション:
add_parameter("t")を追加し、プロット式または図形のアンカー(at_x="t")でtを使用してから、add_step("tween", param="t", value=6.28)を追加します。曲線、領域、アンカー付きの点はフレームごとに追従します。with_previous=Trueを指定すると、ステップが直前のステップと同時に再生されます。 - 素早くエラーを検出し、暗黙の動作は行わない: 式は作成時に検証されます(AST の許可リスト:x、数学関数、
np.<fn>、宣言済みパラメーター)。色、範囲、ステップの対象、タイムラインの順序、図形やステップに適用できない引数は、対処方法を示すメッセージとともに拒否されます。編集はすべて一括で反映されるか、すべて取り消されます。副作用(連鎖削除、ステップの再グループ化、パラメーターの再宣言、デフォルト範囲)は結果に報告されます。export_gifは、最新の編集より前のレンダリングを拒否します。17 回の独立監査(検出事項は順に 22、17、14、8、4、9、4、7、5、5、7、8、5、8、7、7、10 件。最後の 8 回では、現実的な解説アニメーションを最初から最後まで作成し、判定をフレームと照合しました。最後の監査では実際の MCP stdio プロトコルも使用しました)は、検出事項ごとに 1 つのテストとしてtests/test_ergonomics.pyに固定されています。 - 忠実なプロット: 高密度サンプリング、ジャンプや極での曲線の分割(架空の立ち上がりやオーバーシュートなし)、軸内へのクリッピングを行います。忠実度レーンでは、描画された曲線と真の関数を照合して計測します。積分を表示できない場合(関数が未定義または軸の範囲外、あるいは y = 0 が見えない場合)、領域やリーマン和は拒否されます。
検証の仕組み
inspect_render は、動画をエンコードせずに(1~3 秒で)実際の Manim オブジェクトを構築して、計測します。正確なバウンディングボックス、曲線と軸の描画量、各グラフの描画結果と真の値との差、厳密な LaTeX コンパイルを確認します(Manim のバッチモードは LaTeX エラーから黙って「回復」します)。レーンは、フレーミング・衝突・読みやすさ・タイミング・コンパイル・忠実度・範囲です。fix_scene は機械的な問題(移動、拡大縮小、再サンプリング)を修正し、それ以外はエージェントが対応すべき事項として残します。
ラベル付け済みのシーンで計測しました(chalkcast bench、chalkcast bench --holdout N)。各ホールドアウトセットは、検証器を一度も読んだことのない作成者が作成してラベル付けし(フレーム単位で確認済み)、各セットの初回実行が、正直なアウトオブサンプルの数値です:
| セット | ケース数 | 初回実行:検出率/誤検出率 | 実行で明らかになった不具合 |
|---|---|---|---|
| ホールドアウト 1 | 39(不具合あり 24) | 95.8 % / 7.7 % | 安全マージンが厳しすぎる。エイリアシングをジャンプと誤認 |
| ホールドアウト 2 | 47(不具合あり 31) | 90.3 % / 12.8 % | コンパイルエラー後にノイズを推定。直線の矢印とボックスの辺を端点だけでサンプリング。ボックスの高さで数式のサイズを判定 |
| ホールドアウト 3 | 44(不具合あり 26) | 96.2 % / 0 % | 矢印の軸部分が一度もサンプリングされず、先端だけが対象になっていた |
| ホールドアウト 4 | 46(不具合あり 25) | 96.0 % / 0 % | ズームイン中に表示されたラベルを、意図的なクロップとして誤って許容 |
各セットの不具合を修正した後は、すべてのセット(および 40 ケースの開発セット)で 100 % / 0 % を達成しました。それ以降、これらは独立した計測値ではなく、回帰テスト(tests/test_measured.py)として扱われています。ホールドアウト 3 はセット 1 と 2 の修正後に作成され、ホールドアウト 4(連続トゥイーン、同時進行するビート、変形、カメラ移動)は 11 回の使いやすさ監査後に作成されました。どちらも一度だけ実行し、手を加えていません。ホールドアウト 4 が現在のアウトオブサンプル推定値です。
例(エージェントの動作)
open_project(theme="chalkboard")
add_scene(title="Area under a parabola")
add_text("Area under y = x^2", y=3)
add_plot(functions=[{"expr":"x**2","color":"YELLOW"}], x_range=[0,2,1], y=-0.8)
add_equation(r"\int_0^1 x^2 \, dx = \tfrac{1}{3}", y=2)
add_step("write", targets=["text_1"])
add_step("write", targets=["plot_1"])
add_step("write", targets=["equation_1"])
add_step("highlight", targets=["equation_1"])
inspect_render() # -> measured verdict in ~2 s, no video
fix_scene() # -> repairs framing / collision / fidelity if needed
render_scene() # -> video + frames + verdict + obligations
export_gif() # -> shareable GIF (blocked if error obligations remain)
ステータス
アルファ版です。科学的な正確性は数値でテストされています(tests/test_science.py)。塗りつぶされた領域は積分値に、リーマン長方形はその合計に、描画された曲線は関数に一致し(sin 30x を含みます)、ギブス現象のピークは理論値に一致します。PyPI と MCP Registry(io.github.FredMichel/chalkcast)で公開されています。次はビジョンベースの intent 検証です(docs/SPEC.md を参照)。
ライセンス
MIT。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。