GGB Web MCP

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.

Category
访问服务器

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

添加新工具

  1. 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) }]
    };
  }
}
  1. 工具会自动注册到工具注册表中

系统要求

  • Node.js >= 18.0.0
  • npm 或 yarn

许可证

MIT License

相关链接

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选