mcpField
S
sagemath-mcp-server

sagemath-mcp-server

本地服务
github.com/justice8096科研与教育12 周前更新

关于 sagemath-mcp-server

sagemath-mcp-server 将 SageMath 的计算机代数能力封装为 MCP 服务,供需要符号数学计算的 LLM 客户端使用。它通过子进程调用 SageMath,提供方程求解、矩阵运算、数论和绘图等工具。

主要功能

  1. 01符号求解、微分与积分
  2. 02表达式化简及因式分解
  3. 03矩阵运算与数论工具
  4. 04生成图像并转换为 LaTeX
  5. 05支持 stdio 与 HTTP 传输
  6. 06可使用本地 SageMath 或 Docker

适用场景

  1. 01求解代数或超越方程
  2. 02计算符号导数与积分
  3. 03分析矩阵的特征值或秩
  4. 04绘制表达式并获取 LaTeX

MCP 相关

该 MCP 服务向 LLM 客户端暴露 10 种 SageMath 工具,涵盖求值、符号运算、矩阵、数论、绘图和 LaTeX 转换。支持 stdio 和带可选 API_KEY 的 HTTP 传输。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"justice8096-sagemath": {
"command": "npx",
"args": [
"-y",
"@justice8096/sagemath-mcp-server"
],
"env": {
"SAGE_TIMEOUT": "<SAGE_TIMEOUT>",
"SAGE_DOCKER_IMAGE": "<SAGE_DOCKER_IMAGE>",
"TRANSPORT": "<TRANSPORT>",
"PORT": "<PORT>",
"API_KEY": "<API_KEY>"
}
}
}
}
启动命令npx -y @justice8096/sagemath-mcp-server
需要配置的环境变量
SAGE_TIMEOUTPer-call SageMath timeout in milliseconds. Default 30000.
SAGE_DOCKER_IMAGEDocker image used when SageMath is not installed locally. Default sagemath/sagemath:latest.
TRANSPORTTransport mode: 'stdio' (default) or 'http'.
PORTHTTP port when TRANSPORT=http. Default 3000.
API_KEY密钥If set, HTTP transport requires matching API_KEY header. Ignored for stdio.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@justice8096/sagemath-mcp-server1.0.1

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

SageMath MCP 服务

License: CC0-1.0 npm

一个 Model Context Protocol 服务,可将 SageMath——一个包含 100 多个软件包的计算机代数系统——提供给 Claude 等大模型客户端。大多数“数学 MCP”都只封装单个库(SymPy、mathjs),而本项目通过子进程封装整个 SageMath 技术栈,让模型能够使用真正的符号数学,而非仅仅进行算术运算。

原因

大模型不擅长精确算术,处理多步代数运算时容易出错,在符号运算至关重要时也不可靠。合适的做法是让模型进行概念性推理,并将机械性计算交给工具——就像有计算障碍的人使用计算器一样。SageMath 为这种委派提供了最广泛的工具:因式分解、积分、特征值、数论、LaTeX 渲染和绘图,都可通过一个接口使用。

工具

工具描述
sage_evaluate运行任意 SageMath 表达式。
sage_solve_equation对代数方程/超越方程进行符号求解。
sage_differentiate计算导数(任意阶数、任意变量)。
sage_integrate计算不定积分和定积分。
sage_simplify化简表达式(default、full、trig、rational)。
sage_factor对多项式或整数进行因式分解。
sage_matrix_ops在 QQ/RR/ZZ/CC 上计算行列式、逆矩阵、特征值、秩、RREF 和转置。
sage_plot绘制表达式并返回 base64 PNG。
sage_latex_convert将 SageMath 表达式转换为 LaTeX。
sage_number_theoryis_prime、next_prime、factor、euler_phi、gcd、lcm、prime_range、sigma、moebius。

所有工具都遵循相同的架构模式(参见 src/schemas/common.ts)。

安装

服务需要主机上安装本地 SageMath 或 Docker,以便启动 SageMath 进程。

选项 1:npm + 本地 SageMath
npm install -g @justice8096/sagemath-mcp-server
# requires `sage` on PATH — see https://doc.sagemath.org/html/en/installation/
sagemath-mcp
选项 2:Docker(无需本地安装 SageMath)
docker compose up
# uses the official sagemath/sagemath image; the server runs inside the container
选项 3:从源代码安装
git clone https://github.com/justice8096/sagemath-mcp-server.git
cd sagemath-mcp-server
npm install
npm run build
npm start

配置 MCP 客户端

Claude Desktop / Claude Code(stdio 传输)

将以下内容添加到 ~/.claude.json(或对应的 Claude Desktop 配置文件):

{
  "mcpServers": {
    "sagemath": {
      "command": "sagemath-mcp"
    }
  }
}
远程/HTTP 传输
TRANSPORT=http API_KEY=your-secret-key npm start

然后将 MCP HTTP 客户端指向 http://<host>:3000/mcp,并设置匹配的 API_KEY 请求头。

架构

  • TypeScript 封装层,运行时为 Node.js ≥ 18。
  • 子进程封装——封装代码采用 CC0 许可;SageMath 仍采用 GPL-3.0 许可,并作为独立进程运行,这是根据 GNU GPL 常见问题中关于聚合的说明所述的规范安全交互模式。通过 FFI 嵌入会传递著作权左派要求;通过子进程执行则不会。
  • 双传输方式——stdio(Claude Desktop、Claude Code、本地 MCP 客户端)和 Streamable HTTP(远程部署,可选 API_KEY 环境变量)。
  • 国际化——通过 src/i18n.ts 和 locales/ 提供英语、西班牙语和法语。
  • 多格式构建——build.ts 根据同一份源清单生成 Claude 插件、OpenAI 函数调用、n8n 节点、MCP 服务描述文件、命令行工具和 YAML 提示词库输出。

配置

环境变量默认值用途
TRANSPORTstdiostdio 或 http。
PORT3000当 TRANSPORT=http 时使用的 HTTP 端口。
API_KEY(无)设置后,HTTP 请求必须包含匹配的 API_KEY 请求头。
SAGE_TIMEOUT30000每次调用的 SageMath 超时时间,单位为毫秒。
SAGE_DOCKER_IMAGEsagemath/sagemath:latest本地未安装 SageMath 时使用的镜像。

安全性

  • 所有 SageMath 输入都会在子进程执行前进行清理,以移除 Shell 元字符;详见 src/services/sage-executor.ts。
  • 如果设置了 API_KEY,HTTP 传输就必须使用该密钥;没有默认凭据。
  • 完整的安全状况请参阅 SECURITY.md 和 THREAT_MODEL.md。
  • audits/ 下的提交前审计套件:SAST/DAST 扫描、供应链审计、CWE 映射、LLM 合规报告、贡献分析。

许可证

此封装以 CC0-1.0(公有领域)发布。SageMath 本身仍采用 GPL-3.0;子进程执行模式使两者的许可证保持独立。法律依据请参阅 SECURITY.md 和项目的合规性分析。

状态

v1.0.0 — 正式公开发布。封装层已稳定;SageMath 的功能丰富且上游版本稳定。请通过 https://github.com/justice8096/sagemath-mcp-server/issues 提交问题。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。