使用说明
研究MCP服务器
一个全面的模型上下文协议(MCP)服务器,提供对学术研究数据库的统一访问,包括PubMed、FAERS和学术网络搜索源。使用TypeScript构建,旨在与Claude和其他AI助手集成。
🚀 特性
- 🔬 PubMed集成:通过NCBI电子工具搜索同行评审的生物医学文献
- 💊 FAERS数据库访问:查询美国食品药品监督管理局不良事件报告系统以获取药品安全数据
- 🌐 学术网络搜索:来自Semantic Scholar、CrossRef和arXiv的聚合结果
- ⚡ 智能高速缓存:多级缓存,后台刷新以提高性能
- 🛡️ 速率限制:使用内置节流和重试机制尊重API限制
- 🔌 插件架构:轻松扩展新的数据源
- 📊 安全分析:内置药物安全分析,包括人口统计细分
- 🎯 智能重复数据删除:跨源自动执行结果重复数据删除
安装
# Clone the repository
git clone <repository-url>
cd research-mcp-server
# Install dependencies
npm install
# Copy environment variables
cp .env.example .env
# Build the project
npm run build
配置
编辑 .env 使用API密钥文件:
PUBMED_API_KEY=your_pubmed_api_key
PUBMED_EMAIL=your_email@example.com
SEMANTIC_SCHOLAR_API_KEY=your_semantic_scholar_api_key
# ... other API keys
🎯 快速开始
运行服务器
# Production mode
npm start
# Development mode with auto-reload
npm run dev
# Test with MCP Inspector
npm run inspector
基本用法
-
启动服务器:
npm run inspector -
打开http://localhost:3000在您的浏览器中
-
尝试一个示例查询:
{ "name": "search_literature", "arguments": { "query": "COVID-19 vaccine efficacy", "sources": ["pubmed", "web"], "options": { "limit": 10 } } }
可用工具
搜索文学
在多个学术数据库中搜索:
{
"query": "COVID-19 vaccine efficacy",
"sources": ["pubmed", "web"],
"filters": {
"dateRange": {
"start": "2023-01-01",
"end": "2023-12-31"
},
"openAccessOnly": true
},
"options": {
"limit": 50,
"sortBy": "relevance"
}
}
药物安全分析
分析FAERS的药物安全数据:
{
"drugName": "aspirin",
"analysisType": "adverse_events",
"dateRange": {
"start": "2022-01-01",
"end": "2023-12-31"
}
}
建筑
服务器使用模块化单片架构,具有:
- 插件系统:每个数据源都是一个自包含的插件
- 服务层:用于缓存、速率限制和重试逻辑的共享服务
- MCP接口:客户端兼容性的标准MCP工具定义
- 类型安全:带有Zod验证的完整TypeScript
🧪 测试
# Run all tests
npm test
# Unit tests only
npm test:unit
# Integration tests only
npm test:integration
# Watch mode for development
npm test:watch
🔧 发展
添加新插件
- 创建插件目录:
src/plugins/your-plugin/ - 实施
ResearchPlugin接口 - 注册
PluginManager - 添加相应的MCP工具定义
代码质量
npm run lint
npm run format
npm run build
📊 演出
- 缓存:根据来源,结果缓存30分钟至2小时
- 速率限制:自动限制所有API
- 并行执行:多源搜索同时运行
- 智能重复数据删除:消除不同来源的重复论文
- 背景刷新:针对流行查询主动刷新缓存
🔍 监控
使用health_Check工具检查系统运行状况:
{
"name": "health_check",
"arguments": {}
}
这将返回插件状态、响应时间和缓存统计信息。
许可证
麻省理工学院