内容
# geogebra-mcp
一个模型上下文协议(MCP)服务器,允许Claude(桌面版、代码版、协作版)和Codex CLI驱动 [GeoGebra](https://www.geogebra.org) — 构建图形、进行计算机代数系统(CAS)运算、导出PNG/SVG/PDF文件,以及循环导入 `.ggb` 文件,您可以直接将其放入Canvas、GitHub Pages或任何支持HTML的Markdown文件中。
本项目于2026年全新打造,因为现有的社区服务器要么已经过时(`Stainless-Studio/gebrai`已经很久没有更新),要么来源存疑。本项目在无头Chromium浏览器中运行**官方GeoGebra应用程序API**,通过Playwright实现。它固定了GeoGebra版本,禁用了构造过程中的脚本,并以MIT许可证发布,所有源代码都可在`src/`目录下可见。
## 您将获得
五个组中共有39个MCP工具。
**构造.** `eval_command`(驱动完整的GeoGebra输入栏)、`set_value`、`set_coords`、`delete_object`、`set_visible`、`set_color`、`set_caption`、`rename_object`、`reset`、`set_app`、`set_coord_system`、`set_axes_visible`、`set_grid_visible`、`show_all_objects`。
**检查.** `get_value`、`get_value_string`、`get_definition`、`get_latex`、`get_object_type`、`object_exists`、`list_objects`、`get_coords`。
**CAS.** `cas_eval`(原始传递到`evalCommandCAS`),以及便捷包装器`solve`、`factor`、`simplify`、`derivative`、`integral`。
**导出.** `export_png`、`export_svg`、`export_pdf` — 每个都返回内联资产,也可以写入您指定的路径。
**状态 + 嵌入.** `save_ggb`、`load_ggb`、`get_xml`、`set_xml`、`make_embed_html`、`make_embed_markdown`、`make_materials_iframe`。嵌入助手包装当前构造(或您已经上传的材料ID),生成一个代码片段,您可以直接将其粘贴到网页、Markdown文件(允许原始HTML)或Canvas中 — 对于Canvas,还支持现有的GeoGebra LTI集成。
`geogebra_version`报告正在运行的GeoGebra版本。
## 安装
```bash
npm install -g @tiosavich/geogebra-mcp
# Playwright将在首次安装时下载Chromium
```
或者跳过安装,让您的MCP客户端通过`npx`运行它:
```jsonc
{ "command": "npx", "args": ["-y", "@tiosavich/geogebra-mcp"] }
```
系统要求:Node 18.17+,约150 MB用于Chromium,`geogebra.org` CDN的出站连接(或通过`GEOGEBRA_CODEBASE`自行托管代码库)。
## 将其连接到您的MCP客户端
### Claude 桌面版
编辑 `~/Library/Application Support/Claude/claude_desktop_config.json`(macOS)或 `%APPDATA%\Claude\claude_desktop_config.json`(Windows):
```json
{
"mcpServers": {
"geogebra": {
"command": "npx",
"args": ["-y", "@tiosavich/geogebra-mcp"]
}
}
}
```
### Claude 代码版
```bash
claude mcp add geogebra --scope user -- npx -y @tiosavich/geogebra-mcp
```
### Cowork(Claude 桌面版)
打开设置 → 连接器 → 自定义MCP,然后添加:
| 字段 | 值 |
|---------|------------------------------------|
| 名称 | geogebra |
| 命令 | `npx` |
| 参数 | `-y @tiosavich/geogebra-mcp` |
### Codex CLI
Codex也使用stdio MCP服务器。将其添加到 `~/.codex/config.toml`:
```toml
[mcp_servers.geogebra]
command = "npx"
args = ["-y", "@tiosavich/geogebra-mcp"]
```
然后 `codex` 将列出这些工具以及其内置工具。(如果您已全局安装,请将 `npx -y @tiosavich/geogebra-mcp` 替换为 `geogebra-mcp`。)
## 从LLM客户端快速开始
> “绘制 y = sin(x),然后导出PNG并保存 .ggb。”
该请求映射到:
1. 使用 `f(x) = sin(x)` 的 `eval_command`
2. 使用 `scale=2` 的 `export_png`
3. 使用 `output_path=lesson.ggb` 的 `save_ggb`
> “用顶点(0,0)、(4,0)、(0,3)构建一个三角形ABC,然后告诉我它的面积,并生成一个可嵌入的HTML片段,我可以将其粘贴到Canvas页面中。”
映射到四个 `eval_command`,`get_value` 在多边形上,以及 `make_embed_html`(或 `make_materials_iframe` 如果您已将 .ggb 上传到 geogebra.org — 为Canvas提供LTI友好路径)。
## 环境变量
| 名称 | 默认值 | 含义 |
|----------------------|-------------|---------------------------------------------------------------------------|
| `GEOGEBRA_APP` | `suite` | 初始应用程序:`suite`(默认 — 包含所有内容)、`graphing`、`geometry`、`3d`、`classic`、`cas`、`scientific`。CAS工具(`solve`、`factor`、`derivative`、`integral`、`cas_eval`)需要`suite`、`classic`、`cas`或`3d`。 |
| `GEOGEBRA_HEADLESS` | `true` | 设置为 `false` 以启动可见的Chromium窗口(调试) |
| `GEOGEBRA_CODEBASE` | 未设置 | 覆盖固定的GeoGebra HTML5代码库URL |
## 从源代码构建
```bash
git clone https://github.com/TioSavich/geogebra-mcp
cd geogebra-mcp
npm install
npm run build
node dist/index.js # 在stdio上提供服务
```
## 嵌入Canvas
GeoGebra发布了一个LTI 1.3集成,大多数Canvas安装(包括印第安纳大学的)都已可用。推荐的流程是:
1. `save_ggb { "output_path": "lesson.ggb" }`
2. 将 `lesson.ggb` 上传到 [geogebra.org/materials](https://www.geogebra.org/materials)(手动;大约需要30秒)。
3. 复制生成的材料ID(一个短的字母数字字符串,如 `MJWHp9en`)。
4. 在Canvas中,使用GeoGebra LTI外部工具,**或** 调用 `make_materials_iframe { "material_id": "MJWHp9en" }` 并将iframe粘贴到Canvas页面的HTML编辑器中。
如果您的Canvas实例没有LTI工具,`make_embed_html` 会生成一个自包含的块,拉取 `deployggb.js` 从GeoGebra CDN并内联 .ggb — 在任何支持HTML的RCE中都有效。
## 为什么存在 / 与gebrai有什么不同
- **来源.** 由Tio Savich构建;所有源代码在 `src/` 中可见;固定的依赖项;MIT许可证。
- **安全性.** `enableScripting` 和 `useBrowserForJS` 已关闭,因此加载来自不受信任源的.ggb文件无法执行JavaScript或Python。输入名称已验证。
- **API完整性.** 封装了用于构造、CAS、导出和状态的完整GeoGebra应用程序API — 包括SVG和PDF,大多数以前的服务器省略了这些。
- **嵌入助手.** 生成HTML/Markdown片段和材料iframe,以便输出可以直接在Canvas、GitHub Pages、MkDocs和Obsidian中使用。
- **多客户端.** 为Claude Desktop、Claude Code、Cowork和Codex CLI提供了文档化的配置。
在 `SECURITY.md` 中查看威胁模型。
## 许可证
MIT — 见 `LICENSE`。GeoGebra本身由国际GeoGebra研究所许可;见 https://www.geogebra.org/license。此服务器仅调用公共应用程序API。