医学知识检索 MCP 服务器
  
一个基于 Model Context Protocol (MCP) 的专业医学信息查询工具,集成多个权威医学数据源,支持 Claude Desktop、Cursor、Cherry Studio 等 AI 应用。
✨ 核心功能
| 功能 | 数据源 | 说明 | |------|--------|------| | 📖 MSD手册查询 | MSD诊疗手册 | 专业医学知识,结构化内容提取 | | 🧬 MeSH主题词 | NLM MeSH浏览器 | 医学主题词层级树结构,精准分类 | | 🔬 MedSci编码 | 梅斯医学 | ICD-10/ICD-9医学编码查询 | | 📚 术语查询 | 术语在线 | 中英文医学术语翻译 | | 💊 药品查询 | 国家药监局 | 药品信息和说明书 |
🚀 快速开始
一键安装(推荐)
Windows: ``powershell .\setup.ps1 ``
macOS/Linux: ``bash chmod +x setup.sh ./setup.sh ``
手动安装
# 1. 安装 Node.js 依赖
npm install
# 2. 安装 Python 依赖
pip install -r requirements.txt
# 3. 安装 Playwright 浏览器
node install-chromium.cjs
# 4. 检查环境
python check_python_env.py
# 5. 测试运行
node test_simple_msd.js
📖 完整安装指南:查看 SETUP_GUIDE.md 获取详细的环境配置说明。
📋 环境要求
必需
- Node.js: 18.x 或 20.x LTS
- Python: 3.10 或更高
- npm: 9.x 或更高
- Playwright: 1.40+ (自动安装)
操作系统
- ✅ Windows 10/11
- ✅ macOS 10.15+
- ✅ Linux (Ubuntu 18.04+)
🔧 MCP 客户端配置
Claude Desktop
配置文件位置:
- Windows:
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
配置示例: ``json { "mcpServers": { "medical-knowledge": { "command": "node", "args": ["D:\\chenmo\\Desktop\\mcp\\termonline-mcp\\index.js"] } } } ``
⚠️ 注意:Windows 路径使用双反斜杠
\\或单正斜杠/
Cursor IDE
在 Cursor 设置中添加 MCP 服务器:
{
"medical-knowledge": {
"command": "node",
"args": ["D:\\chenmo\\Desktop\\mcp\\termonline-mcp\\index.js"]
}
}
Cherry Studio
查看 cherry-studio-config-example.json 获取配置示例。
📦 可用工具
| 工具名称 | 功能说明 | 数据源 | |---------|---------|-------| | search_msd | MSD医学手册查询 | MSD诊疗手册 | | search_mesh | MeSH主题词查询 | NLM MeSH浏览器 | | search_medical_code_icd10 | ICD-10疾病编码 | 梅斯医学 | | search_medical_code_icd9 | ICD-9手术编码 | 梅斯医学 | | search_terminology | 中英文医学术语 | 术语在线 | | batch_search_terminology | 批量术语查询 | 术语在线 | | search_medicine | 药品信息查询 | 国家药监局 |
使用示例
1. MSD手册查询 `` 请查询"糖尿病"的MSD手册内容 ``
2. MeSH主题词查询 `` 帮我查询"diabetes mellitus"的MeSH分类 ``
3. 医学编码查询 `` 查询"糖尿病"的ICD-10编码 查找"阑尾切除术"的ICD-9编码 ``
📖 详细文档: - MSD手册使用:MSD_README.md - MeSH主题词:MESH_SCRAPER_README.md - 快速上手:MSD_QUICKSTART.md
📜 项目结构
termonline-mcp/
├── index.js # MCP 服务器主文件
├── msd_scraper.py # MSD手册爬虫
├── msd_scraper.js # MSD爬虫 (Node.js版)
├── mesh_scraper.py # MeSH主题词爬虫
├── medsci_scraper.py # 医学编码爬虫
├── check_python_env.py # Python环境检查工具
├── install-chromium.cjs # Playwright浏览器安装脚本
├── setup.ps1 # Windows一键安装
├── setup.sh # macOS/Linux一键安装
├── package.json # Node.js依赖配置
├── requirements.txt # Python依赖配置
├── README.md # 项目说明
├── SETUP_GUIDE.md # 环境配置指南
├── MSD_README.md # MSD功能说明
├── MESH_SCRAPER_README.md # MeSH功能说明
└── MSD_QUICKSTART.md # 快速上手指南
🛠️ 技术栈
核心框架:
- @modelcontextprotocol/sdk - MCP 协议实现
- Playwright - 浏览器自动化 (Python)
- Axios + Cheerio - HTTP请求和HTML解析
支持的客户端:
- Claude Desktop
- Cursor IDE
- Cherry Studio
- 其他支持MCP协议的AI应用
⚠️ 注意事项
- ✅ 网络连接:需要稳定的互联网连接
- ✅ 使用频率:请合理使用,避免频繁请求
- ✅ 数据来源:所有数据来自公开的权威医学数据库
- ✅ 仅供学习交流:临床决策请咨询专业医生
📚 相关资源
官方文档:
- Model Context Protocol - MCP协议规范
- Claude Desktop MCP - Claude官方文档
数据源:
📝 许可证
MIT License - 详见 LICENSE
👥 贡献
欢迎提交 Issue 和 Pull Request!
贡献指南:
- Fork 本仓库
- 创建功能分支 (
git checkout -b feature/AmazingFeature) - 提交修改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
---
项目维护者: MCP Medical Knowledge Team 最后更新: 2025-10 版本: 2.0
- 国家医保信息编码标准数据库 - ICD-10/ICD-9 编码
工具和框架
常见问题
Q: 为什么查询不到结果?
A: 可能的原因:
- 网络连接问题
- 关键词拼写错误
- 网站结构变化导致解析失败
- (医保编码)Python 环境未正确配置
Q: 如何更新服务?
A: 重新拉取代码并安装依赖: ``bash git pull npm install ``
Q: 支持哪些 AI 应用?
A: 理论上支持所有实现了 MCP 协议的应用,包括但不限于:
- Cherry Studio
- Claude Desktop
- 其他支持 MCP 的 AI 应用
Q: 医保编码查询报错怎么办?
A: 请按以下步骤排查:
- 检查 Python 是否安装:
python --version - 检查 Selenium 是否安装:
pip show selenium - 运行环境检查:
python check_python_env.py - 查看详细配置指南:PYTHON_SETUP.md
- 检查截图文件(
medical-code-*.png)查看页面实际状态
Q: 遇到 429 请求限制错误怎么办?
A: 429 错误表示查询过于频繁,服务器对请求频率进行了限制。解决方法:
- 等待后重试:等待 60 秒后再次查询
- 使用功能开关:临时禁用医疗编码查询(详见 FEATURE_TOGGLE.md)
- 直接使用 AI:关闭 MCP 工具,让 AI 直接基于知识回答
- 智能降级:系统会返回
fallback_suggestion: "AI_DIRECT_ANSWER",Cherry Studio 可以识别后自动切换到 AI 回答
详细说明请参考:INTELLIGENT_FALLBACK_GUIDE.md
Q: JSON 输出出现乱码怎么办?
A: 这是 正常现象!JSON 中的中文都被转义为 Unicode 编码(\uXXXX),以确保跨平台兼容性。
- 在 PowerShell 中:显示为
\u7cd6\u5c3f\u75c5(正常) - 在 Cherry Studio 中:会自动解码显示为中文(正常)
无需处理,系统会自动解析。
---
🔧 高级功能
功能开关
医疗编码查询功能可以通过开关控制启用/禁用:
在 index.js 第 649 行: ``javascript const ENABLE_MEDICAL_CODE = true; // 设为 false 可禁用区保编码查询 ``
详细说明:FEATURE_TOGGLE.md
智能降级机制
当查询失败时(如 429 错误),系统会返回特殊的错误格式,建议客户端切换到 AI 直接回答:
{
"success": false,
"error_type": "rate_limit",
"fallback_suggestion": "AI_DIRECT_ANSWER",
"retry_after": "60"
}
Cherry Studio 可以识别这个信号,自动切换到让 AI 基于知识回答。
详细说明:INTELLIGENT_FALLBACK_GUIDE.md
---
🧪 测试
测试区保编码查询功能
# 集成测试
node test_medsci.cjs
# 单独测试 Python 脚本
python medsci_scraper.py "糖尿病" icd10
# 测试 429 错误处理
python test_429_error.py
测试输出示例
✅ 成功查询: ``` ✅ JSON 解析成功
📊 查询结果:
- 成功: true
- 来源: 梅斯区学 (ICD-10疾病编码)
- 关键词: 糖尿病
- 结果数: 30
---
如有问题或建议,欢迎联系!











