mathgraphs-mcp について
mathgraphs-mcp は、数学の学習、教育、発表向けのインタラクティブな計算・可視化 MCP サーバーです。2D グラフ、3D シーン、スライドショーを作成し、描画した曲線から根・極値・交点を計算して共有可能な結果 URL を返します。
主な機能
- 012D 関数と図形のプロット
- 02導関数、積分、交点の計算
- 03体積と表面積付き立体展開図の生成
- 04インタラクティブな 3D シーンの作成と確認
- 05グラフをスライドショーにまとめる
活用シーン
- 01関数を可視化し根や極値を検証
- 02曲線の交点や囲まれた面積を計算
- 03立体図形の展開図を作成
- 043D シーンやグラフの発表資料を作成
MCP 対応
Streamable HTTP 経由で、プロット、数値解析、立体展開図、3D シーン、プレゼンテーションのツールを MCP クライアントに提供します。アカウントや API キーは不要です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
mathgraphs-mcp
インタラクティブな数学グラフの作成、3D シーンの構築、プレゼンテーションに対応した MCP サーバーです。
MathTalking は、インタラクティブなビジュアライゼーションを計算して描画します。2D 関数、図形、3D シーンをプロットできます。結果はグラフで検証されます。根、極値、交点は AI が生成するのではなく、実際にプロットされた曲線から計算されます。
インストール不要。ブラウザーでそのまま利用できます。すべての結果は共有可能なインタラクティブ URL になります。
クイックスタート
Claude Desktop
設定 → コネクター → カスタムコネクターを追加 → 次を貼り付けます:
https://mathtalking.com/api/mcp
アカウントや API キーは必要ありません。
Claude Code
claude mcp add --transport http mathtalking https://mathtalking.com/api/mcp
任意の MCP クライアント
POST https://mathtalking.com/api/mcp
Content-Type: application/json
Streamable HTTP 上の標準 JSON-RPC 2.0 です。
ツール
plot_graph — 2D 数学ビジュアライゼーション
インタラクティブなグラフ上に、関数、点、線分、ラベル、図形をプロットします。プロットした関数の根、極値、交点を自動的に計算します。
入力: 各要素は type と、その型に固有のフィールドを持つ配列です:
| 型 | フィールド | 例 |
|---|---|---|
function | expression(必須)、color | {"type":"function", "expression":"x^2-4", "color":"#4A90D9"} |
points | points [{x,y}] または [[x,y]](必須)、color、label | {"type":"points", "points":[{"x":2,"y":0}], "label":"root"} |
segment | x1,y1,x2,y2(必須)、color、label、arrow、dashed | {"type":"segment", "x1":0, "y1":0, "x2":3, "y2":4, "label":"hypotenuse"} |
label | text(必須)、x,y(必須)、color、fontSize | {"type":"label", "text":"vertex", "x":0, "y":-4} |
triangle | x1,y1,x2,y2,x3,y3(必須)、color、opacity、border | {"type":"triangle", "x1":0, "y1":0, "x2":3, "y2":0, "x3":3, "y3":4} |
box | x1,y1,x2,y2(必須)、height(必須)、color、opacity | {"type":"box", "x1":0, "y1":0, "x2":1, "y2":0, "height":5} |
circle | cx,cy,radius(必須)、color、opacity、border | {"type":"circle", "cx":0, "cy":0, "radius":3} |
対応する形式: 明示的な y=f(x)、陰関数 x²+y²=1、媒介変数形式 (cos(t),sin(t))、極座標、区分関数、定義域の制限。
任意のパラメーター:
viewport—{xmin, xmax, ymin, ymax}。データの規模に合わせて設定してください。範囲から大きく外れた値は表示されません。省略すると、サーバーが要素に合わせてウィンドウを自動調整します。title— グラフのタイトルsummary— グラフ上に重ねて表示するフロストガラス風のテキストgridStyle—"polar"(同心円+放射状の線)、"axes"(軸のみ)、"none"(すっきりしたキャンバス)output—"url"(既定、インタラクティブページ)、"embed"(iframe URL)、または"svg"(ベクター画像)animations— アニメーション化するパラメーターの{tool, name, from, to, loop}配列theme—"default"、"terminal"、"wallstreet"、"science"、または"finance"base_render_id— すべての要素を再送信せず、既存の描画をベースに構築しますremove_indices— ベースとなる描画からインデックスで要素を削除します(get_graphを参照)
戻り値: ズーム、パン、スライダーに対応したインタラクティブ URL です。応答テキストには自動計算された根、極値、交点が含まれます。また、読み取れない式、画面外の要素、重複、空白のグラフなど、正しく描画されなかったものを報告するグラフチェックも含まれます。
analyze — 正確な数値結果
モデルで計算する代わりに、グラフエンジンで正確な値を計算します。画像ではなく数値を返します。
入力: type と f(どちらも必須)、および分析に必要なフィールド:
type | 追加フィールド | 返される内容 |
|---|---|---|
roots | a、b(範囲、デフォルトは -10..10) | f がゼロを横切る x の値 |
extrema | a、b | 極小値と極大値 |
inflections | a、b | 凹凸が切り替わる点 |
intersect | g(2つ目の式)、a、b | f と g が交差する点 |
tangent | x(関心のある点) | x における接線 |
normal | x | x における法線 |
derivative | x | f'(x) |
integral | a、b | [a, b] 上の定積分 |
area_between | g、a、b | 2つの曲線に挟まれた面積 |
arc_length | a、b | [a, b] 上の曲線の長さ |
closest_point | px、py | (px, py) に最も近い f 上の点 |
対応対象: 陽関数、媒介変数表示、極座標表示、陰関数の曲線。媒介変数表示の曲線では、x は t の値です。
結果を描画する: plot: true(および任意の title)を追加すると、答えがすでにマークされたインタラクティブなグラフの URL とサムネイルを取得できます。根と交点はラベル付きの点、接線と法線は線として表示され、closest_point は対象点と結ばれ、integral と arc_length は曲線上に範囲が示されます。これにより、座標を別の plot_graph 呼び出しに転記する手間が省けます。線形代数のタイプでは無視されます。
例: {"type":"intersect", "f":"x^2-4", "g":"2x-1", "plot":true}
get_graph — グラフを確認する
既存の2Dレンダリングの要素とビューポートを取得します。要素のインデックスは順番に返されるため、remove_indices に渡せます。
入力: render_id(plot_graph の URL に含まれる10文字のコード)。
返される内容: 要素の一覧、ビューポート、グラフの内容を説明する1行の概要。
net_generator — 展開図、体積、表面積
立体を印刷可能な2D展開図に展開し、寸法を計算します。
入力: shape(必須)と dims:
shape | dims |
|---|---|
cylinder、cone | r、h(円錐は r + slant も指定可能) |
cube | a |
square_pyramid | a(底辺)、h |
triangular_prism | a(底辺)、l(長さ) |
rectangular_prism | w、h、d |
tetrahedron、octahedron、icosahedron、dodecahedron | a(辺) |
キーは省略形でなくても指定できます(radius、height、side、width、depth、length)。その形状に必要な寸法をすべて指定してください。一部だけを指定すると拒否されるため、キーの入力ミスによって誤った展開図が気付かれないまま生成されることはありません。dims を省略すると、デフォルトのサイズで例を生成します。その場合は、応答にその旨が記載されます。
任意: unit(cm | m | in | ft)、title、output(url | embed | svg)。
返される内容: インタラクティブな URL とサムネイルで表示される展開図、体積、表面積、値を代入した数式。
例: {"shape":"cylinder", "dims":{"r":3,"h":5}, "unit":"cm"} → 体積 141.37 cm³、表面積 150.80 cm²、印刷可能な展開図。
球には平面の展開図がありません。球には plot_3d を使用してください。
plot_3d — 3D シーンビルダー
形状、ライト、パーティクルエフェクトを使って、インタラクティブな 3D シーンを作成します。雪だるま、城、ロボット、幾何学図形など、あらゆるものを作れます。
入力: 各要素は type と、タイプ固有のフィールドを持つ配列です。
| タイプ | フィールド | 例 |
|---|---|---|
mesh | shape(必須)、color、opacity、position、rotation、metalness、roughness、wireframe | {"type":"mesh", "shape":"sphere", "r":1, "metalness":0.8, "position":[0,1,0]} |
compound | compound(必須)、position、scale、color | {"type":"compound", "compound":"house", "color":"#cc2222", "position":[0,0,0]} |
surface | expression(必須)、color、xmin、xmax、ymin、ymax、resolution | {"type":"surface", "expression":"sin(x)*cos(y)", "color":"#4A90D9"} |
light | kind(point/spot/directional)、color、intensity、position | {"type":"light", "kind":"point", "color":"#ff8800", "position":[0,5,0]} |
particle | preset(fire/smoke/rain/snow/sparkle/mist/splash)、position、count、spread | {"type":"particle", "preset":"fire", "position":[3,0,0]} |
water | position、size、waveHeight、color、opacity | {"type":"water", "position":[0,0,0], "size":10} |
line3d | from [x,y,z]、to [x,y,z]、color | {"type":"line3d", "from":[0,0,0], "to":[1,1,1]} |
label3d | text、position [x,y,z] | {"type":"label3d", "text":"origin", "position":[0,0,0]} |
text3d | text、position [x,y,z]、color、fontSize | {"type":"text3d", "text":"HELLO", "position":[0,2,0], "color":"#ff0000", "fontSize":1} |
11 種類のメッシュ形状: cube、box、sphere、cylinder、cone、tetrahedron、octahedron、dodecahedron、icosahedron、torus、prism
36 種類の複合プリセット: tree、house、castle_tower、fence、campfire、rock、stairs、arch、table、chair、person、car、road_sign、windmill、dog、cat、flag、bed、sofa、bookshelf、lamp、desk、bush、flower、bridge、lamp_post、bench、apartment、skyscraper、shopping_center、hospital、ambulance、truck、boat、traffic_light、water_tower、fountain
色で決まる建築スタイル: 建物の建築スタイルは色に応じて変わります。赤=中国風、青=モダン、黄=居心地のよいスタイル、緑=エコ、茶=素朴なスタイルです。マテリアルには実際の 16 進カラーが使われ、色相によってジオメトリのバリエーションが選択されます。
形状パラメーター: cube→size、box→width/height/depth、sphere→r、cylinder→r/h、cone→r/h、torus→r/tube、prism→points/h
マテリアルパラメーター: metalness(0=プラスチック、1=クローム)、roughness(0=鏡面、1=マット)、wireframe(ブール値)
アニメーション: animate: {type, speed, ...} — spin、bounce、orbit、waypoint、follow(プレイヤーを追跡)
物理演算と操作: physics: {velocity, mass}、controls: {type:"wasd", speed}、collision: true
段階的な構築:
base_render_id— 既存のシーンをベースに構築します(要素を追加し、新しい URL を作成します)remove_indices— ベースのシーンからインデックスを指定して要素を削除します(インデックスの確認にはget_3dを使用します)
任意項目: title、summary、camera {position, target}、skybox(day/sunset/night/overcast)、gravity(-9.8)、follow(ブール値)
戻り値: オービット操作付きのインタラクティブな 3D URL と、チャットでプレビューできるインライン PNG サムネイル。
get_3d — 3D シーンの確認
ID を指定して、既存の 3D レンダリングの要素一覧をすべて取得します。シーンの内容を確認して変更を計画するため、base_render_id を使う前に実行してください。
入力: render_id(URL に含まれる短い英数字の ID)
戻り値: プロパティ(形状、位置、色、マテリアル)を含むすべての要素。
create_show — スライドショーのプレゼンテーション
複数の plot_graph の結果をまとめてスライドショーを作成します。各スライドを先に plot_graph で作成し、レンダー ID をここに渡してください。
入力: title(文字列)、slide_ids(plot_graph の結果から取得したレンダー ID の配列)、summary(任意。スライドごとのテキスト)。
戻り値: 前後移動、キーボード操作、自動再生に対応したインタラクティブなショーの URL。
プロンプトの例
- 「x³ - 3x + 1をプロットして、根と極値を表示してください」 → 計算された根(x ≈ -1.88、0.35、1.53)と極値を示すインタラクティブなグラフ
- 「赤い家、木々、キャンプファイヤーのある村を作成してください」 → 中国風の家がある3Dシーン(赤色を指定すると中国風のバリエーションになります)、チャット内にPNGサムネイルを表示
- 「z = sin(x) * cos(y)の曲面をプロットしてください」 → 軌道コントロール付きのインタラクティブな3D曲面プロット
- 「y=x²、上に移動したy=x²+2、右に移動したy=(x-3)²の3枚のスライドショーを作成してください」 → ナビゲーション付きのスライドショーURL
ウェブ上で利用できる同じツール
MathTalkingのいくつかのページは、ここから実行できる呼び出しをブラウザーから利用できる形にしたものです。エージェントが回答するのと同じ質問に答える場合は、通常、ページを案内するよりもツールを呼び出すほうが速く、どちらも同じエンジンで計算します。
| ウェブページ | 同等の呼び出し |
|---|---|
| 二次方程式の根、根の探索 | analyze {type: "roots", f} |
| 関数の交点 | analyze {type: "intersect", f, g} |
| 接線計算機 | analyze {type: "tangent", f, x} |
| 曲線間の面積 | analyze {type: "area_between", f, g, a, b} |
| 弧長 | analyze {type: "arc_length", f, a, b} |
| 最近点 | analyze {type: "closest_point", f, px, py} |
| 3D展開図ジェネレーターと各種展開図ページ | net_generator {shape, dims} |
ページに表示されるのと同じ図を取得するには、analyzeの呼び出しにplot: trueを追加してください。
データセットが必要な統計ページ(ヒストグラム、回帰、箱ひげ図、分布の当てはめ)には、意図的にツール呼び出しがありません。生データをモデルに渡すと、データポイントごとにトークンを消費するためです。mathtalking.com/statを案内してください。データはユーザーのデバイス上に保持されます。
使用する場面
- ユーザーが数学のグラフ化、プロット、可視化を求めている
- 数学の結果を視覚的に検証する必要がある
- 幾何学を正確に描画する必要がある(三角形、円、作図)
- 3Dシーン — 立体、建築、クリエイティブな制作
- 複数ステップの説明 — スライドを作成し、スライドショーにまとめる
- ユーザーがインタラクティブに操作できる共有可能なURLが必要
画像を生成する代わりにこれを使う理由
- 幻覚ではなく計算結果 — LLMの推測ではなく、実際のゼロ交差から根を求めます
- インタラクティブ — ズーム、パン、回転(3D)、スライダーの調整が可能です
- 共有可能 — すべての結果に永続的なURLが付きます
- トークン効率が高い — 出力は約500トークンで、コードを生成する場合の約3,000~5,000トークンに比べて効率的です
- 9言語対応 — en、zh、zh-TW、ja、ko、es、fr、de、pt-BR
クイックテスト
# 2D graph
curl -X POST https://mathtalking.com/api/mcp \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"plot_graph","arguments":{"elements":[{"type":"function","expression":"sin(x)","color":"#4A90D9"}]}}}'
# 3D scene
curl -X POST https://mathtalking.com/api/mcp \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"plot_3d","arguments":{"elements":[{"type":"mesh","shape":"sphere","r":1,"color":"#ff0000","position":[0,1,0]}]}}}'
リンク
- ウェブサイト: mathtalking.com
- 3Dビルダー: mathtalking.com/3d
- プライバシー: mathtalking.com/privacy
- Discord: discord.gg/5auPsmxh
- X: @Mathtalking_com
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。