关于 Calculator MCP Server 🧮
Calculator MCP Server 是基于 Python AST 的表达式计算 MCP 服务,面向需要安全执行基础数学运算的 MCP 客户端。它支持常见算术和幂运算,并通过解析表达式提供错误防护。
主要功能
- 01支持四则运算与幂运算
- 02支持正负号
- 03格式化整数和小数结果
- 04通过 AST 解析表达式
- 05检查除零与幂运算错误
适用场景
- 01在 MCP 客户端中计算数学表达式
- 02执行带正负号的基础算术
- 03安全处理除零和无效表达式
MCP 相关
它向 MCP 客户端提供 `perform_calculation` 工具,用于计算表达式并返回格式化结果或错误信息。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
暂未收录安装方式
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
还没有获取到工具列表
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
来自项目 READMECalculator MCP Server 🧮
基于 Python AST 的安全表达式计算器 MCP 服务,支持基础数学运算和错误防护机制。
功能特性
- ✅ 支持加减乘除四则运算(
+,-,*,/) - ✅ 支持幂运算(
**) - ✅ 支持正负号处理(
+5,-3) - ✅ 智能格式化计算结果:
- 整数结果直接显示整数
- 小数结果保留最多15位有效数字
- 自动去除末尾多余的零
- ⚠️ 安全防护:
- 拦截代码注入风险(通过 AST 解析而非
eval) - 除零错误防护
- 语法错误提示
- 类型安全检查
- 幂运算安全检查
- 拦截代码注入风险(通过 AST 解析而非
安装方式
pip install mcp-calculate-server
快速使用
from mcp.server.fastmcp import FastMCP
# 启动计算器服务
calculator = FastMCP("CalculatorServer")
calculator.run(transport='stdio')
API 接口
perform_calculation(expression: str) -> str
接收数学表达式字符串,返回格式化结果或错误信息
>>> perform_calculation("5+3")
"🧮 计算结果:5+3 = 8"
>>> perform_calculation("10/3")
"🧮 计算结果:10/3 = 3.333333333333333"
>>> perform_calculation("10**20")
"🧮 计算结果:10**20 = 100000000000000000000"
>>> perform_calculation("2**3")
"🧮 计算结果:2**3 = 8"
>>> perform_calculation("10/0")
"❌ 错误:除数不能为零"
>>> perform_calculation("0**-1")
"❌ 错误:零的负数次幂未定义"
>>> perform_calculation("(-1)**0.5")
"❌ 错误:负数的非整数次幂未定义"
支持的运算符
| 操作符 | 说明 | 示例 |
|---|---|---|
| + | 加法 | 3+4 |
| - | 减法 | 5-2 |
| * | 乘法 | 6*7 |
| / | 除法 | 8/2 |
| ** | 幂运算 | 2**3 |
| -x | 取负 | -5 |
| +x | 取正 | +3 |
错误码说明
| 错误类型 | 示例输出 |
|---|---|
| 语法错误 | ❌ 表达式语法错误:unexpected EOF |
| 不支持的运算符 | ❌ 不支持的运算符:Mod |
| 除零错误 | ❌ 错误:除数不能为零 |
| 非法操作数类型 | TypeError: 不支持的常量类型 |
| 零的负数次幂 | ❌ 错误:零的负数次幂未定义 |
| 负数的非整数次幂 | ❌ 错误:负数的非整数次幂未定义 |
依赖环境
- Python 3.13+
mcp-server库(自动安装)
开源协议
MIT License,详情见 LICENSE
源码地址
GitHub: https://github.com/xiaoyingv/mcp_calculate_server
贡献指南
欢迎提交 PR 和报告 issue,提交前请阅读 CONTRIBUTING.md
评论
支持 Markdown
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。