内容
# OathMCP
基于代理的 [模型上下文协议](https://modelcontextprotocol.io) 服务器,适用于 39 种已建立的临床计算器和结构化解释工具。OathMCP 为 AI 代理提供严格的输入和输出模式、每个值的单位处理、合理性检查、引用的证据资源和确定的计算路径,支持 stdio、stateless HTTP 和 Cloudflare Workers。
所包含的计算器是已文档化的临床仪器、公式和政策模型。OathMCP 是这些来源的实现,而不是新的临床研究,也不是对原始出版物、管理政策或本地协议的替代。
> **负责任的使用:** OathMCP 提供临床决策支持计算,而不是医疗建议、诊断或治疗。临床医生仍然负责选择适当的计算器,确认其人群和版本,检查输入和单位,在上下文中解释结果,并做出每个临床决策。有关完整的责任、部署、隐私、保修和责任限制声明,请参见 [负责任的使用](docs/RESPONSIBLE_USE.md)。
## 发布状态
版本 `0.1.0` 是计划中的第一个开源发布版本,尚未发布到 npm。目前,所有 39 个计算器档案和所有四个审查组都已获得 `scenario_verified` 状态,普通的验收、临床发布、传输、兼容性和软件包门控均已通过。
在 OathMCP 中,`scenario_verified` 具有精确的存储库含义:已实现的模型及其声明的人口、变体、输入、输出、警告、解释和排除与已审查的来源相关联,并通过引擎、完整的 MCP 工具和紧凑的 MCP 工具传递源派生的冻结案例。它并不意味着监管批准、保证适用于个别患者或消除临床医生酌情决定。
- [发布证明](validation/releases/0.1.0.yaml)
- [发布流程](docs/RELEASE.md)
- [变更日志](CHANGELOG.md)
## 快速入门
### 从源代码开始
需要 Node.js 22 或更高版本。
```bash
git clone https://github.com/OATH-md/OathMCP.git
cd OathMCP
npm ci
npm run check
npm run start:stdio
```
配置兼容的 MCP 客户端以运行内置的 stdio 服务器:
```json
{
"mcpServers": {
"oath": {
"command": "node",
"args": ["/absolute/path/to/OathMCP/dist/server/stdio.js"]
}
}
}
```
### npm 包
在首次注册发布后:
```bash
npx oath-mcp
```
```json
{
"mcpServers": {
"oath": {
"command": "npx",
"args": ["-y", "oath-mcp"]
}
}
}
```
## 远程部署
远程服务器是无状态的:每个请求都接收一个新的 MCP 服务器,并且不保留会话状态。客户端指向已部署的可流式 HTTP URL:
```json
{
"mcpServers": {
"oath": {
"url": "https://mcp.oath.md/mcp"
}
}
}
```
在本地运行 HTTP 传输:
```bash
npm run start:http # Node/Express on http://127.0.0.1:3000/mcp
npx wrangler dev # Cloudflare Workers development server on /mcp
```
Node 服务器默认绑定到 `127.0.0.1`。仅当部署边界有意时,才设置 `HOST` 和 `PORT`。浏览器客户端必须在其确切的源中具有逗号分隔的允许列表:
```bash
OATH_ALLOWED_ORIGINS=https://app.example,https://review.example npm run start:http
```
不存在的 `Origin` 被非浏览器 MCP 客户端接受。`OATH_ALLOWED_ORIGINS` 中不存在的任何非空源都将收到 HTTP 403;不支持通配符源规则。使用与 Worker 部署相同的绑定。两种 HTTP 实现都接受带有 `OPTIONS /mcp` 的 CORS 预检,使用 `POST /mcp` 执行 MCP 请求,并为该路径上的其他方法返回 JSON 405,而不读取正文。
在审查 [负责任的使用](docs/RESPONSIBLE_USE.md)、安全和隐私边界以及发布检查清单后,再部署到 Workers。官方 Worker 使用 Cloudflare Workers Builds:推送到 `main` 会运行 `npm run check:deploy`,然后仅当该门控成功时,使用已检查的 `wrangler.jsonc` 部署。对于手动恢复部署:
```bash
npm run deploy:worker
```
官方文档可在 `https://mcp.oath.md/docs/` 访问,公共无身份验证端点为 `https://mcp.oath.md/mcp`。端点提供紧凑的四工具调度表面,应用每分钟 120 个请求的客户端限制,仅接受来自 `https://oath.md` 和 `https://mcp.oath.md` 的浏览器请求,并启用 10% 的采样 Worker 可观察性。应用程序代码不记录请求正文。服务元数据可在 `https://mcp.oath.md/health` 访问;完整通知可在 `https://mcp.oath.md/responsible-use` 和通过 MCP 资源 `oath://responsible-use` 访问。独立部署的 Blume 源位于 [文档站点目录](https://github.com/OATH-md/OathMCP/tree/main/docs-site)。请参见 [托管端点操作](docs/HOSTING.md)。
OathMCP 不需要患者标识符。接受受保护或个人健康信息的部署是部署者的责任,必须提供在其管辖范围内所需的身份验证、授权、日志记录、保留、合同和监管控制。
## MCP 接口
对于每个计算器,完整模式注册:
- `calculate_<id>` — 一个只读计算工具,返回结果模式 1.1;
- `evidence_<id>` — 一个位于 `calc://<id>/evidence` 的资源,包含引文、解释带、限制和安全说明;
- `interpret_<id>` — 对于 ABG、CSF 和乙型肝炎,一个提示,请求主机模型总结确定性发现,而不添加诊断或治疗计划。
四个代理调度工具位于目录之上:
- `find_calculator` 返回一个有界限的排名集以及 `matched`、`needs_clarification` 或 `no_match`;必须在计算之前解决澄清状态;
- `describe_calculator` 返回确切的模型、输入、输出、限制、版本和证据元数据;
- `calculate_panel` 在兼容的共享输入上运行所选计算器,具有隔离的每个计算器失败;拒绝重复的 ID 和未使用的共享或重写键,而不是静默忽略;
- `calculate` 以与直接工具相同的临床契约调度一个计算器在紧凑模式下。
设置 `OATH_MCP_MODE=compact` 以仅公开四个调度工具,同时保留所有证据资源。完整模式是兼容性默认值。
分析输入接受文档中规范单位的裸数值或显式数量:
```json
{
"creatinine": {
"value": 106,
"unit": "umol/L"
}
}
```
裸值始终使用字段的声明规范单位。没有全局 US/SI 模式。
## 计算器目录
| id | calculator | 解释提示 |
|---|---|:---:|
| `aa_gradient` | 肺泡-动脉氧梯度 | |
| `abg` | ABG/VBG 酸碱发现 | ✓ |
| `anion_gap` | 带白蛋白校正的阴离子间隙 | |
| `apgar` | APGAR 评分 | |
| `bmi` | 体质指数 | |
| `bsa` | 体表面积,Mosteller | |
| `bsa_dubois` | 体表面积,DuBois | |
| `carboplatin_auc` | 卡铂剂量,Calvert | |
| `chadsvasc` | CHA₂DS₂-VASc 评分 | |
| `chemo_dose_bsa` | 基于 BSA 的化疗剂量 | |
| `child_pugh` | Child-Pugh 评分 | |
| `corrected_calcium` | 校正钙,Payne | |
| `creatinine_clearance` | 肌酐清除率,Cockcroft-Gault | |
| `csf` | CSF 发现 | ✓ |
| `eos` | 新生儿早期脓毒症 | |
| `free_water_deficit` | 高钠血症中的自由水缺乏 | |
| `gad7` | GAD-7 | |
| `gcs` | 格拉斯哥昏迷量表 | |
| `gfr` | 估计肾小球滤过率 | |
| `gir` | 葡萄糖输注率 | |
| `grace` | GRACE 入院后六个月死亡率 | |
| `hepb` | 乙型肝炎三联发现 | ✓ |
| `ibw` | 理想体重,Devine | |
| `ich_volume` | 脑内出血体积,ABC/2 | |
| `kdpi` | 肾脏捐献者概况指数 | |
| `map` | 平均动脉压 | |
| `meld` | MELD 3.0 | |
| `mews` | 修改后的早期警告评分 | |
| `morse_fall_scale` | Morse 跌倒量表 | |
| `neonatal_measurements` | 新生儿测量估计 | |
| `nihss` | NIH 中风量表 | |
| `oxygenation_index` | 氧合指数和氧饱和度指数 | |
| `pews` | 布莱顿/莫纳甘儿童早期警告评分 | |
| `qsofa` | 快速序贯器官衰竭评估 | |
| `r_factor` | 肝损伤的 R 因子 | |
| `ranson` | Ranson 标准 | |
| `sodium_deficit` | 低钠血症中的钠缺乏 | |
| `timi` | UA/NSTEMI 的 TIMI 风险评分 | |
| `wells_dvt` | 修改后的两级 Wells DVT 评分 | |
## 架构和保证
每个实时计算器由三个审查的工件组成:
1. `specs/<id>.yaml` 定义严格的运行时和 MCP 契约;
2. `src/compute/<id>.ts` 提供对归一化输入的纯粹、精确类型计算;
3. `validation/calculators/<id>.yaml` 记录搜索、精确声明定位器、当前源和冻结参考、边缘和代理案例。
服务器从规格中派生其工具、提示和资源。运行时规格不包含测试装置。审查状态通过代码派生,而不是在 YAML 中编写,当所需的源、案例、证明或当前窗口不完整时,发布检查会失败。
保证账本验证 OathMCP 实现了声明的计算器版本和文档化的行为。它并不声称 OathMCP 发明或重新验证了底层临床仪器。
## 开发和贡献
```bash
npm run check # 完整的验收门控
npm run check:clinical-release # 源、场景、当前性和证明门控
npm run new:calculator -- --id example --archetype formula
npm run check:calculator -- --id example
npm run promote:calculator -- --id example
npm run lint:specs
npm run typecheck
npm run test
npm run build
```
请参阅 [贡献](CONTRIBUTING.md)、[计算器创作指南](docs/AUTHORING.md) 和 [规格房屋风格](docs/HOUSE_STYLE.md)。通过 [安全政策](SECURITY.md) 报告安全或患者安全问题,永远不要在问题、测试或示例中包含患者数据。
## 文档
- [负责任的使用和责任分配](docs/RESPONSIBLE_USE.md)
- [计算器创作和推广](docs/AUTHORING.md)
- [规格房屋风格](docs/HOUSE_STYLE.md)
- [临床保证账本](validation/README.md)
- [可复制的源审查协议](validation/SEARCH_PROTOCOL.md)
- [发布流程](docs/RELEASE.md)
- [安全政策](SECURITY.md)
- [变更日志](CHANGELOG.md)
## 许可证
OathMCP 在 [Apache License 2.0](LICENSE) 下可用。版权和归属信息在 [NOTICE](NOTICE) 中提供。许可证管理软件的使用、修改和分发;它不会取代 [负责任的使用](docs/RESPONSIBLE_USE.md) 中的临床和操作边界。