计算器

shimingy/calculator
Hosted
9 Stars 5.4k 次浏览 更新于 2026-08-23

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 计算器服务器

npm version

TypeScript
Node.js

一个功能完整的基于 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!

开发流程

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启 Pull Request

代码规范

  • 使用 TypeScript 进行开发
  • 遵循现有的代码风格
  • 为新功能添加相应的测试
  • 更新文档说明

📄 许可证

本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情

📋 版本信息

当前版本:v1.0.1

版本历史

  • v1.0.1 - 初始发布版本
    • 支持19个数学运算工具
    • 完整的错误处理机制
    • 100%测试覆盖率
    • npm包发布

🔗 相关链接

📊 功能统计

  • 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;
}

相关 MCP 服务