内容
# chictr-mcp
一款提供克劳德访问中国临床试验注册中心(ChiCTR)—— 全球最大的非英语临床试验数据库,拥有10万+注册试验的MCP服务器。
搜索试验,提取34+结构化字段,与ClinicalTrials.gov进行交叉引用,并将中文字段翻译成英文——所有这些都可以在克劳德桌面或任何MCP客户端上完成。
## 快速入门
```bash
git clone https://github.com/JAGAN666/chictr-mcp.git
cd chictr-mcp
npm install
npm run build
```
就这样。服务器可以直接使用WHO ICTRP(基本使用不需要API密钥)。
### 测试它
```bash
npm run test:scrape
```
您应该会看到**34+个字段**已为胰腺癌试验提取。
## 添加到克劳德桌面
编辑 `~/Library/Application Support/Claude/claude_desktop_config.json`:
```json
{
"mcpServers": {
"chictr": {
"command": "node",
"args": ["/full/path/to/chictr-mcp/dist/index.js"]
}
}
}
```
重启克劳德桌面。现在,您可以向克劳德询问以下问题:
- “在ChiCTR中搜索与胰腺癌相关的试验”
- “获取试验ChiCTR2500102611的详细信息”
- “查找2024年注册的所有肺癌试验”
## 两种操作模式
### 基本模式(默认,无配置)
使用 **WHO ICTRP** —— ChiCTR数据的WHO镜像。适用于纯HTTP,无需浏览器自动化。每个试验返回30+个字段。
### 完整模式(使用FlareSolverr)
通过FlareSolverr直接连接到 **chictr.org.cn** 以获取最完整的数据(34+个字段,中文标题,尚未同步到WHO的新试验)。如果FlareSolverr不可用,则自动回落到WHO ICTRP。
```bash
# 一次性设置:启动FlareSolverr
docker run -d --name flaresolverr -p 8191:8191 ghcr.io/flaresolverr/flaresolverr:latest
```
MCP服务器在 `http://localhost:8191/v1` 自动检测FlareSolverr —— 无需配置更改。
## 可选:翻译
要将中文试验字段翻译成英文,请从 [build.nvidia.com](https://build.nvidia.com/) 获取免费的NVIDIA API密钥,并将其添加到克劳德桌面配置中:
```json
{
"mcpServers": {
"chictr": {
"command": "node",
"args": ["/full/path/to/chictr-mcp/dist/index.js"],
"env": {
"NVIDIA_API_KEY": "nvapi-your-key-here"
}
}
}
}
```
## MCP工具
### search_chictr_trials
按关键词搜索中文临床试验。
```json
{ "keyword": "胃癌", "max_results": 10, "year": 2024 }
```
返回:试验ID、标题、研究类型、注册日期、机构、来源网址。
### get_trial_detail
获取单个试验的完整结构化数据。
```json
{ "registration_number": "ChiCTR2500102611", "translate": true, "verify": true }
```
返回34+个字段:标题、阶段、状态、条件、干预、赞助商、PI联系方式、注册、结果、纳入/排除标准、伦理批准、盲法、试验地点等。每个字段都包含一个`source_url`用于引用。
### bulk_ingest_chictr
并行获取多个试验,并进行质量评分。为RAG流水线返回Qdrant-ready文档。
```json
{ "keyword": "肺癌", "max_results": 20, "translate": true }
```
试验根据字段完整性评为高/中/低分。只有高分和中分试验返回;低分试验在`skipped`数组中单独列出。
### verify_chictr_trial
将ChiCTR试验与ClinicalTrials.gov进行交叉引用。
```json
{ "registration_number": "ChiCTR2400093415" }
```
返回:匹配的NCT ID、置信度(高/中/低/未验证)以及任何差异。
### get_cache_stats / clear_cache
查看或清除内存缓存。
## 架构
```
克劳德桌面
│ JSON-RPC over stdio
▼
MCP服务器(index.ts)
├── scraper.ts ──→ FlareSolverr → chictr.org.cn(主要)
│ ──→ WHO ICTRP(备用,纯HTTP)
├── verifier.ts ──→ ClinicalTrials.gov v2 API
├── translator.ts ──→ NVIDIA API(Nemotron 70B)
├── cache.ts ──→ 内存(node-cache)
└── types.ts ──→ ChiCTRTrial接口(34+字段)
```
## 环境变量
所有变量均为可选。可在克劳德桌面配置的`env`块或开发的`.env`文件中设置。
| 变量 | 默认值 | 描述 |
|----------|---------|-------------|
| `NVIDIA_API_KEY` | — | 启用中文→英文翻译 |
| `FLARESOLVERR_URL` | `http://localhost:8191/v1` | FlareSolverr端点,用于直接访问ChiCTR |
| `CHICTR_SEARCH_CACHE_TTL` | `300` | 搜索缓存TTL(秒) |
| `CHICTR_DETAIL_CACHE_TTL` | `600` | 详情缓存TTL(秒) |
| `BULK_CONCURRENCY` | `3` | 批量导入的最大并行获取 |
| `REQUEST_DELAY_MS` | `1500` | 请求之间的延迟(毫秒) |
## 开发
```bash
npm run dev # 使用热重载运行(tsx)
npm run build # 编译TypeScript
npm run test:scrape # 测试scraper对抗真实试验
npm run ingest # 运行肿瘤导入流水线(6个关键词)
npx tsc --noEmit # 仅类型检查
```
## 许可证
MIT