ClinicalTrials.gov MCP Server 为AI智能体提供了直接访问官方ClinicalTrials.gov数据库的能力,能让大语言模型(LLMs)和AI智能体以编程方式搜索、检索和分析临床研究数据。该服务器基于 cyanheads/mcp-ts-template 构建,采用模块化架构,具备强大的错误处理、日志记录和安全功能。
ClinicalTrials.gov MCP Server 充当了一座桥梁,使理解模型上下文协议(MCP)的应用程序(MCP客户端),如高级AI助手(LLMs)、IDE扩展或自定义研究工具,能够直接且高效地与官方ClinicalTrials.gov数据库进行交互。借助该服务器,你的工具可以自动化临床研究工作流程、获取研究见解、将临床试验数据集成到AI驱动的研究中,以及支持监管和合规工作流程。
McpError),并自动记录日志。dotenv 加载环境变量,并通过 Zod 进行全面验证。zod 进行模式验证和自定义清理逻辑。AsyncLocalStorage 使用唯一请求 ID 跟踪和关联操作。Dockerfile,用于创建支持原生依赖的小型安全生产镜像。pageSize 和 pageToken 参数处理大型结果集。将以下内容添加到你的 MCP 客户端配置文件(例如 cline_mcp_settings.json)中。此配置使用 npx 运行服务器,如果包尚未安装,将自动进行安装:
{
"mcpServers": {
"clinicaltrialsgov-mcp-server": {
"command": "npx",
"args": ["clinicaltrialsgov-mcp-server"],
"env": {
"MCP_LOG_LEVEL": "info"
}
}
}
}
npm install clinicaltrialsgov-mcp-server
git clone https://github.com/cyanheads/clinicaltrialsgov-mcp-server.git
cd clinicaltrialsgov-mcp-server
npm install
npm run build
综合使用示例可在 目录中找到:
使用环境变量配置服务器。对于本地开发,可以在项目根目录的 .env 文件中设置这些变量,也可以直接在环境中设置。否则,你可以在 MCP 客户端配置中设置它们,如下所示:
| 属性 | 详情 |
|---|---|
MCP_TRANSPORT_TYPE |
传输机制:stdio 或 http,默认值为 stdio |
MCP_HTTP_PORT |
HTTP 服务器的端口(如果 MCP_TRANSPORT_TYPE=http),默认值为 3010 |
MCP_HTTP_HOST |
HTTP 服务器的主机地址(如果 MCP_TRANSPORT_TYPE=http),默认值为 127.0.0.1 |
MCP_ALLOWED_ORIGINS |
CORS 允许的源的逗号分隔列表(如果 MCP_TRANSPORT_TYPE=http),默认无 |
MCP_LOG_LEVEL |
日志记录级别(debug, info, notice, warning, error, crit, alert, emerg),默认值为 debug |
MCP_AUTH_MODE |
HTTP 身份验证模式:jwt 或 oauth,默认值为 jwt |
MCP_AUTH_SECRET_KEY |
jwt 身份验证所需的至少 32 个字符的密钥,默认无 |
CLINICALTRIALS_DATA_PATH |
缓存 ClinicalTrials.gov API 数据的目录,默认值为 data/ |
LOGS_DIR |
日志文件存储目录,默认值为 logs/ |
NODE_ENV |
运行时环境(development, production),默认值为 development |
代码库在 src/ 目录下遵循模块化结构:
src/
├── index.ts # 入口点:初始化并启动服务器
├── config/ # 配置加载(环境变量、包信息)
│ └── index.ts
├── mcp-server/ # 核心 MCP 服务器逻辑和功能注册
│ ├── server.ts # 服务器设置,功能注册
│ ├── transports/ # 传输处理(stdio, http)
│ └── tools/ # MCP 工具实现(每个工具一个子目录)
├── services/ # 外部服务集成
│ └── clinical-trials-gov/ # ClinicalTrials.gov API 客户端和类型
├── types-global/ # 共享 TypeScript 类型定义
└── utils/ # 通用实用函数(日志记录器、错误处理程序等)
如需详细的文件树,请运行 npm run tree 或查看 docs/tree.md。
ClinicalTrials.gov MCP Server 提供了一套全面的临床试验研究工具,可通过模型上下文协议调用:
| 工具名称 | 描述 | 关键参数 |
|---|---|---|
clinicaltrials_list_studies |
使用查询、过滤器和分页搜索临床试验研究 | query?, filter?, fields?, sort?, pageSize?, pageToken?, countTotal? |
clinicaltrials_get_study |
通过 NCT ID 获取一个或多个研究的详细信息 | nctIds, summaryOnly?, markupFormat?, fields? |
clinicaltrials_analyze_trends |
对一组研究进行统计分析 | analysisType, query?, filter? |
注意:所有工具都支持全面的错误处理,并返回结构化的 JSON 响应。
# 构建项目(将 TS 编译为 JS 并生成可执行文件)
npm run build
# 使用 MCP 检查器工具在本地测试服务器(stdio 传输)
npm run inspector
# 使用 MCP 检查器工具在本地测试服务器(http 传输)
npm run inspector:http
# 清理构建产物
npm run clean
# 生成用于文档的文件树表示
npm run tree
# 清理构建产物,然后重建项目
npm run rebuild
# 使用 Prettier 格式化代码
npm run format
# 使用 stdio 启动服务器(默认)
npm start
# 或显式指定:
npm run start:stdio
# 使用 HTTP 传输启动服务器
npm run start:http
该服务器为你的 AI 提供了与 ClinicalTrials.gov 数据库交互的专业工具:
| 工具名称 | 描述 | 关键特性 |
|---|---|---|
| 使用查询词和过滤器的组合搜索临床试验研究。(参见 示例) | - query:按条件、术语、位置、标题、干预措施、结果、赞助商或 ID 进行搜索。- filter:按 NCT ID、研究状态、地理距离或高级 Essie 表达式细化结果。- pagination:使用 pageSize 和 pageToken 控制结果集。- fields:指定返回哪些数据字段以提高效率。 |
|
| 通过 NCT ID 获取一个或多个临床试验研究的详细信息。(参见 示例) | - nctIds:使用唯一标识符(例如 "NCT03934567")获取最多 5 项研究。- summaryOnly:返回压缩摘要而不是完整数据。- fields:选择要检索的特定字段。- markupFormat:选择 markdown 或 legacy 作为格式化内容。 |
|
| 对一组研究进行统计分析,按状态、国家、赞助商或阶段汇总数据。 | - analysisType:选择汇总方法(countByStatus, countByCountry 等)。- query & filter:使用与 list_studies 相同强大的搜索参数定义分析数据集。- 每次请求最多分析 5000 项研究。 |
本项目采用 Apache License 2.0 许可协议,详情请参阅 LICENSE 文件。