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
Visit Server

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

相关链接

Recommended Servers

playwright-mcp

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.

Official
Featured
TypeScript
Magic Component Platform (MCP)

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.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

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.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

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.

Official
Featured
TypeScript
Kagi MCP Server

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.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

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.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured