返回 MCP 目录
public公开dns本地运行

desmos-mcp

这是一个基于Model Context Protocol(MCP)的数学公式可视化与分析服务器,利用sympy进行本地渲染和计算,并可选择集成Desmos API,提供公式验证、二维绘图、多函数绘图和符号分析等功能。

article

README

🚀 Desmos-MCP 服务器

这是一个标准的模型上下文协议(MCP)服务器,旨在为大语言模型(LLMs)提供强大的数学公式可视化和分析能力。它利用 sympy 进行本地渲染和计算,还可以选择集成 Desmos API。

🚀 快速开始

若要独立运行服务器进行测试,请在项目根目录执行以下命令:

uv run src/main.py

服务器将通过标准输入/输出(stdio)启动,并准备好由 MCP 客户端(如 Gemini CLI)连接。

✨ 主要特性

  • 交互式公式验证:使用 validate_formula 工具检查数学公式的语法。如果公式无效,它会利用大语言模型的采样功能,以通俗易懂的方式解释错误原因。
  • 单函数绘图:使用 plot_math_function 工具从公式生成二维绘图。它支持使用 Desmos API(可通过 config.json 配置),若不可用则回退到本地 matplotlib 渲染,并在执行过程中提供进度报告。
  • 多函数绘图:使用 plot_multiple_functions 工具在同一图表上绘制多个函数。
  • 符号分析:使用 analyze_formula 工具计算公式的数学属性,如定义域、值域和临界点。
  • 将绘图保存到文件:自动将生成的绘图以 PNG 文件形式保存到桌面的 Desmos-MCP 文件夹中。

🔧 技术细节

  • Python 3.10+
  • FastMCP
  • Sympy
  • Matplotlib
  • HTTPX

📦 安装指南

  1. 克隆项目(若尚未完成)
  2. 安装 uv 若未安装 uv,请在终端运行以下命令:
    powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
    
  3. 创建虚拟环境 在项目根目录下运行:
    uv venv
    
  4. 安装依赖项
    uv sync
    
    此命令将根据 pyproject.toml 文件安装所有必要的依赖项。

🔧 配置

服务器的行为由项目根目录下的 config.json 文件控制。

{
  "desmos": {
    "use_api": true,
    "api_key_env_var": "DESMOS_API_KEY",
    "fallback_to_local": true
  },
  "rendering": {
    "default_width": 600,
    "default_height": 400
  }
}
  • desmos.use_api:若为 true,服务器将首先尝试使用 Desmos API 进行绘图。
  • desmos.api_key_env_var:指定用于获取 Desmos API 密钥的环境变量名称。
  • desmos.fallback_to_local:若 use_apitrue 但 API 调用失败,此选项决定服务器是否应自动回退到本地渲染。

设置 Desmos API 密钥(可选)

要使用 Desmos API 功能,您需要设置一个环境变量。例如,在 PowerShell 中:

$env:DESMOS_API_KEY="your_actual_api_key_here"

📝 待办事项

  • [ ] 添加 3D 绘图支持。
  • [ ] 实现实时公式分析和交互式绘图,类似于 Desmos。

📄 许可证

本项目采用 Apache 2.0 许可证。详情请参阅 LICENSE 文件。

help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端