临床试验数据服务

一个提供ClinicalTrials.gov API访问的Model Context Protocol (MCP)服务器,使研究人员、临床医生和开发人员能够以编程方式访问实时临床试验数据。

  • by BACH-AI-Tools
  • JavaScript
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 BACH-AI-Tools/ClinicalTrials-MCP-Server

使用说明

临床试验MCP服务器

一个全面的模型上下文协议(MCP)服务器,提供对ClinicalTrials.gov API的访问,使研究人员、临床医生和开发人员能够以编程方式访问实时临床试验数据。

由……开发 bachstudio(巴赫工作室)

🚀 使用 npx 快速入门(推荐)

无需安装!使用 npx 直接运行服务器:

{
  "mcpServers": {
    "clinical-trials": {
      "command": "npx",
      "args": ["-y", "bach-clinical-trials"]
    }
  }
}

保存此配置并重新启动您的MCP客户端 npx 该命令将自动从npm下载并运行最新版本。

包URLhttps://www.npmjs.com/package/bach-clinical-trials 的中文翻译是:“https://www.npmjs.com 上的 bach-clinical-trials 包”。不过,通常我们不会直接翻译网址,而是说明其含义或用途,比如“这是一个在 npmjs.com 上的 Bach 临床试验相关包的链接”。但按照您的要求,直接翻译网址部分如上所示


概述

临床试验MCP服务器通过18个专门的MCP工具,提供了ClinicalTrials.gov API v2.0.4的全部功能,使您能够在支持MCP的环境中直接搜索、分析和检索全球临床试验的详细信息。

特点/特性

核心搜索工具

  • 搜索研究 - 带有全面筛选条件(条件、干预措施、地点、阶段、状态、年龄、性别)的通用搜索
  • 获取学习详情 - 以NCT ID为标识的详细研究信息,包含完整元数据
  • 按条件搜索 - 以条件为中心的搜索,附带资格标准
  • 按位置搜索 - 基于地理位置的搜索,带距离半径过滤功能
  • 按赞助商搜索 - 基于组织和赞助商的搜索,并带有赞助商类型的筛选功能
  • 按干预措施搜索 - 以治疗、药物和干预为重点的搜索

专业搜索工具

  • 获取招聘研究资料 - 目前正在招募试验,提供有效的联系方式
  • 按日期范围搜索 - 按照研究开始和完成日期进行时间搜索
  • 获取带有结果的研究 - 已完成试验并发表结果
  • 搜索罕见病 - 针对罕见病和孤儿病的专项搜索
  • 获取儿童研究资料 - 针对儿童和青少年的专门儿科试验
  • 搜索国际研究 - 多国国际试验

高级分析工具

  • 获取相似研究 - 按条件、赞助商或阶段查找与参考NCT ID相似的研究
  • 按主要结果搜索 - 按主要结局指标和终点进行搜索
  • 按资格标准搜索 - 高级资格筛选,支持包含/排除关键词
  • 获取学习时间线 - 时间线分析:涵盖当前进行中、已完成及即将开展的研究
  • 获取试验统计数据 - 具有分组功能的聚合统计与分析

数据质量特性

  • 实时数据访问(周一至周五每日更新)
  • 使用正则表达式模式进行NCT ID验证
  • 全面的JSON Schema验证
  • 研究地点的地理坐标数据
  • 招募研究的联系信息
  • 强大的错误处理和超时保护

安装

先决条件

设置步骤

  1. 导航到您的MCP目录:

    cd ~/Documents/Claude/MCP  # or your preferred MCP directory
    
  2. 服务器已经构建并配置完毕:

    ls clinical-trials-server/
    # Should show: build/ src/ package.json tsconfig.json README.md
    
  3. 验证构建:

    cd clinical-trials-server
    ls build/
    # Should show: index.js (executable)
    

配置

将此添加到你的 claude_desktop_config.json 文件中:

  • macOS(苹果电脑操作系统): ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows(操作系统): %APPDATA%/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "clinical-trials": {
      "command": "node",
      "args": ["path/to/clinical-trials-server/build/index.js"],
      "autoApprove": [
        "search_studies",
        "get_study_details",
        "search_by_condition",
        "search_by_location",
        "get_recruiting_studies",
        "search_by_sponsor",
        "search_by_intervention",
        "get_trial_statistics"
      ]
    }
  }
}

注替换 path/to/clinical-trials-server 附上您服务器目录的绝对路径。

使用示例

搜索癌症试验

{
  "condition": "cancer",
  "phase": "PHASE3",
  "status": "RECRUITING",
  "pageSize": 10
}

获取详细的学习信息

{
  "nctId": "NCT05882279"
}

按地点查找试验

{
  "country": "United States",
  "city": "Boston",
  "distance": 50,
  "pageSize": 5
}

搜索儿童研究相关资料

{
  "condition": "diabetes",
  "ageRange": "CHILD",
  "recruitmentStatus": "RECRUITING"
}

获取带联系人的招聘试用机会

{
  "condition": "alzheimer",
  "location": "California",
  "pageSize": 5
}

查找相似研究

{
  "nctId": "NCT12345678",
  "similarityType": "CONDITION",
  "pageSize": 10
}

高级资格搜索

{
  "minAge": "18 Years",
  "maxAge": "65 Years",
  "sex": "ALL",
  "healthyVolunteers": false,
  "condition": "hypertension",
  "inclusionKeywords": "medication",
  "exclusionKeywords": "pregnant"
}

获取试验统计数据

{
  "groupBy": "phase",
  "filters": {
    "condition": "diabetes",
    "status": "RECRUITING"
  }
}

API 参考文档

搜索参数

公共参数:

  • pageSize - 结果数量(1-100,默认:10)
  • condition - 医学状况或疾病
  • phase - 研究阶段:第一阶段、第二阶段、第三阶段、第四阶段、不适用(或“无”)
  • status - 招聘状态:招聘中、尚未开始招聘、已完成等。

位置参数:

  • country - 国家名称
  • state - 州或省
  • city - 城市名称
  • distance - 搜索半径(英里)(1-500)

资格参数:

  • sex - 全部,女性,男性
  • age - 儿童,成人,老年人
  • minAge/maxAge - 年龄范围(例如,“18岁”,“65岁”)
  • healthyVolunteers - 健康志愿者接受情况的布尔值(或:健康志愿者是否接受的布尔标志)

日期参数:

  • startDateFrom/startDateTo - 学习开始日期范围(YYYY-MM-DD)
  • completionDateFrom/completionDateTo - 完成日期范围(YYYY-MM-DD)

响应格式

所有工具返回的都是结构化的JSON数据,包括:

  • 研究元数据(NCT编号、标题、状态、阶段、资助方)
  • 带有地理坐标的定位信息
  • 资格标准及联系方式
  • 时间线数据和关键日期
  • 全面的搜索标准文档

NCT ID 格式

所有NCT编号必须遵循以下格式: NCT######## (NCT后接8位数字)

错误处理

服务器包含针对以下内容的全面错误处理:

  • 网络问题30秒超时保护并带有重试逻辑
  • 无效参数带有描述性错误信息的JSON Schema验证
  • API错误正确的HTTP状态码处理和错误报告
  • 缺失数据优雅地处理可选字段和缺失信息
  • 速率限制内置请求限流和错误恢复功能

常见的错误响应包括:

{
  "error": "Clinical Trials API error: Invalid NCT ID format",
  "isError": true
}

发展

从源代码构建

# Install dependencies
npm install

# Build TypeScript to JavaScript
npm run build

# Development with watch mode
npm run watch

项目结构

clinical-trials-server/
├── src/
│   └── index.ts          # Main server implementation (all tools)
├── build/
│   └── index.js          # Compiled executable
├── package.json          # Dependencies and scripts
├── tsconfig.json         # TypeScript configuration
└── README.md            # This file

关键依赖项

  • @modelcontextprotocol/sdk - MCP服务器框架
  • axios API请求的HTTP客户端
  • 使用TypeScript确保类型安全和开发

数据来源

API终端点https://clinicaltrials.gov/api/v2 翻译为中文是:“https://临床试验.gov/应用程序接口/v2”。不过,通常我们不会直接翻译网址,而是保留原样,因为网址是国际通用的,且直接使用原网址在中文语境下更为常见和准确。如果非要给出一种“翻译”形式(尽管这不是常规做法),上述翻译即为一种表达方式。在实际应用中,我们更倾向于直接使用原网址 数据更新周一至周五(不包括联邦假日) 覆盖范围来自220多个国家的400,000多项研究 数据质量官方FDA/NIH注册数据库,信息经核实

故障排除

  1. 服务器连接问题:

    # Test server manually
    cd clinical-trials-server
    node build/index.js
    # Should show: "Clinical Trials MCP server running on stdio"
    
  2. 无效的NCT ID错误:

    • 确保NCT编号遵循格式:NCT########
    • 示例:NCT05882279 ✓,nct123 ✗(注:这里的✓和✗分别表示“正确”和“错误”,在中文语境中,可以理解为“有效”和“无效”或“符合要求”和“不符合要求”,具体根据上下文来判断。)
  3. 未返回结果:

    • 检查搜索条件 - 尝试使用更宽泛的关键词
    • 有些过滤器可能过于严格
    • 验证条件和干预措施的拼写
  4. 超时问题:

    • 服务器设有30秒超时保护
    • 大型结果集可能需要一些时间来处理
    • 减小页面大小以加快响应速度

临床研究用例

  • 患者招募查找针对特定病症的积极招募临床试验
  • 竞争分析研究由赞助方或干预措施所进行的类似研究
  • 选址确定新研究的最佳地点
  • 监管研究访问FDA批准的研究方案和结果
  • 学术研究分析临床试验趋势和统计数据
  • 患者护理帮助患者找到合适的治疗方案

合规与道德

此服务器提供访问ClinicalTrials.gov上公开可用的临床试验数据的权限。用户应:

  • 遵循临床研究的制度政策
  • 尊重患者隐私和保密性
  • 将数据用于合法的研究和医疗保健目的
  • 在出版物中引用ClinicalTrials.gov作为数据来源

许可证

MIT 许可证 - 详情请参见 LICENSE 文件


数据源ClinicalTrials.gov(网址:https://clinicaltrials.gov) API 文档https://clinicaltrials.gov/data-api/api 翻译为中文是:“https://临床试验.gov/数据接口/接口”。 但通常在实际应用中,我们可能会简化或调整表述以更符合中文语境,比如可以翻译为“https://临床试验数据库.gov/数据API/接口”或“https://临床试验数据.gov/API接口”,具体取决于上下文和使用场景。不过,直接翻译上述网址的结构,保持原网址的格式,可以是“https://临床试验.gov/数据-应用程序编程接口/应用程序编程接口” 服务器版本1.0.0 仓库https://github.com/BACH-AI-Tools/ClinicalTrials-MCP-Server 翻译为中文是:“https://github.com/BACH-AI-工具/ClinicalTrials-MCP-服务器”(但通常我们不会直接翻译网址中的内容,这里只是为了说明其含义)。更自然的表达可能是:“这是GitHub上的一个项目链接:BACH-AI-Tools的ClinicalTrials-MCP-Server服务器”或者简化为“GitHub上的BACH-AI-Tools/ClinicalTrials-MCP-Server项目”