geogebra-mcp について
geogebra-mcp は、AI クライアントから GeoGebra Calculator 上の平面図形を作成・編集する MCP サーバーです。状態やエラー、スクリーンショットを確認しながら反復し、図形の検証や依頼に応じた修正を行えます。
主な機能
- 01GeoGebra コマンドの実行と診断
- 02オブジェクト状態と依存関係の確認
- 03キャンバスやウィンドウの撮影
- 04オブジェクトを作らず式を評価
- 05スタイル編集、削除、取り消し
- 06スナップショット保存とファイル出力
活用シーン
- 01文章の指示から図形を作成
- 02図形の性質を確認して構成を修正
- 03既存の図形を依頼に応じて編集
- 04PNG または .ggb ファイルに出力
MCP 対応
stdio 経由で GeoGebra 操作用ツール、構成ルールとコマンド一覧のリソース、draw_geometry_problem プロンプトを MCP クライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y geogebra-mcpGGB_BROWSERBrowser channel: chrome or msedge (default: try chrome, msedge, then Playwright Chromium)GGB_HEADLESSSet to 1 to run without a visible windowGGB_PROFILE_DIRBrowser profile directory (default: ~/.geogebra-mcp/profile)GGB_URLPage to openローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
11掲載時のツール一覧 · 1 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| commands | array | はい | 実行するコマンドを、実行順に1項目ずつ指定します |
| stop_on_error | boolean | いいえ | 最初のコマンドが失敗した時点で停止します(後続のコマンドは通常これに依存します)。デフォルトは true です。 |
詳細
geogebra-mcp
AI(Claude Desktop、Claude Code、Cursor など)が GeoGebra® Calculator(https://www.geogebra.org/calculator)上で平面図形を直接描画・編集できる MCP サーバーです。
GeoGebra AutoDraw AI 拡張機能のコピー&ペースト方式とは異なり、ここでの AI は一連の処理を繰り返します。コマンドを実行し、エラーと図形の状態を読み取り、性質を検証し、スクリーンショットを確認して、自ら図形を修正します。また、リクエストに応じて図形を編集することもできます(「H は A から下ろした垂線の足にしてください」)。

GeoGebra® を使用して作成 — https://www.geogebra.org
非公式プロジェクトであり、GeoGebra GmbH との提携や同社からの承認を受けていません。ライセンスと GeoGebra をご覧ください。
仕組み
AI client ──MCP (stdio)──► geogebra-mcp ──Playwright──► Chrome window: geogebra.org/calculator
└─ window.ggbApplet (GeoGebra JS API)
- 最初のツール呼び出し時に、サーバーは GeoGebra Calculator を開いた Chrome(または Edge)ウィンドウを起動します。ユーザーは図形が描画される様子を見ながら、手動でドラッグや編集を行えます。
- ツールは
page.evaluateを通じてページ内の GeoGebra JS API(ggbApplet)を呼び出します。クリック操作のシミュレーションは行いません。 - コマンドは
asyncEvalCommandGetLabelsを通じて実行されます。この関数は GeoGebra モジュールを遅延読み込みするため、証明・スクリプト用コマンド(AreCollinear、Incircle、TriangleCenter、ClosestPoint(line, point)など)も使用できます。 - GeoGebra はコマンドの失敗を
nullとしてしか報告しないため、サーバーは独自の診断情報(不明な名前、不明なコマンド、括弧の不整合、既知の注意点)と警告(未定義の結果、予約済みの名前、インデックスを指定していない2点間の交点)を追加します。 - ウィンドウを閉じるか再読み込みした場合、次のツール呼び出し時にウィンドウが再び開き、最後に確認された図形が復元されます。
ggbApplet.undo()では API コマンドを元に戻せないため、元に戻す操作はサーバーが管理します(XML 履歴)。
ツール
| ツール | 目的 |
|---|---|
ggb_run_commands | コマンドを順番に実行します。コマンドごとの結果、作成・削除されたオブジェクト、警告、失敗のヒントを返します。既存の名前への代入は、その名前の再定義になります。 |
ggb_get_state | 型、定義、値、座標、表示状態、dependsOn / usedBy を含むオブジェクトを取得します。 |
ggb_screenshot | 描画領域(またはウィンドウ全体)の PNG を取得し、視覚的に確認します。 |
ggb_evaluate | オブジェクトを追加せずに式を評価します(Angle(B, A, C)、AreCollinear(A, H, O) など)。 |
ggb_set_style | 色、表示状態、ラベル、キャプション、太さ、線種、点のサイズ、塗りつぶし、固定を設定します。 |
ggb_delete | オブジェクト(および依存するオブジェクト)を削除します。 |
ggb_clear | 新しい図形を作成します。 |
ggb_undo | サーバーを通じて行った変更を元に戻します。 |
ggb_snapshot | 名前付きバージョンを保存・復元・一覧表示します。 |
ggb_fit_view | 表示中のすべての点と円が画面に収まるように調整し(縦横比 1:1)、軸とグリッドを切り替えます。 |
ggb_export | .ggb または .png として保存します。 |
その他:リソース geogebra://rules(作図ルール)、リソース geogebra://commands(コマンドカタログ)、プロンプト draw_geometry_problem。
セットアップ
要件:Node.js ≥ 20、および Google Chrome または Microsoft Edge(どちらもない場合は npx playwright install chromium を実行してください)。
Claude Code(プラグイン)
claude plugin marketplace add haison8x/geogebra-mcp
claude plugin install geogebra-mcp@geogebra-tools
その後、/mcp に plugin:geogebra-mcp:geogebra として表示されます。後で更新するには、claude plugin update geogebra-mcp@geogebra-tools を実行してください。
Claude Code(プラグインを使用しない場合)
claude mcp add geogebra -- npx -y geogebra-mcp
Claude Desktop、Cursor、その他の MCP クライアント
claude_desktop_config.json(設定 → 開発者 → 設定を編集)またはクライアントの MCP 設定を編集します。
{
"mcpServers": {
"geogebra": {
"command": "npx",
"args": ["-y", "geogebra-mcp"]
}
}
}
その後、クライアントを再起動し、たとえば次のように依頼してください: 「三角形 ABC を円(O)に内接させ、AH を高さ、M を BC の中点にしてください。」
ソースから実行
git clone https://github.com/haison8x/geogebra-mcp.git
cd geogebra-mcp
npm install
npm run build
claude mcp add geogebra -- node /path/to/geogebra-mcp/dist/index.js
設定(環境変数)
| 変数 | デフォルト | 意味 |
|---|---|---|
GGB_BROWSER | try chrome, msedge, then Playwright Chromium | ブラウザーチャネル |
GGB_HEADLESS | 0 | ウィンドウなしで実行する場合は 1(テスト用) |
GGB_PROFILE_DIR | ~/.geogebra-mcp/profile | ブラウザープロファイル(GeoGebra のログイン状態を保持します)。1 つのプロファイルにつきサーバーインスタンスは 1 つです。 |
GGB_URL | https://www.geogebra.org/calculator | 開くページ |
開発
リリース手順:package.json、.claude-plugin/plugin.json、.claude-plugin/marketplace.json、server.json(2 つの version フィールドの両方)、および .mcp.json 内の固定バージョンを更新します。その後、プッシュして npm publish、mcp-publisher publish を実行し、GitHub リリースを作成します。
npm run build
npm run smoke # end-to-end test through a real MCP client (headless)
npm run smoke -- --headed # same, with a visible window
注意事項
- スナップショットと元に戻す履歴は、サーバーの実行中はメモリ内に保持されます。
ライセンスと GeoGebra
- このリポジトリのコードは MIT ライセンスです(LICENSE)。このライセンスは GeoGebra には適用されません。
- GeoGebra® は GeoGebra GmbH の登録商標です。このプロジェクトは独立したもので、GeoGebra ソフトウェアは含まれていません。geogebra.org 上でお使いのブラウザーを操作するため、GeoGebra の利用には GeoGebra ライセンスが適用されます。
- GeoGebra は非商用利用であれば無料です。商用利用(有料の教材、トレーニング、サービスなど)には GeoGebra のライセンスが必要です([email protected])。
- このツールで作成した図形、画像、
.ggbファイルを共有する場合は、「Made with GeoGebra®」という帰属表示を https://www.geogebra.org へのリンクとともに残してください。
詳細は NOTICE をご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。