数学可视化服务器

基于JSXGraph的MCP协议服务器,提供13种数学可视化工具,适用于教育数学、工程和科学应用。

  • by dxd214
  • TypeScript
  • 混合部署
  • 6 星标
  • 更新于
在 GitHub 查看 dxd214/mcp-server-jsxgraph

使用说明

MCP服务器JSXGraph

最新稳定版本:0.1.2 | NPM包: mcp-server-jsxgraph

用于生成数学可视化的模型上下文协议服务器 JSX图形此MCP服务器为函数、几何、参数曲线和教育数学提供交互式数学图表生成功能。

这是一个基于TypeScript的MCP服务器,提供数学可视化功能。它允许您通过MCP工具创建各种类型的数学图表,非常适合教育数学、工程和科学应用。

🚀 快速参考

传输和连接矩阵

场景 命令 侦听端口 访问端点 用例
STDIO(默认) npx -y mcp-server-jsxgraph N/A N/A 桌面/IDE客户端(Claude、Cursor、Cline)
SSE(本地) mcp-server-jsxgraph --transport sse 1122 http://localhost:1122/sse Web流媒体应用程序
可流式传输(本地) mcp-server-jsxgraph --transport streamable 1122 http://localhost:1122/mcp HTTP流媒体客户端
Docker SSE docker compose up -d (sse服务) 1123 http://localhost:1123/sse 容器化SSE部署
Docker流媒体 docker compose up -d (流媒体服务) 1122 http://localhost:1122/mcp 容器化可简化部署

最低工作配置

桌面客户端(Claude Desktop、Cursor、Cline):

{
  "mcpServers": {
    "mcp-server-jsxgraph": {
      "command": "npx",
      "args": ["-y", "mcp-server-jsxgraph"]
    }
  }
}

SSE自检(浏览器验证):

npx -y mcp-server-jsxgraph --transport sse --port 1122
# Open: http://localhost:1122/sse

📋 目录

✨ 特性

13个由JSXGraph支持的数学可视化工具,用于交互式数学图形。

数学可视化图表(JSXGraph)

  1. generate_function_graph:生成支持导数、积分、切线和多函数的数学函数图。
  2. generate_parametric_curve:使用可选的动画轨迹生成参数曲线,如圆、李萨如曲线、螺旋和摆线。
  3. generate_geometry_diagram:使用点、线、圆、多边形、角度和几何构造创建交互式几何图。
  4. generate_vector_field:使用箭头、流线、奇点和幅度颜色编码可视化二维矢量场。
  5. generate_linear_system:用可行域和线性规划优化可视化线性方程和不等式系统。
  6. generate_function_transformation:显示函数变换,包括平移、缩放、反射和动画合成。
  7. generate_quadratic_analysis:具有顶点、根、对称轴、焦点和准线的综合二次函数分析。
  8. generate_exponential_logarithm:用渐近线、增长/衰减分析和逆关系绘制指数和对数函数。
  9. generate_rational_function:用渐近线、洞、域限制和临界点可视化有理和无理函数。
  10. generate_equation_system:用数值解和相图求解和可视化线性和非线性方程系统。
  11. generate_conic_section:生成具有几何特性的圆锥曲线(圆、椭圆、抛物线、双曲线)和高次多项式。
  12. generate_polynomial_steps:具有根、导数和图形表示的交互式逐步多项式分析。
  13. generate_number_line_inequality:在数字线上可视化不等式,支持简单不等式(x>2)、复合不等式(1<x<4)和具有自定义样式的多重不等式系统。

🏗️ 系统架构

MCP Server JSXGraph遵循分层架构,协议处理、数学分析和可视化渲染之间有明确的分离。

高级系统架构

graph TB
    subgraph "Entry Layer"
        CLI["CLI Entry Point<br/>src/index.ts"]
        PKG["package.json<br/>Build Configuration"]
    end
    
    subgraph "MCP Protocol Layer"
        SERVER["MCP Server Core<br/>src/server.ts"]
        HANDLERS["Request Handlers<br/>ListToolsRequestSchema<br/>CallToolRequestSchema"]
    end
    
    subgraph "Transport Abstractions"
        STDIO["Desktop Integration<br/>startStdioMcpServer()"]
        SSE["Web Streaming<br/>startSSEMcpServer()"]
        HTTP["Cloud Deployment<br/>startHTTPStreamableServer()"]
    end
    
    subgraph "Tool Execution Framework"
        DISPATCHER["callTool()<br/>Request Dispatcher"]
        REGISTRY["Tool Registry<br/>jsxgraph/index.ts"]
        ENGINE["MathAnalysisEngine<br/>Mathematical Core"]
    end
    
    subgraph "Mathematical Tools"
        FUNC["Function Analysis Tools"]
        POLY["Polynomial Tools"] 
        GEO["Geometry Tools"]
        NUM["Number Line Tool"]
    end
    
    CLI --> SERVER
    PKG --> CLI
    SERVER --> HANDLERS
    HANDLERS --> STDIO
    HANDLERS --> SSE
    HANDLERS --> HTTP
    STDIO --> DISPATCHER
    SSE --> DISPATCHER
    HTTP --> DISPATCHER
    DISPATCHER --> REGISTRY
    DISPATCHER --> ENGINE
    REGISTRY --> FUNC
    REGISTRY --> POLY
    REGISTRY --> GEO
    REGISTRY --> NUM

核心组件

MCP协议实现

  • 服务器核心:通过以下方式实现模型上下文协议 @modelcontextprotocol/sdk
  • 请求处理:支持 ListToolsRequestSchema 和 CallToolRequestSchema
  • 工具发现:基于环境过滤的动态工具注册
  • 错误管理:使用符合MCP的错误代码进行全面的错误处理

传输层支持

传输 用例 端点 集成
工作室 桌面应用程序(Claude、VSCode、Cline、Cursor) 标准I/O 直接MCP客户端集成
上海证券交易所 Web流媒体应用程序 http://localhost:1122/sse 服务器发送的事件
HTTP流式传输 云部署平台 http://localhost:1122/mcp HTTP流协议

数学分析引擎

这 MathAnalysisEngine 提供复杂的数学计算能力:

  • 功能分析:域、范围、截距、极值、渐近线、单调性
  • 多项式分析:根查找、因子分解、末端行为分析
  • 解决不平等问题:简单不等式、复合不等式、绝对值不等式和逻辑不等式
  • 数值方法:双分割法、数值微分、区间计算

MCP协议通信流程

sequenceDiagram
    participant Client as MCP Client
    participant Server as Server Instance
    participant Handler as CallToolRequestSchema Handler
    participant Dispatcher as callTool() Function
    participant Validator as Zod Schema Validation
    participant Engine as MathAnalysisEngine
    participant Generator as JSXGraph Code Generator
    
    Client->>Server: CallToolRequest
    Server->>Handler: request.params
    Handler->>Dispatcher: callTool(name, arguments)
    Dispatcher->>Validator: z.object(schema).safeParse(args)
    Validator-->>Dispatcher: Validation Result
    
    alt Valid Request
        Dispatcher->>Engine: Mathematical Analysis
        Engine-->>Dispatcher: Analysis Data
        Dispatcher->>Generator: generateJSXGraphCode(config)
        Generator-->>Dispatcher: JavaScript Code
        Dispatcher-->>Handler: Tool Response
        Handler-->>Server: Success Response
        Server-->>Client: JSXGraph Visualization
    else Invalid Request
        Dispatcher-->>Handler: McpError(ErrorCode.InvalidParams)
        Handler-->>Server: Error Response
        Server-->>Client: Error Message
    end

工具执行框架

该系统通过统一的执行框架管理15多种数学可视化工具:

graph LR
    subgraph "Tool Registry"
        CHARTS["Charts Object<br/>All Tool Definitions"]
        ENABLED["getEnabledTools()<br/>Environment Filtering"]
        DISABLED["getDisabledTools()<br/>Environment Variables"]
    end
    
    subgraph "Type System"
        MAP["CHART_TYPE_MAP<br/>Tool Name Mapping"]
        JSXSET["JSXGRAPH_CHARTS Set<br/>Type Validation"]
        CONFIG["JSXGraphConfig Interface<br/>Common Parameters"]
    end
    
    subgraph "Code Generation"
        CONTAINER["Dynamic Container IDs<br/>jxgbox_[type]_[timestamp]"]
        GENERATOR["generateJSXGraphCode()<br/>HTML Generation"]
        SPECIAL["Special Handling<br/>polynomial-steps<br/>number-line"]
    end
    
    CHARTS --> ENABLED
    ENABLED --> MAP
    MAP --> JSXSET
    JSXSET --> CONFIG
    CONFIG --> CONTAINER
    CONTAINER --> GENERATOR
    GENERATOR --> SPECIAL

数学工具类别

类别 工具 核心能力
功能分析 generate_function_graph
generate_function_transformation
generate_function_properties
函数图、变换、导数和积分综合分析
多项式分析 generate_polynomial_complete
generate_polynomial_steps
generate_quadratic_analysis
多项式分解、求根、逐步分析
几何与高级 generate_geometry_diagram
generate_parametric_curve
generate_vector_field
generate_conic_section
交互式几何、参数曲线、矢量场可视化
方程式系统 generate_linear_system
generate_equation_system
generate_exponential_logarithm
generate_rational_function
线性/非线性系统,指数和对数函数
专用工具 generate_number_line_inequality 使用区间符号增强不等式可视化

技术栈

graph TD
    subgraph "Core Framework"
        TS["TypeScript"]
        NODE["Node.js Runtime"]
    end
    
    subgraph "MCP Integration"
        SDK["@modelcontextprotocol/sdk"]
        PROTO["MCP Protocol Implementation"]
    end
    
    subgraph "Mathematical Libraries"
        JSX["JSXGraph"]
        ZOD["Zod Schema Validation"]
        MATH["Mathematical Analysis Engine"]
    end
    
    subgraph "Development Tools"
        VITEST["Vitest Testing Framework"]
        BIOME["Biome Linting & Formatting"]
        BUILD["TypeScript Build System"]
    end
    
    TS --> NODE
    SDK --> PROTO
    JSX --> MATH
    ZOD --> MATH
    VITEST --> BUILD
    BIOME --> BUILD
    
    NODE --> SDK
    PROTO --> JSX
    MATH --> VITEST

🤖 用法

桌面应用程序

对于Claude desktop、VSCode等桌面MCP客户端, 克莱恩Cherry Studio、Cursor,使用标准STDIO配置(请参阅 快速参考 上文)。

跨平台配置(推荐):

{
  "mcpServers": {
    "mcp-server-jsxgraph": {
      "command": "npx",
      "args": ["-y", "mcp-server-jsxgraph"]
    }
  }
}

Windows特定(如果npx不能直接工作):

{
  "mcpServers": {
    "mcp-server-jsxgraph": {
      "command": "cmd",
      "args": ["/c", "npx", "-y", "mcp-server-jsxgraph"]
    }
  }
}

🚰 使用SSE或流媒体传输运行

直接运行

全局安装该软件包。

npm install -g mcp-server-jsxgraph

使用首选传输选项运行服务器:

# For SSE transport (default endpoint: /sse)
mcp-server-jsxgraph --transport sse

# For Streamable transport with custom endpoint
mcp-server-jsxgraph --transport streamable

然后,您可以访问服务器:

  • SSE运输: http://localhost:1122/sse
  • 可流动运输: http://localhost:1122/mcp

Docker部署

进入docker目录。

cd docker

使用docker compose进行部署。

docker compose up -d

然后,您可以访问服务器:

  • SSE运输: http://localhost:1123/sse
  • 可流动运输: http://localhost:1122/mcp

🎮 CLI选项

运行MCP服务器时,您还可以使用以下CLI选项。使用run-cli命令选项 -h.

MCP Server JSXGraph CLI

Options:
  --transport, -t  Specify the transport protocol: "stdio", "sse", or "streamable" (default: "stdio")
  --port, -p       Specify the port for SSE or streamable transport (default: 1122)
  --endpoint, -e   Specify the endpoint for the transport:
                   - For SSE: default is "/sse"
                   - For streamable: default is "/mcp"
  --help, -h       Show this help message

⚙️ 环境变量

变量 描述 默认值 示例
DISABLED_TOOLS 以逗号分隔的禁用工具名称列表 - generate_function_graph,generate_parametric_curve

🎛️ 工具筛选

您可以使用禁用特定的数学可视化工具 DISABLED_TOOLS 环境变量。当某些工具与MCP客户端存在兼容性问题,或者您想限制可用功能时,这很有用。

{
  "mcpServers": {
    "mcp-server-jsxgraph": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-server-jsxgraph"
      ],
      "env": {
        "DISABLED_TOOLS": "generate_function_graph,generate_parametric_curve"
      }
    }
  }
}

可用于筛选的工具名称:

  • generate_function_graph
  • generate_parametric_curve
  • generate_geometry_diagram
  • generate_vector_field
  • generate_linear_system
  • generate_function_transformation
  • generate_quadratic_analysis
  • generate_exponential_logarithm
  • generate_rational_function
  • generate_equation_system
  • generate_conic_section
  • generate_polynomial_steps

🔒 兼容性和稳定性承诺

永不打破用户空间承诺:

  • 发布的CLI参数和默认行为在次要版本中保持稳定
  • 现有传输端点(/sse, /mcp)不会改变
  • 包名 mcp-server-jsxgraph 将保持一致
  • 新功能将使用新的标志/端点,保持现有行为不变
  • 弃用警告将在删除前提供2-3个次要版本过渡期

当前稳定的API:

  • NPM包: mcp-server-jsxgraph@0.1.2
  • CLI参数: --transport, --port, --endpoint
  • STDIO传输:桌面客户端的默认行为
  • SSE端点: /sse 在指定端口上
  • 可流式传输端点: /mcp 在指定端口上
  • 环境变量: DISABLED_TOOLS

🔨 发展

安装依赖项:

npm install

构建服务器:

npm run build

启动MCP服务器:

npm run start

📄 许可证

麻省理工学院@dxd214.