@liujunb/calculator-service
v1.0.3
Published
MCP service for hospital numerical calculations (BMI, etc.)
Readme
calculator-service
一个基于 Model Context Protocol (MCP) 的医院临床计算服务。提供 BMI、eGFR、体表面积等 15 个常用临床计算工具,可与 Claude Desktop、VS Code 等 MCP 客户端集成。
支持中英文双语输出,默认中文,传 locale: "en" 参数即可切换到英文。
工具列表
所有工具均支持可选的 locale 参数("zh" | "en",默认 "zh"),用于切换输出语言。
人体测量与体成分
| 工具 | 说明 |
|------|------|
| calculate_bmi | 身体质量指数,中国成人参考标准 |
参数:
weight_kg(number, 必填) — 体重 (kg)height_cm(number, 必填) — 身高 (cm)
输出: BMI 值、中国成人分类(过轻/正常/超重/肥胖)
| 工具 | 说明 |
|------|------|
| calculate_bsa | 体表面积(Mosteller 公式) |
参数:
weight_kg(number, 必填) — 体重 (kg)height_cm(number, 必填) — 身高 (cm)
输出: 体表面积 (m²)
| 工具 | 说明 |
|------|------|
| calculate_ibw | 理想体重(Devine 公式) |
参数:
height_cm(number, 必填) — 身高 (cm)sex(enum:male|female, 必填) — 性别
输出: 理想体重 (kg)
| 工具 | 说明 |
|------|------|
| calculate_bmr | 基础代谢率(Mifflin-St Jeor)+ TDEE 分层估算 |
参数:
weight_kg(number, 必填) — 体重 (kg)height_cm(number, 必填) — 身高 (cm)age(number, 必填) — 年龄 (years)sex(enum:male|female, 必填) — 性别
输出: BMR (kcal/day) + 5 级 TDEE(静坐/轻度/中度/重度/极重度活动)
| 工具 | 说明 |
|------|------|
| calculate_whr | 腰臀比,中心性肥胖评估 |
参数:
waist_cm(number, 必填) — 腰围 (cm)hip_cm(number, 必填) — 臀围 (cm)sex(enum:male|female, 必填) — 性别
输出: 腰臀比 + 中心性肥胖评估
肾内科与电解质
| 工具 | 说明 |
|------|------|
| calculate_egfr | 肾小球滤过率(CKD-EPI 2021,去种族因子),支持 μmol/L 和 mg/dL |
参数:
creatinine(number, 必填) — 血清肌酐值creatinine_unit(enum:mgdl|umolL, 必填) — 肌酐单位age(number, 必填) — 年龄 (years)sex(enum:male|female, 必填) — 性别
输出: eGFR (mL/min/1.73m²) + CKD 分期(G1–G5)
| 工具 | 说明 |
|------|------|
| calculate_crcl | 肌酐清除率(Cockcroft-Gault),用于肾功能评估和药物剂量调整 |
参数:
age(number, 必填, 1–120) — 年龄 (years)weight_kg(number, 必填) — 体重 (kg)creatinine(number, 必填) — 血清肌酐值creatinine_unit(enum:mgdl|umolL, 必填) — 肌酐单位sex(enum:male|female, 必填) — 性别
输出: CrCl (mL/min)
| 工具 | 说明 |
|------|------|
| calculate_corrected_ca | 校正钙,低白蛋白血症时校正 |
参数:
calcium(number, 必填) — 血钙 (mmol/L)albumin(number, 必填) — 白蛋白 (g/L)
输出: 校正后血钙 (mmol/L) + 分类(低钙/正常/高钙血症)
| 工具 | 说明 |
|------|------|
| calculate_corrected_na | 校正血钠,高血糖时校正 |
参数:
sodium(number, 必填) — 测量血钠 (mmol/L)glucose(number, 必填) — 血糖值glucose_unit(enum:mmolL|mgdl, 可选, 默认mmolL) — 血糖单位
输出: 校正后血钠 (mmol/L)
| 工具 | 说明 |
|------|------|
| calculate_cap_product | 钙磷乘积,CKD 患者监测 |
参数:
calcium(number, 必填) — 血钙 (mmol/L)phosphorus(number, 必填) — 血磷 (mmol/L)
输出: 钙磷乘积 (mg²/dL²) + CKD 目标范围评估
心血管
| 工具 | 说明 |
|------|------|
| calculate_map | 平均动脉压,器官灌注压评估 |
参数:
sbp(number, 必填) — 收缩压 SBP (mmHg)dbp(number, 必填) — 舒张压 DBP (mmHg)
输出: MAP (mmHg) + 灌注状态评估
| 工具 | 说明 |
|------|------|
| calculate_qtc | 校正 QT 间期(Bazett + Fridericia 两种公式) |
参数:
qt_interval(number, 必填) — QT 间期 (ms)heart_rate(number, 必填) — 心率 (bpm)sex(enum:male|female, 必填) — 性别
输出: QTc-Bazett (ms)、QTc-Fridericia (ms) + 性别特异性风险分层
血气与酸碱平衡
| 工具 | 说明 |
|------|------|
| calculate_anion_gap | 阴离子间隙,代谢性酸中毒鉴别 |
参数:
sodium(number, 必填) — 血钠 Na⁺ (mmol/L)chloride(number, 必填) — 血氯 Cl⁻ (mmol/L)bicarbonate(number, 必填) — 碳酸氢根 HCO₃⁻ (mmol/L)
输出: 阴离子间隙 (mmol/L) + 分类(低/正常/高)
妇产科
| 工具 | 说明 |
|------|------|
| calculate_edd | 预产期和孕周推算(Nägele 公式),支持周期校正 |
参数:
lmp_date(string, 必填) — 末次月经日期 (YYYY-MM-DD)cycle_days(number, 可选, 默认 28) — 月经周期天数 (21–45)
输出: 预产期、当前孕周、已孕天数、距离预产期天数
换算
| 工具 | 说明 |
|------|------|
| convert_temperature | 摄氏度 ↔ 华氏度换算 |
参数:
value(number, 必填) — 温度值from_unit(enum:celsius|fahrenheit, 必填) — 输入单位
输出: 换算后的温度值
快速开始
npx 一键运行(免安装)
在 MCP 客户端配置中添加:
{
"mcpServers": {
"calculator-service": {
"command": "npx",
"args": ["-y", "@liujunb/calculator-service"]
}
}
}全局安装
npm install -g @liujunb/calculator-service
# 直接运行
calculator-service源码运行
git clone https://github.com/LiuJunb/calculator-service.git
cd calculator-service
npm install
npm run build
npm start使用示例
连接到 MCP 客户端后,即可调用工具:
{
"name": "calculate_bmi",
"arguments": {
"weight_kg": 70,
"height_cm": 175
}
}输出英文结果:
{
"name": "calculate_bmi",
"arguments": {
"weight_kg": 70,
"height_cm": 175,
"locale": "en"
}
}项目结构
src/
├── index.ts # 入口 — 创建 MCP server,注册所有工具
└── tools/
├── i18n.ts # 中英文辅助函数
├── index.ts # 工具注册聚合器
├── bmi.ts # 每个工具独立文件
├── bsa.ts
└── ... # 共 15 个工具
tests/
└── calculator.test.ts # 47 个单元测试开发
npm run build # 编译 TypeScript
npm test # 运行测试(vitest)
npm run test:watch # 测试监听模式环境要求
- Node.js >= 18
- MCP 兼容客户端(Claude Desktop 等)
发布流程
项目使用 semantic-release 自动发布。向 main 分支推送符合 Conventional Commits 规范的提交(如 feat:、fix:)会自动触发版本更新、npm 发布和 GitHub Release。
GitHub Actions 工作流配置在 .github/workflows/release.yml。
许可证
MIT
