已成功开发一个基于 ClinicalTrials.gov API v2 的 Model Context Protocol (MCP) 服务,满足对临床试验查询的需求。
- 服务名称: clinical-trials-mcp
- 版本: 1.0.0
- 协议: Model Context Protocol (MCP)
- 通信方式: Stdio Transport
文件位置: src/index.js
完整封装了 ClinicalTrials.gov API v2 的调用,支持:
- 多条件搜索(关键词、疾病、地理位置、时间范围)
- 地理坐标查询
- 试验详情获取
- 分页支持
- 错误处理
文件位置: src/clinical-trials-client.js
功能: 根据多种条件搜索临床试验
支持的查询条件:
keywords: 关键词(如 KRAS-12D、PD-1)condition: 疾病类型(如胰腺癌、Pancreatic Cancer)country: 国家(支持中英文)city: 城市months: 时间范围(过去 N 个月)status: 招募状态pageSize: 分页大小pageToken: 分页令牌
功能: 获取指定 NCT 编号的临床试验详细信息
参数:
nctId: NCT 编号(必需)
功能: 根据地理坐标搜索附近的临床试验
参数:
latitude: 纬度(必需)longitude: 经度(必需)radius: 搜索半径(英里)condition: 疾病类型(可选)keywords: 关键词(可选)
-
根据问题输入的关键词查询 ✓
- 支持 KRAS-12D + 癌症种类 + 国家的组合查询
- 示例:查询中国的 KRAS G12D 胰腺癌临床试验
-
时间范围过滤 ✓
- 支持查询过去 N 个月的临床试验
- 基于 LastUpdatePostDate 字段过滤
-
地理位置查询 ✓
- 支持国家、城市查询
- 支持地理坐标 + 半径查询
- 国家查询通过 AREA[LocationCountry] 实现
- 城市查询通过 SEARCH[Location] 操作符确保精确匹配
-
输出内容 ✓
- 默认输出:NCT编号 + 标题 + 状态 + 疾病 + 地点等
- 详细输出:完整的试验信息,包括入选标准、结果指标、联系方式等
严格按照 ClinicalTrials.gov API v2 规范实现:
- 使用正确的查询操作符(AREA、RANGE、SEARCH、DISTANCE 等)
- 遵循 API 的查询表达式语法
- 正确处理分页和字段选择
- 实现了错误处理和速率限制建议
{
"@modelcontextprotocol/sdk": "^1.22.0",
"axios": "^1.13.2",
"dotenv": "^17.2.3",
"zod": "^3.25.76"
}clinical_trials_mcp/
├── src/
│ ├── index.js # MCP 服务器主入口
│ ├── clinical-trials-client.js # API 客户端
│ └── test.js # 测试脚本
├── package.json
├── README.md # 使用说明
├── USAGE_EXAMPLES.md # 详细使用示例
├── PROJECT_SUMMARY.md # 项目总结(本文件)
├── plan.md # 原始需求文档
├── query-instruction.md # API 查询规范
└── query_schema.json # API 数据结构
✅ 通过 - 成功找到 2 个符合条件的临床试验
1. NCT06586515: MOONRAY-01, LY3962673 研究
- 状态: RECRUITING
- 地点: Beijing, Shanghai, Harbin (China)
2. NCT06770452: HRS-4642 联合化疗研究
- 状态: RECRUITING
- 地点: Hangzhou (China)
✅ 通过 - 成功查询北京的癌症临床试验,找到 4951 个结果
✅ 通过 - 成功获取完整的试验详细信息,包括:
- 基本信息
- 入选标准
- 干预措施
- 研究设计
- 联系方式
- 地点详情
npm installnpm startnpm test在 Claude Desktop 配置中添加:
{
"mcpServers": {
"clinical-trials": {
"command": "node",
"args": ["/path/to/clinical_trials_mcp/src/index.js"]
}
}
}-
智能查询构建
- 自动组合多个查询条件
- 使用 SEARCH 操作符确保地理位置准确匹配
- 支持时间范围计算
-
灵活的地理查询
- 支持国家+城市组合
- 支持地理坐标半径查询
- 中英文国家/城市名称支持
-
完整的数据格式化
- 结构化的 JSON 输出
- 清晰的字段映射
- 易于解析和展示
-
错误处理
- 友好的错误提示
- HTTP 状态码处理
- 网络超时处理
- 速率限制: 约 50 请求/分钟
- 建议: 实现缓存机制以减少重复请求
- 分页: 大结果集使用分页(pageSize 最大 100)
- 查询优化: 使用精确的搜索条件以获得更相关的结果
- 缓存机制: 实现查询结果缓存以提高性能
- 批量查询: 支持批量 NCT ID 查询
- 导出功能: 支持导出为 CSV、Excel 等格式
- 中文翻译: 自动翻译英文结果为中文
- 高级过滤: 支持更多自定义过滤条件
- 数据分析: 提供统计和趋势分析功能
README.md: 基本使用说明和常见问题USAGE_EXAMPLES.md: 详细的使用示例和场景query-instruction.md: ClinicalTrials API 查询规范query_schema.json: API 数据结构定义
✅ 项目已完成所有核心功能
本项目成功实现了一个功能完整的 ClinicalTrials.gov MCP 服务,完全满足 plan.md 中的所有要求:
- ✅ 支持关键词、疾病、地理位置的组合查询
- ✅ 支持时间范围过滤
- ✅ 支持通过城市和坐标查询地理位置
- ✅ 提供结构化的输出格式
- ✅ 严格遵循 ClinicalTrials.gov API 规范
服务已经过测试验证,可以直接使用。