GGB Web MCP
A Model Context Protocol server that enables AI to interact with GeoGebra for mathematical visualization, offering over 25 tools for geometry, functions, algebra, and more.
README
GGB Web MCP
GeoGebra MCP 服务器 - 通过 Model Context Protocol 让 AI 与 GeoGebra 数学可视化软件交互。
功能特性
- MCP 协议支持 - 完整的 Model Context Protocol 实现,支持 stdio 和 HTTP/SSE 两种传输方式
- 实时 Web 可视化 - 内置 Web 服务器,通过浏览器实时查看数学构造
- 丰富的数学工具 - 25+ GeoGebra 工具,涵盖几何、函数、代数运算
- 教育模板 - 预置教育场景模板,快速创建课堂演示
- 多实例协调 - 智能锁文件机制,多个 MCP 实例共享同一 Web 服务器
快速开始
1. 安装依赖
git clone git@github.com:kms9/ggb-web-mcp.git
cd ggb-web-mcp
npm install
2. 构建项目
npm run build
3. 启动服务
npm start
服务启动后:
- MCP 服务器: 通过 stdin/stdout 与 AI 客户端通信
- Web 可视化: 访问 http://localhost:3000 查看实时数学构造
配置 AI 客户端
Claude Desktop
编辑 ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"geogebra": {
"command": "node",
"args": ["/path/to/ggb-web-mcp/dist/cli.js"]
}
}
}
Cursor IDE
在 Cursor 设置中添加 MCP 服务器配置:
{
"mcp": {
"servers": {
"geogebra": {
"command": "node",
"args": ["/path/to/ggb-web-mcp/dist/cli.js"]
}
}
}
}
CLI 命令
# 启动 MCP 服务器
npm start
# 开发模式(热重载)
npm run dev
# 查看帮助
node dist/cli.js --help
# 设置日志级别
node dist/cli.js --log-level debug
# 指定端口
node dist/cli.js --port 3001
命令行参数
| 参数 | 说明 | 默认值 |
|---|---|---|
-h, --help |
显示帮助信息 | - |
-v, --version |
显示版本号 | - |
--log-level |
日志级别 (error, warn, info, debug) | info |
--port |
Web 服务器端口 | 3000 |
HTTP API 端点
Web 服务器提供以下 HTTP API:
MCP 端点
| 端点 | 方法 | 说明 |
|---|---|---|
/mcp/sse |
GET | SSE 连接,接收服务器推送消息 |
/mcp/message |
POST | 发送 JSON-RPC 请求 |
/mcp/tools |
GET | 获取可用工具列表 |
/mcp/tools/:name |
POST | 执行指定工具 |
/mcp/info |
GET | 获取服务器信息 |
GeoGebra API
| 端点 | 方法 | 说明 |
|---|---|---|
/api/geogebra/state |
GET | 获取当前构造状态 |
/api/geogebra/clear |
POST | 清空当前构造 |
/api/geogebra/command |
POST | 执行 GeoGebra 命令 |
示例请求
# 获取工具列表
curl http://localhost:3000/mcp/tools
# 创建一个点
curl -X POST http://localhost:3000/mcp/tools/geogebra_create_point \
-H "Content-Type: application/json" \
-d '{"name": "A", "x": 1, "y": 2}'
# 执行 GeoGebra 命令
curl -X POST http://localhost:3000/api/geogebra/command \
-H "Content-Type: application/json" \
-d '{"command": "Circle(A, 3)"}'
可用工具
基础工具
| 工具名 | 说明 |
|---|---|
geogebra_eval_command |
执行任意 GeoGebra 命令 |
geogebra_get_objects |
获取所有对象信息 |
geogebra_clear_construction |
清空当前构造 |
geogebra_export_png |
导出 PNG 图片 |
geogebra_export_svg |
导出 SVG 图片 |
几何工具
| 工具名 | 说明 |
|---|---|
geogebra_create_point |
创建点 |
geogebra_create_line |
创建直线(两点) |
geogebra_create_line_equation |
创建直线(方程) |
geogebra_create_circle |
创建圆 |
geogebra_create_polygon |
创建多边形 |
函数工具
| 工具名 | 说明 |
|---|---|
geogebra_plot_function |
绘制函数图像 |
geogebra_plot_parametric |
绘制参数方程 |
geogebra_plot_implicit |
绘制隐函数 |
geogebra_plot_inequality |
绘制不等式区域 |
代数工具
| 工具名 | 说明 |
|---|---|
geogebra_solve_equation |
求解方程 |
geogebra_solve_system |
求解方程组 |
geogebra_simplify |
化简表达式 |
geogebra_expand |
展开表达式 |
geogebra_factor |
因式分解 |
geogebra_derivative |
求导数 |
geogebra_integral |
求积分 |
动画工具
| 工具名 | 说明 |
|---|---|
geogebra_create_slider |
创建滑块 |
geogebra_animate_slider |
启动/停止动画 |
geogebra_set_animation_speed |
设置动画速度 |
教育工具
| 工具名 | 说明 |
|---|---|
geogebra_list_educational_templates |
列出教育模板 |
geogebra_create_from_template |
从模板创建构造 |
环境配置
创建 .env 文件(可选):
# 服务器配置
PORT=3000
LOG_LEVEL=info
NODE_ENV=development
# GeoGebra 配置
GEOGEBRA_APP_NAME=classic
GEOGEBRA_WIDTH=800
GEOGEBRA_HEIGHT=600
GEOGEBRA_HEADLESS=true
# 性能配置
INSTANCE_POOL_SIZE=2
RESPONSE_TIMEOUT=30000
配置说明
| 变量 | 说明 | 默认值 |
|---|---|---|
PORT |
Web 服务器端口 | 3000 |
LOG_LEVEL |
日志级别 | info |
GEOGEBRA_HEADLESS |
无头模式(不显示浏览器窗口) | true |
INSTANCE_POOL_SIZE |
GeoGebra 实例池大小 | 2 |
开发指南
项目结构
ggb-web-mcp/
├── src/
│ ├── cli.ts # CLI 入口
│ ├── index.ts # 主入口
│ ├── server.ts # MCP 服务器
│ ├── tools/ # 工具定义
│ │ ├── geogebra-tools.ts
│ │ ├── educational-templates.ts
│ │ └── performance-tools.ts
│ ├── types/ # 类型定义
│ ├── utils/ # 工具函数
│ └── web/ # Web 服务器
│ └── server.ts
├── tests/ # 测试文件
├── examples/ # 使用示例
└── docs/ # 文档
常用脚本
# 开发模式
npm run dev
# 构建
npm run build
# 运行测试
npm test
# 测试覆盖率
npm run test:coverage
# 代码检查
npm run lint
# 清理构建产物
npm run clean
添加新工具
- 在
src/tools/geogebra-tools.ts中定义工具:
{
tool: {
name: 'geogebra_my_tool',
description: '工具描述',
inputSchema: {
type: 'object',
properties: {
param1: { type: 'string', description: '参数说明' }
},
required: ['param1']
}
},
handler: async (params) => {
// 实现逻辑
return {
content: [{ type: 'text', text: JSON.stringify(result) }]
};
}
}
- 工具会自动注册到工具注册表中
系统要求
- Node.js >= 18.0.0
- npm 或 yarn
许可证
MIT License
相关链接
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.