返回市场
临床试验gov-mcp服务器

临床试验gov-mcp服务器

作者:cyanheads31 星标更新:2025-10-21

项目介绍

技术文档摘要

<div align="center"> <h1>clinicaltrialsgov-mcp-server</h1> <p><b>ClinicalTrials.gov 模型上下文协议(MCP)服务器,提供程序化搜索、检索、比较、分析和查找符合条件的临床试验的工具。构建时考虑了性能和可扩展性,并支持无服务器部署(Cloudflare Workers)。</b></p> </div> <div align="center">

版本 MCP 规范 MCP SDK 许可证 状态 TypeScript Bun 代码覆盖率

</div>

🛠️ 工具概述

此服务器提供了五个强大的工具,用于访问和分析来自ClinicalTrials.gov的临床试验数据:

工具名称描述
clinicaltrials_search_studies使用查询词、过滤器、分页和排序搜索临床研究。现在包括地理过滤。
clinicaltrials_get_study根据NCT ID获取一个或多个临床研究,返回完整数据或简洁摘要。
clinicaltrials_analyze_trends对多达5000个研究进行统计分析,新增按年月的时间序列分析。
clinicaltrials_compare_studies对2-5个临床研究进行详细对比,突出共同点和差异。
clinicaltrials_find_eligible_studies匹配患者资料以找到符合条件的临床试验,通过年龄、性别、条件和地点进行筛选。

clinicaltrials_search_studies

使用自由文本查询和高级过滤器搜索和发现临床试验。

关键特性:

  • 跨所有研究字段(条件、干预措施、赞助商、标题)进行自由文本搜索
  • 使用ClinicalTrials.gov官方过滤语法进行高级过滤
  • 支持大型结果集的分页(每页最多200项)
  • 按招募人数、更新日期或其他字段排序
  • 返回包含NCT ID、标题和招募状态的简洁摘要

示例用例:

  • "查找当前正在招募的第3阶段糖尿病研究"
  • "显示美国的癌症免疫疗法试验"
  • "按规模排序列出制药公司的研究"

📖 查看详细示例 →


clinicaltrials_get_study

根据NCT ID获取特定临床试验的详细信息。

关键特性:

  • 获取单个或多个研究(一次最多5个)
  • 可选择完整数据(完整的协议、结果、文件)或简洁摘要
  • 完整研究数据包括:协议部分、结果、不良事件、结果测量、入选标准、地点等
  • 自动处理无效或不存在的NCT ID错误
  • 在获取多个研究时报告部分成功

示例用例:

  • "获取研究NCT03372603的全部详情"
  • "显示这三个研究的摘要:NCT12345678, NCT87654321, NCT11223344"
  • "NCT04280783的结果和不良事件是什么?"

📖 查看详细示例 →


clinicaltrials_analyze_trends

对数千个临床试验进行统计分析。

关键特性:

  • 每次分析最多聚合5,000个研究
  • 多种分析类型:状态分布、地理分布、赞助商类型、试验阶段
  • 在单个请求中组合多种分析类型
  • 高级过滤以专注于特定子集的分析
  • 返回计数、百分比和顶级类别

示例用例:

  • "所有COVID-19疫苗第3阶段试验的状态分布是什么?"
  • "哪些国家拥有最多的阿尔茨海默病研究?"
  • "展示癌症免疫疗法试验的阶段分布和赞助商类型"

📖 查看详细示例 →


clinicaltrials_compare_studies

对比多个研究以识别关键相似性和差异。

关键特性:

  • 通过NCT ID对2-5个研究进行并排比较
  • 提取并对比入选标准、设计、干预措施、结果、赞助商等
  • 生成共同点和差异的总结
  • 如果某些研究无法获取,则优雅地处理部分失败
  • 高度可配置,专注于感兴趣的特定领域

示例用例:

  • "比较NCT04516746和NCT04516759的研究设计和入选标准"
  • "这些领先的阿尔茨海默病试验的主要干预措施和结果有何不同?"
  • "展示这些竞争研究的赞助商和地点数据的并排对比"

📖 查看详细示例 →


clinicaltrials_find_eligible_studies

基于患者的特定医疗档案和人口统计数据找到相关的临床试验。

关键特性:

  • 使用年龄、性别和医疗条件列表匹配患者
  • 通过位置(国家、州、城市)筛选研究,以找到附近的试验
  • 根据患者与研究标准的匹配程度进行排名
  • 提供患者为何可能是研究潜在匹配的清晰摘要

示例用例:

  • "在加拿大寻找正在招募的偏头痛研究,针对35岁的女性"
  • "对于患有2型糖尿病和高血压的68岁男性,是否有任何本地临床试验?"
  • "在加利福尼亚州寻找适合25岁健康志愿者的研究"

📖 查看详细示例 →

✨ 特性

此服务器基于mcp-ts-template,继承其丰富的功能集:

  • 声明式工具:在单一自包含文件中定义代理能力。框架负责注册、验证和执行。
  • 健壮的错误处理:统一的McpError系统确保一致、结构化的错误响应。
  • 可插拔的身份验证:通过零烦恼支持nonejwtoauth模式来保护您的服务器。
  • 抽象存储:交换存储后端(in-memoryfilesystemSupabaseCloudflare KV/R2),无需更改业务逻辑。
  • 全栈可观测性:通过结构化日志(Pino)和可选的自动仪器OpenTelemetry获得深入洞察。
  • 依赖注入:使用tsyringe构建干净、解耦且易于测试的架构。
  • 边缘就绪:编写一次代码,可以在本地机器或Cloudflare Workers边缘无缝运行。

此外,针对ClinicalTrials.gov的专用功能:

  • 官方API集成:类型安全、全面访问ClinicalTrials.gov v2 API。
  • 高级搜索与分析:用于复杂查询、过滤和试验数据统计聚合的工具。
  • 优化的数据处理:自动清理和简化API响应,以便高效代理消费。

🚀 快速开始

MCP客户端设置/配置

将以下内容添加到您的MCP客户端配置文件(例如,cline_mcp_settings.json)中。

{
  "mcpServers": {
    "clinicaltrialsgov-mcp-server": {
      "type": "stdio",
      "command": "bunx",
      "args": ["clinicaltrialsgov-mcp-server@latest"],
      "env": {
        "MCP_TRANSPORT_TYPE": "stdio",
        "MCP_LOG_LEVEL": "info"
      }
    }
  }
}

或者对于流式HTTP:

MCP_TRANSPORT_TYPE=http
MCP_HTTP_PORT=3015

先决条件

安装

  1. 克隆仓库:
git clone https://github.com/cyanheads/clinicaltrialsgov-mcp-server.git
  1. 导航至目录:
cd clinicaltrialsgov-mcp-server
  1. 安装依赖:
bun install

🛠️ 核心能力:ClinicalTrials.gov 工具

此服务器装备AI代理以专门工具与ClinicalTrials.gov数据库交互。

⚙️ 配置

所有配置都在启动时集中解析和验证于src/config/index.ts.env文件中的关键环境变量包括:

变量描述默认值
MCP_TRANSPORT_TYPE使用的传输方式:stdiohttphttp
MCP_HTTP_PORTHTTP服务器的端口。3017
MCP_AUTH_MODE认证模式:nonejwtoauthnone
STORAGE_PROVIDER_TYPE存储后端:in-memoryfilesystemsupabasecloudflare-kvr2in-memory
OTEL_ENABLED设置为true启用OpenTelemetry。false
LOG_LEVEL日志的最低级别(debuginfowarnerror)。info
MCP_AUTH_SECRET_KEYjwt认证所需。 32个字符以上的密钥。(none)
OAUTH_ISSUER_URLoauth认证所需。 OIDC提供商的URL。(none)

▶️ 运行服务器

本地开发

  • 构建并运行生产版本:

    # 一次性构建
    bun rebuild
    
    # 运行已构建的服务器
    bun start:http
    # 或
    bun start:stdio
    
  • 运行检查和测试:

    bun devcheck # 检查、格式化、类型检查等
    bun test # 运行测试套件
    

Cloudflare Workers

  1. 构建Worker捆绑包:
bun build:worker
  1. 使用Wrangler本地运行:
bun deploy:dev
  1. 部署到Cloudflare:
    bun deploy:prod
    

📂 项目结构

目录目的及内容
src/mcp-server/tools您的工具定义(*.tool.ts)。这是您添加新功能的地方。
src/mcp-server/resources您的资源定义(*.resource.ts)。这是您添加数据源的地方。
src/mcp-server/transportsHTTP和STDIO传输的实现,包括身份验证中间件。
src/storageStorageService抽象和所有存储提供者实现。
src/services与外部服务的集成(ClinicalTrials.gov、LLMs、语音)。
src/container依赖注入容器注册和令牌。
src/utils核心实用程序,用于日志记录、错误处理、性能和安全性。
src/config使用Zod解析和验证环境变量。
tests/单元和集成测试,镜像src/目录结构。

🧑‍💻 代理开发指南

当使用此服务器与AI代理时,请严格遵守本仓库中的**.clinerules**文件中的规则。关键原则包括:

  • 逻辑抛出,处理器捕获:在工具logic中不要使用try/catch。而是抛出一个McpError
  • 传递上下文:始终在调用堆栈中传递RequestContext对象,用于日志记录和跟踪。
  • 使用桶导出:仅在各自definitions目录内的index.ts桶文件中注册新的工具和资源。

🤝 贡献

欢迎提出问题和拉取请求!如果您计划贡献,请在提交PR前运行本地检查和测试。

bun run devcheck
bun test

📜 许可证

本项目采用Apache 2.0许可证。详情见LICENSE文件。