关于 MCP Calculate Server
基于 SymPy 的数学计算 MCP 服务,支持符号代数、微积分、方程求解和矩阵运算。受限求值器会拒绝任意 Python,并验证高开销表达式和结果。
主要功能
- 01算术与符号代数
- 02求导、积分与极限
- 03求解方程和方程组
- 04矩阵运算与特征值
- 05泰勒级数展开
- 06受限表达式求值
适用场景
- 01化简或因式分解符号表达式
- 02计算导数、积分或极限
- 03求解方程和方程组
- 04检查矩阵逆和特征值
MCP 相关
向 MCP 客户端提供 `calculate_expression` 工具,用于计算受支持的 SymPy 表达式。求值器限制可用名称和操作,并可能拒绝过大或复杂度过高的计算。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
MCP 计算服务
基于 MCP 协议和 SymPy 库的数学计算服务,提供强大的符号计算能力。
安全性
从版本 0.1.1 开始,服务通过受限的 SymPy 专用求值器解析表达式。它不会执行任意 Python 代码,且仅支持一组经过筛选的数学符号、函数和矩阵方法。
此版本还新增了对超长表达式和大型结果的验证,以降低耗时符号计算带来的拒绝服务风险。
主要功能
- 基本运算:加法、减法、乘法、除法、乘方
- 代数运算:表达式展开、因式分解、化简
- 微积分:求导、积分(定积分/不定积分)、极限计算
- 方程求解:代数方程、方程组
- 矩阵运算:矩阵求逆、特征值/特征向量计算
- 级数展开:泰勒级数展开
- 特殊函数:三角函数、对数函数、指数函数
使用示例
# Basic operations
"2 + 3*5" → 17
# Algebraic operations
"expand((x + 1)**2)" → x² + 2x + 1
"factor(x**2 - 2*x - 15)" → (x - 5)(x + 3)
# Calculus
"diff(sin(x), x)" → cos(x)
"integrate(exp(x), (x, 0, 1))" → E - 1
"integrate(exp(-x**2)*sin(x), (x, -oo, oo))" → 0
"limit(tan(x)/x, x, 0)" → 1
# Equation solving
"solve(x**2 - 4, x)" → [-2, 2]
"solve([x**2 + y**2 - 1, x + y - 1], [x, y])" → [(0, 1), (1, 0)]
# Matrix operations
"Matrix([[1, 2], [3, 4]]).inv()" → [[-2, 1], [3/2, -1/2]]
"Matrix([[1, 2, 3], [4, 5, 6]]).eigenvals()" → {9/2 - sqrt(33)/2: 1, 9/2 + sqrt(33)/2: 1}
"Sum(k, (k, 1, 10)).doit()" → 55
"series(cos(x), x, 0, 4)" → 1 - x²/2 + O(x⁴)
安装
通过 Smithery 安装
通过 Smithery 为 Claude Desktop 自动安装 Calculate Server:
npx -y @smithery/cli install @611711Dark/mcp_sympy_calculate_server --client claude
本地安装
-
克隆仓库:
git clone https://github.com/611711Dark/mcp_calculate_server.git cd mcp_calculate_server -
创建虚拟环境并安装依赖:
uv venv source .venv/bin/activate uv pip install -e . -
配置:
"calculate_expression1": { "isActive": false, "command": "python", "args": [ "server.py" ], "cwd": "/path/to/mcp_calculate_server" }
API 用法
通过 MCP 协议调用 calculate_expression 工具,并传入数学表达式字符串。解析器接受一组受限的 SymPy 表达式,例如算术运算、expand、factor、simplify、diff、integrate、limit、series、solve、Matrix(...).det()/inv()/eigenvals()/eigenvects() 和 Sum(...).doit()。
支持的名称
- 符号:
x、y、z和k等小写变量 - 常量:
pi、E、oo、I - 函数:
Abs、sin、cos、tan、log、exp、sqrt、expand、factor、simplify、diff、integrate、limit、series、solve、Sum、Matrix - 矩阵方法:
.det()、.inv()、.eigenvals()、.eigenvects() - SymPy 方法:对
Sum(...)等受支持的对象使用.doit()
验证规则
依赖任意 Python 功能、导入、文件系统访问或其他非数学结构的表达式将被拒绝。 为降低拒绝服务风险,超大规模展开、高复杂度求解和过大的结果也可能被拒绝。 关键字参数、私有属性、不支持的矩阵方法、格式错误的矩阵以及不支持的名称都会触发错误消息。
依赖项
- mcp>=1.5.0
- sympy>=1.13.3
致谢
感谢这篇博客文章提供介绍,也感谢 Stefano 的帮助和负责任的漏洞披露。
许可证
本项目采用 MIT 许可证。请参阅 LICENSE 文件。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。