计算器

otherdeveloper-tools

4.9k 查看 · 2026-07-07 更新

MCP 计算器服务器

npm version License: MIT 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
nthRootn次方根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阶乘、排列组合、斐波那契、卡塔兰数
数论8GCD、LCM、素数判断、质因数分解等
复数运算8复数四则运算、模长、共轭、极坐标
矩阵运算7矩阵运算、行列式、逆矩阵、向量运算
数值分析16数值积分、微分、求根、插值
金融计算7复利、年金、贷款、NPV、IRR、债券
单位转换5长度、重量、温度、面积、时间转换
几何计算6平面几何、立体几何、坐标几何

错误类型

错误类型触发条件示例
除零错误除数为0divide(10, 0)
数学域错误负数开偶次方根sqrt(-4)
范围错误反三角函数输入超出[-1,1]asin(2)
参数错误对数函数输入非正数ln(-1)

返回格式

所有工具调用都返回统一的格式:

typescript interface ToolResult { content: [{ type: "text"; text: string; }]; isError?: boolean; }

工具列表

  • add: 执行两个数字的加法运算

  • subtract: 执行两个数字的减法运算

  • multiply: 执行两个数字的乘法运算

  • divide: 执行两个数字的除法运算

  • modulo: 计算两个数的余数

  • power: 计算a的b次方

  • sqrt: 计算数字的平方根

  • abs: 计算数字的绝对值

  • cbrt: 计算数字的立方根

  • nthRoot: 计算数字的n次方根

  • sin: 计算角度的正弦值(输入为弧度)

  • cos: 计算角度的余弦值(输入为弧度)

  • tan: 计算角度的正切值(输入为弧度)

  • asin: 计算反正弦值(返回弧度)

  • acos: 计算反余弦值(返回弧度)

  • atan: 计算反正切值(返回弧度)

  • ln: 计算自然对数(以e为底)

  • log10: 计算以10为底的对数

  • log: 计算以指定底数的对数

服务配置

[{'mcpServers': {'calculator': {'args': ['mcp-calculator'], 'command': 'npx'}}}]

来源