返回市场
医疗保健-mcp-公共

医疗保健-mcp-公共

作者:Cicatriiz66 星标更新:2025-08-17

项目介绍

医疗保健 MCP 服务器

smithery 徽章 这是一个实现模型上下文协议(MCP)的 Node.js 服务器,提供给 AI 助手访问医疗数据和医学信息工具的能力。它使 AI 模型能够从权威来源检索准确、最新的医学信息。此仓库提供了一个包含完整 Node.js 实现的单个 DXT 包。

概述

医疗保健 MCP 服务器是一个专门的 Node.js 服务器,实现了模型上下文协议(MCP),以提供 AI 助手访问医疗数据和医学信息工具的能力。它使 AI 模型能够从权威来源检索准确、最新的医学信息。此仓库提供了一个包含完整 Node.js 实现的单个 DXT 包。

DXT 扩展

此仓库包括一个打包好的 DXT(桌面扩展)文件,便于在兼容的开发环境中进行安装。下载 healthcare-mcp.dxt 文件即可一键安装。

特性

  • FDA 药物信息:从 FDA 数据库中搜索和检索全面的药物信息(改进了响应解析)
  • PubMed 研究:从 PubMed 的科学文章数据库中搜索医学文献
  • 健康主题:访问 Health.gov 提供的基于证据的健康信息(更新到 API v4)
  • 临床试验:搜索正在进行和已完成的临床试验(更新了 API 参数)
  • 医学术语:查找 ICD-10 编码和医学术语定义
  • medRxiv 搜索:搜索 medRxiv 上的预印本文章
  • 医疗计算器:计算体质指数(BMI)
  • NCBI 书架搜索:搜索 NCBI 书架上的生物医学书籍和文档
  • DICOM 元数据提取:从 DICOM 文件中提取元数据
  • 缓存:高效的缓存系统,带有连接池,减少 API 调用并提高性能
  • 使用跟踪:匿名使用跟踪,监控 API 使用情况
  • 错误处理:强大的错误处理和日志记录
  • 多个接口:支持 stdio(用于 CLI)和 HTTP/SSE 接口
  • API 文档:带有 Swagger UI 的交互式 API 文档
  • 全面测试:广泛的测试套件,包括 Node.js 测试和 API 验证

安装

选项 1:DXT 扩展(推荐)

  1. 从此仓库下载 healthcare-mcp.dxt
  2. 使用兼容的 MCP 客户端(如 Claude Desktop)打开
  3. 按照安装提示操作
  4. 通过图形界面配置可选设置

选项 2:通过 Smithery 安装

要通过 Smithery 自动安装 Claude Desktop 的医疗数据和医学信息服务器:

npx -y @smithery/cli install @Cicatriiz/healthcare-mcp-public --client claude

选项 3:npm 安装

  1. 安装包:

    npm install healthcare-mcp
    
  2. 运行服务器:

    npx healthcare-mcp
    

选项 4:从源代码手动安装

  1. 克隆仓库:

    git clone https://github.com/Cicatriiz/healthcare-mcp-public.git
    cd healthcare-mcp-public/server
    
  2. 安装依赖项:

    npm install
    
  3. 设置环境变量(可选):

    # 从示例创建 .env 文件
    cp .env.example .env
    # 编辑 .env 文件添加您的 API 密钥(可选)
    
  4. 运行服务器:

    npm start
    

使用方法

运行服务器

  • stdio 模式(默认,适用于 MCP 客户端):

    npm start
    
  • HTTP/SSE 模式(适用于 Web 客户端):

    npm run server:http
    

测试工具

您可以使用内置的测试脚本来测试 MCP 工具:

# 测试所有工具
npm test

# 测试个别工具
npm run test:fda        # 测试 FDA 药物查找
npm run test:pubmed     # 测试 PubMed 搜索
npm run test:health     # 测试健康主题
npm run test:trials     # 测试临床试验搜索
npm run test:icd        # 测试 ICD-10 编码查找

API 参考

医疗保健 MCP 服务器提供了直接集成的编程 API 和适用于 Web 客户端的 RESTful HTTP API。

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:报告的不良事件

示例响应:

{
  "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 年)

示例响应:

{
  "status": "success",
  "query": "diabetes treatment",
  "total_results": 123456,
  "date_range": "5",
  "articles": [
    {
      "pmid": "12345678",
      "title": "New advances in diabetes treatment",
      "authors": ["Smith J", "Johnson A"],
      "journal": "Journal of Diabetes Research",
      "publication_date": "2023-01-15",
      "abstract": "This study explores new treatment options...",
      "url": "https://pubmed.ncbi.nlm.nih.gov/12345678/"
    }
  ]
}

健康主题

GET /api/health_finder?topic={topic}&language={language}

参数:

  • topic:要搜索信息的健康主题
  • language:内容的语言(en 或 es,默认:en)

示例响应:

{
  "status": "success",
  "search_term": "diabetes",
  "language": "en",
  "total_results": 15,
  "topics": [
    {
      "title": "Diabetes Type 2",
      "url": "https://health.gov/myhealthfinder/topics/health-conditions/diabetes/diabetes-type-2",
      "last_updated": "2023-05-20",
      "section": "Health Conditions",
      "description": "关于管理 2 型糖尿病的信息",
      "content": ["糖尿病是一种疾病...", "治疗选择包括..."]
    }
  ]
}

临床试验搜索

GET /api/clinical_trials?condition={condition}&status={status}&max_results={max_results}

参数:

  • condition:要搜索的医学状况或疾病
  • status:试验状态(recruiting、completed、active、not_recruiting 或 all)
  • max_results:要返回的最大结果数(默认:10,最大:100)

示例响应:

{
  "status": "success",
  "condition": "breast cancer",
  "search_status": "recruiting",
  "total_results": 256,
  "trials": [
    {
      "nct_id": "NCT12345678",
      "title": "Study of New Treatment for Breast Cancer",
      "status": "Recruiting",
      "phase": "Phase 2",
      "study_type": "Interventional",
      "conditions": ["Breast Cancer", "HER2-positive Breast Cancer"],
      "locations": [
        {
          "facility": "Memorial Hospital",
          "city": "New York",
          "state": "NY",
          "country": "United States"
        }
      ],
      "sponsor": "National Cancer Institute",
      "url": "https://clinicaltrials.gov/study/NCT12345678",
      "eligibility": {
        "gender": "Female",
        "min_age": "18 Years",
        "max_age": "75 Years",
        "healthy_volunteers": "No"
      }
    }
  ]
}

ICD-10 编码查找

GET /api/medical_terminology?code={code}&description={description}&max_results={max_results}

参数:

  • code:要查找的 ICD-10 编码(如果提供了描述则可选)
  • description:要搜索的医学状况描述(如果提供了编码则可选)
  • max_results:要返回的最大结果数(默认:10,最大:50)

示例响应:

{
  "status": "success",
  "search_type": "description",
  "search_term": "diabetes",
  "total_results": 25,
  "codes": [
    {
      "code": "E11",
      "description": "2 型糖尿病",
      "category": "内分泌、营养和代谢疾病"
    },
    {
      "code": "E10",
      "description": "1 型糖尿病",
      "category": "内分泌、营养和代谢疾病"
    }
  ]
}

通用工具执行

POST /mcp/call-tool

请求正文:

{
  "name": "fda_drug_lookup",
  "arguments": {
    "drug_name": "aspirin",
    "search_type": "general"
  },
  "session_id": "optional-session-id"
}

MCP 工具

当通过兼容客户端使用 MCP 服务器时,以下工具可用:

FDA 药物查找

fda_drug_lookup(drug_name, search_type = "general")

参数:

  • drug_name:要搜索的药物名称
  • search_type:要检索的信息类型
    • general:基本药物信息(默认)
    • label:药物标签信息
    • adverse_events:报告的不良事件

PubMed 搜索

pubmed_search(query, max_results = 5, date_range = "")

参数:

  • query:医学文献的搜索查询
  • max_results:要返回的最大结果数(默认:5)
  • date_range:限制到指定年份内发表的文章(例如 '5' 表示过去 5 年)

健康主题

health_topics(topic, language = "en")

参数:

  • topic:要搜索信息的健康主题
  • language:内容的语言(en 或 es,默认:en)

临床试验搜索

clinical_trials_search(condition, status = "recruiting", max_results = 10)

参数:

  • condition:要搜索的医学状况或疾病
  • status:试验状态(recruiting、completed、active、not_recruiting 或 all)
  • max_results:要返回的最大结果数

ICD-10 编码查找

lookup_icd_code(code = null, description = null, max_results = 10)

参数:

  • code:要查找的 ICD-10 编码(如果提供了描述则可选)
  • description:要搜索的医学状况描述(如果提供了编码则可选)
  • max_results:要返回的最大结果数

medRxiv 搜索

medrxiv_search(query, max_results = 10)

参数:

  • query:medRxiv 文章的搜索查询
  • max_results:要返回的最大结果数

计算 BMI

calculate_bmi(height_meters, weight_kg)

参数:

  • height_meters:以米为单位的高度
  • weight_kg:以千克为单位的体重

NCBI 书架搜索

ncbi_bookshelf_search(query, max_results = 10)

参数:

  • query:NCBI 书架的搜索查询
  • max_results:要返回的最大结果数

提取 DICOM 元数据

extract_dicom_metadata(file_path)

参数:

  • file_path:DICOM 文件的路径

数据来源

此 MCP 服务器利用了几个公开的医疗保健 API:

许可

MIT 许可证