计算器
MCP 服务配置
复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用
{
"mcpServers": {
"calculator": {
"args": [
"mcp-calculator"
],
"command": "npx"
}
}
}
可用工具 (19 个)
该服务在 MCP 协议中暴露的工具,AI 可按需调用
add 2 个参数 需填 2 项
执行两个数字的加法运算
必填参数:a、b
subtract 2 个参数 需填 2 项
执行两个数字的减法运算
必填参数:a、b
multiply 2 个参数 需填 2 项
执行两个数字的乘法运算
必填参数:a、b
divide 2 个参数 需填 2 项
执行两个数字的除法运算
必填参数:a、b
modulo 2 个参数 需填 2 项
计算两个数的余数
必填参数:a、b
power 2 个参数 需填 2 项
计算a的b次方
必填参数:a、b
sqrt 1 个参数 需填 1 项
计算数字的平方根
必填参数:a
abs 1 个参数 需填 1 项
计算数字的绝对值
必填参数:a
cbrt 1 个参数 需填 1 项
计算数字的立方根
必填参数:a
nthRoot 2 个参数 需填 2 项
计算数字的n次方根
必填参数:a、n
sin 1 个参数 需填 1 项
计算角度的正弦值(输入为弧度)
必填参数:angle
cos 1 个参数 需填 1 项
计算角度的余弦值(输入为弧度)
必填参数:angle
tan 1 个参数 需填 1 项
计算角度的正切值(输入为弧度)
必填参数:angle
asin 1 个参数 需填 1 项
计算反正弦值(返回弧度)
必填参数:value
acos 1 个参数 需填 1 项
计算反余弦值(返回弧度)
必填参数:value
atan 1 个参数 需填 1 项
计算反正切值(返回弧度)
必填参数:value
ln 1 个参数 需填 1 项
计算自然对数(以e为底)
必填参数:value
log10 1 个参数 需填 1 项
计算以10为底的对数
必填参数:value
log 2 个参数 需填 2 项
计算以指定底数的对数
必填参数:value、base
服务介绍
MCP 计算器服务器
一个功能完整的基于 Model Context Protocol (MCP) 的计算器服务器,提供丰富的数学运算功能,包括基础算术、根式运算、三角函数、对数运算、统计学、组合数学、数论、复数运算、矩阵运算、数值分析、金融计算、单位转换和几何计算等 13 个专业数学模块。
📦 安装
通过 npm 安装(推荐)
bash
全局安装
npm install -g mcp-calculator
或者本地安装
npm install mcp-calculator
从源码安装
bash
克隆项目
git clone https://github.com/proflulab/mcp-calculator.git
cd mcp-calculator
安装依赖
npm install
构建并启动
npm start
🚀 快速开始
全局安装后使用
bash
直接启动服务器
calculator
本地安装后使用
bash
使用 npx 运行
npx mcp-calculator
或者通过 npm scripts
npm start
🧮 功能特性
📊 13 个专业数学模块
1. 基础数学 (Basic Math)
- ✅ 加法运算 - 两个数字相加
- ✅ 减法运算 - 两个数字相减
- ✅ 乘法运算 - 两个数字相乘
- ✅ 除法运算 - 两个数字相除(包含除零错误处理)
- ✅ 求余运算 - 计算两个数的余数
- ✅ 幂运算 - 计算 a 的 b 次方
2. 根式运算 (Root Operations)
- ✅ 平方根 - 计算数字的平方根
- ✅ 立方根 - 计算数字的立方根
- ✅ 开多次方 - 计算数字的 n 次方根
- ✅ 绝对值 - 计算数字的绝对值
3. 三角函数 (Trigonometry)
- ✅ 基本三角函数 - sin, cos, tan
- ✅ 反三角函数 - asin, acos, atan
- ✅ 双曲函数 - sinh, cosh, tanh
- ✅ 角度弧度转换 - 度数与弧度互转
4. 对数函数 (Logarithms)
- ✅ 自然对数 - ln(x)
- ✅ 常用对数 - log₁₀(x)
- ✅ 任意底数对数 - log_b(x)
- ✅ 指数函数 - e^x, 10^x, a^x
5. 统计学 (Statistics)
- ✅ 描述统计 - 平均值、中位数、众数
- ✅ 离散度量 - 标准差、方差、范围
- ✅ 极值统计 - 最大值、最小值
- ✅ 聚合运算 - 求和、乘积
6. 组合数学 (Combinatorics)
- ✅ 阶乘运算 - n!
- ✅ 排列组合 - P(n,r), C(n,r)
- ✅ 斐波那契数列 - 第 n 项斐波那契数
- ✅ 卡塔兰数 - 第 n 个卡塔兰数
7. 数论 (Number Theory)
- ✅ 最大公约数 - GCD 计算
- ✅ 最小公倍数 - LCM 计算
- ✅ 素数判断 - 质数检测
- ✅ 质因数分解 - 素因子分解
- ✅ 欧拉函数 - φ(n) 计算
- ✅ 完全数判断 - 完全数检测
- ✅ 因子统计 - 因子个数和列表
8. 复数运算 (Complex Numbers)
- ✅ 基本运算 - 加减乘除
- ✅ 复数属性 - 模长、共轭、幅角
- ✅ 极坐标形式 - r∠θ 表示
9. 矩阵运算 (Matrix Operations)
- ✅ 矩阵运算 - 加法、减法、乘法
- ✅ 矩阵属性 - 行列式、转置、逆矩阵
- ✅ 向量运算 - 点积、叉积、模长
10. 数值分析 (Numerical Analysis)
- ✅ 数值积分 - 梯形法则、辛普森法则
- ✅ 数值微分 - 数值求导
- ✅ 方程求根 - 牛顿法、二分法
- ✅ 插值计算 - 拉格朗日插值
11. 金融计算 (Financial)
-
✅ 复利计算 - 投资收益计算
-
✅ 年金计算 - 现值和未来值
-
✅ 贷款计算 - 月供计算
-
✅ 投资分析 - NPV、IRR 计算
-
✅ 债券定价 - 债券价格计算#### 12. 单位转换 (Conversions)
-
✅ 长度转换 - 米、英尺、英寸等
-
✅ 重量转换 - 千克、磅、盎司等
-
✅ 温度转换 - 摄氏度、华氏度、开尔文
-
✅ 面积体积 - 各种单位互转
-
✅ 时间转换 - 秒、分钟、小时等
13. 几何计算 (Geometry)
- ✅ 平面几何 - 圆形、矩形、三角形面积周长
- ✅ 立体几何 - 球体、圆柱、圆锥体积表面积
- ✅ 坐标几何 - 点距离、直线方程
🔧 系统特性
- ✅ 参数验证 - 使用 Zod 进行输入验证
- ✅ 错误处理 - 完善的错误处理机制
- ✅ 模块化设计 - 13个独立数学模块
- ✅ 类型安全 - 完整的 TypeScript 类型定义
- ✅ 单元测试 - 266个测试用例,100%覆盖率
安装和使用
1. 安装依赖
bash
npm install
2. 构建项目
bash
npm run build
3. 启动服务器
bash
npm start
或者直接运行构建后的文件:
bash
node build/index.js
4. 测试服务器
详细的测试说明和使用方法请参考:测试文档
快速运行测试:
bash
运行所有测试
npm test
运行单元测试
npm run test:unit
运行集成测试
npm run test:integration
生成覆盖率报告
npm run test:coverage
💡 使用示例
在 MCP 客户端中使用
全局安装配置
如果你已经全局安装了 mcp-calculator,可以这样配置:
json
{
"mcpServers": {
"calculator": {
"command": "calculator"
}
}
}
本地安装配置
如果你是本地安装或从源码构建,可以这样配置:
json
{
"mcpServers": {
"calculator": {
"command": "node",
"args": ["/path/to/mcp_calculator/build/index.js"]
}
}
}
使用 npx 配置
json
{
"mcpServers": {
"calculator": {
"command": "npx",
"args": ["mcp-calculator"]
}
}
}
计算器功能示例
- 基础运算:"计算 15 + 27"
- 三角函数:"计算 sin(π/4) 的值"
- 对数运算:"计算 log₂(16)"
- 开方运算:"计算 ∛125"
- 复合运算:"计算 2^3 + √16 - ln(e)"
命令行直接使用
bash
启动服务器
node build/index.js
在另一个终端发送请求
echo '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"add","arguments":{"a":10,"b":5}}}' | node build/index.js
安装验证
安装完成后,你可以通过以下方式验证安装是否成功:
bash
检查版本
npm list mcp-calculator
运行测试(如果是从源码安装)
npm run test:all
启动服务器测试
calculator # 全局安装
或
npx mcp-calculator # 本地安装
🔧 可用工具
本项目提供 100+ 个数学工具,按 13 个专业模块组织。以下是各模块的主要工具:
📐 1. 基础数学 (Basic Math)
| 工具名 | 描述 | 示例 |
|---|---|---|
add |
加法运算 | add(10, 5) = 15 |
subtract |
减法运算 | subtract(10, 5) = 5 |
multiply |
乘法运算 | multiply(10, 5) = 50 |
divide |
除法运算 | divide(10, 5) = 2 |
modulo |
求余运算 | modulo(17, 5) = 2 |
power |
幂运算 | power(2, 8) = 256 |
🔢 2. 根式运算 (Root Operations)
| 工具名 | 描述 | 示例 |
|---|---|---|
sqrt |
平方根 | sqrt(16) = 4 |
cbrt |
立方根 | cbrt(27) = 3 |
nthRoot |
n次方根 | nthRoot(16, 4) = 2 |
abs |
绝对值 | abs(-25) = 25 |
📊 3. 三角函数 (Trigonometry)
| 工具名 | 描述 | 示例 |
|---|---|---|
sin |
正弦函数 | sin(π/2) = 1 |
cos |
余弦函数 | cos(0) = 1 |
tan |
正切函数 | tan(π/4) = 1 |
asin |
反正弦函数 | asin(0.5) = π/6 |
acos |
反余弦函数 | acos(0.5) = π/3 |
atan |
反正切函数 | atan(1) = π/4 |
sinh |
双曲正弦 | sinh(0) = 0 |
📈 4. 对数函数 (Logarithms)
| 工具名 | 描述 | 示例 |
|---|---|---|
ln |
自然对数 | ln(e) = 1 |
log10 |
常用对数 | log10(100) = 2 |
log |
任意底数对数 | log(8, 2) = 3 |
exp |
指数函数 | exp(1) = e |
📊 5. 统计学 (Statistics)
| 工具名 | 描述 | 示例 |
|---|---|---|
mean |
平均值 | mean([1,2,3,4,5]) = 3 |
median |
中位数 | median([1,2,3,4,5]) = 3 |
mode |
众数 | mode([1,1,2,3]) = 1 |
stdDev |
标准差 | stdDev([1,2,3,4,5]) = 1.58 |
variance |
方差 | variance([1,2,3,4,5]) = 2.5 |
max |
最大值 | max([1,2,3,4,5]) = 5 |
min |
最小值 | min([1,2,3,4,5]) = 1 |
sum |
求和 | sum([1,2,3,4,5]) = 15 |
product |
乘积 | product([1,2,3,4,5]) = 120 |
range |
范围 | range([1,2,3,4,5]) = 4 |
🎲 6. 组合数学 (Combinatorics)
| 工具名 | 描述 | 示例 |
|---|---|---|
factorial |
阶乘 | factorial(5) = 120 |
permutation |
排列 | permutation(5, 3) = 60 |
combination |
组合 | combination(5, 3) = 10 |
fibonacci |
斐波那契数 | fibonacci(10) = 55 |
🔢 7. 数论 (Number Theory)
| 工具名 | 描述 | 示例 |
|---|---|---|
gcd |
最大公约数 | gcd(12, 18) = 6 |
lcm |
最小公倍数 | lcm(12, 18) = 36 |
isPrime |
素数判断 | isPrime(17) = true |
primeFactorization |
质因数分解 | primeFactorization(12) = [2,2,3] |
eulerTotient |
欧拉函数 | eulerTotient(9) = 6 |
isPerfectNumber |
完全数判断 | isPerfectNumber(6) = true |
divisorCount |
因子个数 | divisorCount(12) = 6 |
divisorList |
因子列表 | divisorList(12) = [1,2,3,4,6,12] |
🔄 8. 复数运算 (Complex Numbers)
| 工具名 | 描述 | 示例 |
|---|---|---|
complex_add |
复数加法 | (3+4i) + (1+2i) = 4+6i |
complex_subtract |
复数减法 | (3+4i) - (1+2i) = 2+2i |
complex_multiply |
复数乘法 | (3+4i) × (1+2i) = -5+10i |
complex_divide |
复数除法 | (3+4i) ÷ (1+2i) = 2.2-0.4i |
complex_magnitude |
复数模长 | ` |
complex_conjugate |
复数共轭 | conj(3+4i) = 3-4i |
complex_argument |
复数幅角 | arg(3+4i) = 0.927 |
complex_polar |
极坐标形式 | 3+4i = 5∠0.927 |
🔢 9. 矩阵运算 (Matrix Operations)
| 工具名 | 描述 | 示例 |
|---|---|---|
matrix_add |
矩阵加法 | [[1,2],[3,4]] + [[5,6],[7,8]] |
matrix_subtract |
矩阵减法 | [[1,2],[3,4]] - [[5,6],[7,8]] |
matrix_multiply |
矩阵乘法 | [[1,2],[3,4]] × [[5,6],[7,8]] |
matrix_determinant |
行列式 | det([[1,2],[3,4]]) = -2 |
matrix_transpose |
矩阵转置 | transpose([[1,2],[3,4]]) |
vector_dot_product |
向量点积 | [1,2,3] · [4,5,6] = 32 |
vector_magnitude |
向量模长 | ` |
📊 10. 数值分析 (Numerical Analysis)
| 工具名 | 描述 | 示例 |
|---|---|---|
numerical_integration |
数值积分 | 梯形法则、辛普森法则 |
numerical_derivative |
数值微分 | 数值求导 |
newton_method |
牛顿法求根 | 方程求根 |
bisection_method |
二分法求根 | 方程求根 |
lagrange_interpolation |
拉格朗日插值 | 插值计算 |
💰 11. 金融计算 (Financial)
| 工具名 | 描述 | 示例 |
|---|---|---|
compound_interest |
复利计算 | 投资收益计算 |
present_value_annuity |
年金现值 | 年金现值计算 |
future_value_annuity |
年金未来值 | 年金未来值计算 |
loan_payment |
贷款月供 | 等额本息月供 |
net_present_value |
净现值 | NPV计算 |
internal_rate_of_return |
内部收益率 | IRR计算 |
bond_price |
债券价格 | 债券定价 |
🔄 12. 单位转换 (Conversions)
| 工具名 | 描述 | 示例 ||--------|------|------|
| length_conversion | 长度转换 | 米、英尺、英寸互转 |
| weight_conversion | 重量转换 | 千克、磅、盎司互转 |
| temperature_conversion | 温度转换 | 摄氏度、华氏度、开尔文 |
| area_conversion | 面积转换 | 平方米、英亩等 |
| time_conversion | 时间转换 | 秒、分钟、小时等 |
📐 13. 几何计算 (Geometry)
| 工具名 | 描述 | 示例 |
|---|---|---|
circle_area |
圆形面积 | π × r² |
rectangle_area |
矩形面积 | length × width |
triangle_area |
三角形面积 | ½ × base × height |
sphere_volume |
球体体积 | ⁴⁄₃ × π × r³ |
cylinder_volume |
圆柱体积 | π × r² × h |
distance_between_points |
点距离 | 两点间距离计算 |
💡 提示: 每个工具都包含完整的参数验证、错误处理和详细的使用说明。使用 MCP 协议的
tools/list方法可以获取所有工具的完整定义。
📡 MCP 协议使用
连接服务器
服务器通过标准输入/输出 (stdio) 进行通信,支持 JSON-RPC 2.0 协议。
获取工具列表
json
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list"
}
🛠️ 技术栈
- TypeScript - 主要开发语言,提供类型安全
- @modelcontextprotocol/sdk - MCP 协议实现
- Zod - 运行时类型验证和输入校验
- Node.js - 运行环境
依赖版本
- Node.js >= 16.0.0
- TypeScript >= 5.0.0
- @modelcontextprotocol/sdk ^1.17.4
- Zod ^3.25.76
📁 项目结构
text
mcp-calculator/
├── src/ # 源代码目录
│ ├── index.ts # 主服务器文件
│ ├── types.ts # 类型定义文件
│ └── modules/ # 数学模块目录
│ ├── basicMath.ts # 基础数学运算
│ ├── rootOperations.ts # 根式运算
│ ├── trigonometry.ts # 三角函数
│ ├── logarithm.ts # 对数函数
│ ├── statistics.ts # 统计学函数
│ ├── combinatorics.ts # 组合数学
│ ├── numberTheory.ts # 数论函数
│ ├── complex.ts # 复数运算
│ ├── matrix.ts # 矩阵运算
│ ├── numerical.ts # 数值分析
│ ├── financial.ts # 金融计算
│ ├── conversion.ts # 单位转换
│ └── geometry.ts # 几何计算
├── tests/ # 测试文件目录
│ ├── unit/ # 单元测试
│ │ ├── basicMath.test.ts
│ │ ├── rootOperations.test.ts
│ │ ├── trigonometry.test.ts
│ │ ├── logarithm.test.ts
│ │ ├── statistics.test.ts
│ │ ├── combinatorics.test.ts
│ │ ├── numberTheory.test.ts
│ │ ├── complex.test.ts
│ │ ├── matrix.test.ts
│ │ ├── numerical.test.ts
│ │ ├── financial.test.ts
│ │ ├── conversion.test.ts
│ │ └── geometry.test.ts
│ ├── integration/ # 集成测试
│ ├── performance/ # 性能测试
│ ├── jest.config.cjs # Jest 配置文件
│ ├── setup.ts # 测试环境设置
│ ├── coverage/ # 测试覆盖率报告
│ └── README.md # 测试文档
├── build/ # 编译输出目录
├── package.json # 项目配置和依赖
├── package-lock.json # 锁定依赖版本
├── tsconfig.json # TypeScript 编译配置
├── .gitignore # Git 忽略文件配置
├── LICENSE # MIT 许可证
└── README.md # 项目说明文档
📜 开发脚本
构建和运行- npm run build - 编译 TypeScript 代码
npm start- 构建并启动服务器npm run dev- 开发模式(监听文件变化自动重编译)
🤝 贡献
欢迎提交 Issue 和 Pull Request!
开发流程
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
代码规范
- 使用 TypeScript 进行开发
- 遵循现有的代码风格
- 为新功能添加相应的测试
- 更新文档说明
📄 许可证
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情
📋 版本信息
当前版本:v1.0.1
版本历史
- v1.0.1 - 初始发布版本
- 支持19个数学运算工具
- 完整的错误处理机制
- 100%测试覆盖率
- npm包发布
🔗 相关链接
- npm 包: mcp-calculator
- GitHub 仓库: mcp-calculator
- Model Context Protocol 官方文档
- MCP TypeScript SDK
- Zod 验证库
📊 功能统计
- 100+ 个数学工具
- 13 个专业数学模块
- 266 个测试用例
- 14 个测试套件
- 100% 测试覆盖率
- 100% 测试通过率
- 完整 的错误处理机制
- TypeScript 类型安全
- 模块化设计 架构
🚀 性能特性
- 轻量级: 编译后体积小,启动快速
- 内存高效: 低内存占用,适合长期运行
- 类型安全: 完整的 TypeScript 类型定义
- 错误恢复: 单个计算错误不影响服务器运行
📚 API 参考
模块分类
| 模块 | 工具数量 | 主要功能 |
|---|---|---|
| 基础数学 | 6 | 加减乘除、求余、幂运算 |
| 根式运算 | 4 | 平方根、立方根、n次方根、绝对值 |
| 三角函数 | 8 | 基本三角函数、反三角函数、双曲函数 |
| 对数函数 | 4 | 自然对数、常用对数、任意底数对数、指数函数 |
| 统计学 | 10 | 平均值、中位数、标准差、方差等 |
| 组合数学 | 4 | 阶乘、排列组合、斐波那契、卡塔兰数 |
| 数论 | 8 | GCD、LCM、素数判断、质因数分解等 |
| 复数运算 | 8 | 复数四则运算、模长、共轭、极坐标 |
| 矩阵运算 | 7 | 矩阵运算、行列式、逆矩阵、向量运算 |
| 数值分析 | 16 | 数值积分、微分、求根、插值 |
| 金融计算 | 7 | 复利、年金、贷款、NPV、IRR、债券 |
| 单位转换 | 5 | 长度、重量、温度、面积、时间转换 |
| 几何计算 | 6 | 平面几何、立体几何、坐标几何 |
错误类型
| 错误类型 | 触发条件 | 示例 |
|---|---|---|
| 除零错误 | 除数为0 | divide(10, 0) |
| 数学域错误 | 负数开偶次方根 | sqrt(-4) |
| 范围错误 | 反三角函数输入超出[-1,1] | asin(2) |
| 参数错误 | 对数函数输入非正数 | ln(-1) |
返回格式
所有工具调用都返回统一的格式:
typescript
interface ToolResult {
content: [{
type: "text";
text: string;
}];
isError?: boolean;
}