310 查看 · 2026-07-07 更新
医疗MCP服务器
一个实现模型上下文协议(MCP)的服务器,为AI助手提供访问医疗数据和医学信息工具的能力。
概览
医疗MCP服务器是一个专门的服务器,它实现了模型上下文协议(MCP),以使AI助手能够访问医疗数据和医学信息工具。它让AI模型可以从权威来源检索准确且最新的医学信息。
功能特点
- FDA药品信息:从FDA数据库中搜索并获取全面的药品信息
- PubMed研究:从PubMed的科学文章数据库中搜索医学文献
- 健康主题:从Health.gov获取基于证据的健康信息
- 临床试验:搜索正在进行和已完成的临床试验
- 医学术语:查找ICD-10编码及医学术语定义
- 缓存:高效的缓存系统与连接池减少API调用次数并提高性能
- 使用跟踪:匿名使用跟踪以监控API使用情况
- 错误处理:强大的错误处理与日志记录
- 多接口支持:同时支持stdio(用于命令行界面)和HTTP/SSE接口
- API文档:带有Swagger UI的交互式API文档
- 全面测试:广泛的测试套件,包括pytest和覆盖率报告
安装
通过Smithery安装
要通过Smithery自动为Claude Desktop安装医疗数据和医学信息服务器:
bash npx -y @smithery/cli install @Cicatriiz/healthcare-mcp-public --client claude
手动安装
-
克隆仓库: bash git clone https://github.com/Cicatriiz/healthcare-mcp-public.git cd healthcare-mcp-public
-
创建虚拟环境: bash python -m venv venv source venv/bin/activate # 在Windows上: venvScriptsactivate
-
安装依赖项: bash pip install -r requirements.txt
-
设置环境变量(可选): bash
从示例创建.env文件
cp .env.example .env
使用您的API密钥编辑.env文件(可选)
-
运行服务器: bash python run.py
使用
在不同传输模式下运行
-
stdio模式(默认,适用于命令行): bash python run.py
-
HTTP/SSE模式(适用于Web客户端): bash python run.py --http --port 8000
测试工具
您可以使用新的基于pytest的测试套件来测试MCP工具:
bash
使用pytest和覆盖率运行所有测试
python -m tests.run_tests --pytest
运行特定测试文件
python -m tests.run_tests --test test_fda_tool.py
测试HTTP服务器
python -m tests.run_tests --server --port 8000
为了向后兼容,您仍然可以运行旧版测试:
bash
运行所有测试(旧风格)
python -m tests.run_tests
测试单个工具(旧风格)
python -m tests.run_tests --fda # 测试FDA药品查询 python -m tests.run_tests --pubmed # 测试PubMed搜索 python -m tests.run_tests --health # 测试健康主题 python -m tests.run_tests --trials # 测试临床试验搜索 python -m tests.run_tests --icd # 测试ICD-10编码查询
API参考
医疗MCP服务器提供了程序化API以便直接集成以及RESTful HTTP API供Web客户端使用。
RESTful API端点
在HTTP模式下运行时,以下端点可用:
健康检查
GET /health
返回服务器及其服务的状态。
FDA药品查询
GET /api/fda?drug_name={drug_name}&search_type={search_type}
参数:
drug_name:要搜索的药品名称search_type:要检索的信息类型-general: 基本药物信息(默认)label: 药物标签信息adverse_events: 报告的不良事件
示例响应: json { "status": "success", "drug_name": "aspirin", "search_type": "general", "total_results": 25, "results": [ { "brand_name": "ASPIRIN", "generic_name": "ASPIRIN", "manufacturer": "Bayer Healthcare", "product_type": "HUMAN OTC DRUG", "route": "ORAL", "active_ingredients": [ { "name": "ASPIRIN", "strength": "325 mg/1" } ] } ] }
PubMed 搜索
GET /api/pubmed?query={query}&max_results={max_results}&date_range={date_range}
参数:
query: 医学文献搜索查询max_results: 返回的最大结果数量(默认:5,最大:50)date_range: 限制为最近几年内发表的文章(例如:5 表示最近5年)
示例响应: json { "status": "success", "query": "diabetes treatment", "total_results": 123456, "date_range": "5", "articles": [ { "pmid": "12345678", "title": "糖尿病治疗的新进展", "authors": ["Smith J", "Johnson A"], "journal": "糖尿病研究杂志", "publication_date": "2023-01-15", "abstract": "本研究探讨了新的治疗选择...", "url": "https://pubmed.ncbi.nlm.nih.gov/12345678/" } ] }
健康主题
GET /api/health_finder?topic={topic}&language={language}
参数:
topic: 搜索健康信息的主题language: 内容的语言(en 或 es,默认:en)
示例响应: json { "status": "success", "search_term": "diabetes", "language": "en", "total_results": 15, "topics": [ { "title": "2型糖尿病", "url": "https://health.gov/myhealthfinder/topics/health-conditions/diabetes/diabetes-type-2", "last_updated": "2023-05-20", "section": "健康状况", "description": "关于管理2型糖尿病的信息", "content": ["糖尿病是一种疾病...", "治疗方法包括..."] } ] }
临床试验搜索
GET /api/clinical_trials?condition={condition}&status={status}&max_results={max_results}
参数:
condition: 要搜索的医学状况或疾病status: 试验状态(招募中、已完成、进行中、不再招募、或全部)max_results: 返回的最大结果数量(默认:10,最大:100)
示例响应: json { "status": "success", "condition": "乳腺癌", "search_status": "recruiting", "total_results": 256, "trials": [ { "nct_id": "NCT12345678", "title": "针对乳腺癌的新治疗方法研究", "status": "Recruiting", "phase": "Phase 2", "study_type": "Interventional", "conditions": ["乳腺癌", "HER2阳性乳腺癌"], "locations": [ { "facility": "纪念医院", "city": "纽约", "state": "NY", "country": "美国" } ], "sponsor": "国家癌症研究所", "url": "https://clinicaltrials.gov/study/NCT12345678", "eligibility": { "gender": "女性", "min_age": "18岁", "max_age": "75岁", "healthy_volunteers": "否" } } ] }
ICD-10 代码查询
GET /api/medical_terminology?code={code}&description={description}&max_results={max_results}
参数:
code: 要查找的ICD-10代码(如果提供了描述则可选)description: 要搜索的医疗状况描述(如果提供了代码则可选)max_results: 返回的最大结果数量(默认:10,最大:50)
示例响应: json { "status": "success", "search_type": "description", "search_term": "糖尿病", "total_results": 25, "codes": [ { "code": "E11", "description": "2型糖尿病", "category": "内分泌、营养和代谢性疾病" }, { "code": "E10", "description": "1型糖尿病", "category": "内分泌、营养和代谢性疾病" } ] }#### 通用工具执行
POST /mcp/call-tool
请求体: json { "name": "fda_drug_lookup", "arguments": { "drug_name": "aspirin", "search_type": "general" }, "session_id": "optional-session-id" }
程序化 API
当以编程方式使用 MCP 服务器时,可以使用以下函数:
FDA 药物查询
python fda_drug_lookup(drug_name: str, search_type: str = "general")
参数:
drug_name: 要搜索的药物名称search_type: 要检索的信息类型general: 基本药物信息(默认)label: 药物标签信息adverse_events: 报告的不良事件
PubMed 搜索
python pubmed_search(query: str, max_results: int = 5, date_range: str = "")
参数:
query: 医学文献搜索查询max_results: 返回的最大结果数量(默认:5)date_range: 限制为在某几年内发表的文章(例如,5 表示过去 5 年)
健康主题
python health_topics(topic: str, language: str = "en")
参数:
topic: 要搜索信息的健康主题language: 内容语言(en 或 es,默认:en)
临床试验搜索
python clinical_trials_search(condition: str, status: str = "recruiting", max_results: int = 10)
参数:
condition: 要搜索的医疗状况或疾病status: 试验状态(招募中、已完成、进行中、未招募中或全部)max_results: 返回的最大结果数量
ICD-10 代码查询
python lookup_icd_code(code: str = None, description: str = None, max_results: int = 10)
参数:
code: 要查找的 ICD-10 代码(如果提供了描述则可选)description: 要搜索的医疗状况描述(如果提供了代码则可选)max_results: 返回的最大结果数量
数据源
此 MCP 服务器利用了多个公开可用的医疗保健 API:
- FDA OpenFDA API
- PubMed E-utilities API
- Health.gov API
- ClinicalTrials.gov API
- NLM Clinical Table Search Service for ICD-10-CM
高级版本(仍在建设中)
这是具有使用限制的免费版 Healthcare MCP 服务器。对于高级功能和更高的使用限制,请查看我们的高级版本:
- 无限次 API 调用
- 高级医疗数据工具
- 自定义集成
- 优先支持
许可证
MIT 许可证
来源
- 来源:github
- 链接:https://github.com/cicatriiz/healthcare-mcp-public