Token导航 LogoToken导航TokenDH.com
Medical MCP Toolkit logo
数据服务stdio官方级别未说明来源级核验

Medical MCP Toolkit

MCP Server

一个生产就绪的MCP风格服务器,为IBM watsonx Orchestrate代理提供临床工具。

工具数

0

提示词数

0

GitHub Stars

0

资源数

0
Python数据分析API集成

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

ruslanmv

提供方

ruslanmv

最后核验

2026/5/17 20:21

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

uv run python -c "import asyncio; \

详细介绍

医疗-MCP工具包

已准备好投入生产 MCP风格 提供临床工具的服务器 IBM Watsonx Orchestrate 代理。

它是什么: 一个干净的MCP服务器,提供暴露(或“对外开放”)服务 12种医疗工具 通过两者: - 一 HTTP API (FastAPI) 用于快速测试和服务集成。 - MCP运输 (SSE/STDIO) 用于大型语言模型(LLM)多智能体协同调度。

______________________________________________________________________

✨ 特点

  • 12个工具耐心(此处可能指对患者要有耐心,但直译为“耐心”在语境中略显生硬,实际应用中可根据上下文调整)、生命体征、病历资料、临床计算器、药物信息/药物相互作用/禁忌症/替代药物、症状分诊、知识库搜索、预约管理、患者360度视图。
  • FastAPI HTTP 端点: /health/schema/tools/invoke
  • 承载令牌认证 (设置 BEARER_TOKEN)。
  • 由UV管理 Python环境(uv sync.venv)。
  • 集装箱化 (Dockerfile)。将结构化日志输出到标准输出。
  • 邮递员 一键测试集合。
  • 美人鱼建筑风格 (保持与以下提供内容完全一致)。

PostgreSQL 后端 具有与JSON Schema对齐的生产就绪模式,并附带预填充的演示数据, Dockerfile.db,和 Makefile 数据库助手(db-updb-downdb-logsdb-reset)。

______________________________________________________________________

🧠 系统上下文

graph TD
    %% === STYLES ===
    classDef agent fill:#eefaf0,stroke:#1a7f37,stroke-width:2px
    classDef tool fill:#f3e8fd,stroke:#8e44ad,stroke-width:1px
    classDef external fill:#f8f9fa,stroke:#666,stroke-width:1px,stroke-dasharray: 5 5

    %% === ORCHESTRATION AGENTS ===
    subgraph WXO[IBM watsonx Orchestrate]
        direction TB
        Coordinator[Medical Coordinator Agent]:::agent
        Triage[Emergency Triage Agent]:::agent
        GenMed[General Medicine Agent]:::agent

        subgraph Specialists
            direction LR
            Cardiology[Cardiology]:::agent
            Pediatrics[Pediatrics]:::agent
            Oncology[Oncology]:::agent
            Endocrinology[Endocrinology]:::agent
        end

        %% Agent Handoffs
        Coordinator -->|delegates| Triage
        Coordinator -->|routes| GenMed
        GenMed -->|refers| Specialists
    end

    %% === BACKEND SERVICES & TOOLS ===
    subgraph BackendServices [Backend Services]
        direction TB
        subgraph MCPToolkit[Medical MCP Toolkit]
            direction TB
            T1[getPatient]:::tool
            T2[getPatientVitals]:::tool
            T3[getPatientMedicalProfile]:::tool
            T4[calcClinicalScores]:::tool
            T5[getDrugInfo]:::tool
            T6[triageSymptoms]:::tool
            T7[searchMedicalKB]:::tool
            T8[scheduleAppointment]:::tool
        end

        subgraph ExternalRuntimes [External Runtimes]
            MCPServer[Medical MCP Server
FastMCP/SSE]:::external
            WatsonxAI[watsonx.ai Foundation Models]:::external
        end
        
        MCPToolkit -.->|runtime API calls| MCPServer
        MCPServer -.->|LLM calls| WatsonxAI
    end

    %% === CONNECTIONS ===
    WXO -->|All agents use| MCPToolkit

伴侣多智能体仓库(Orchestrate) 这个仓库:

______________________________________________________________________

🚀 快速入门(uv)

# 1) Clone and enter the repo
git clone https://github.com/ruslanmv/medical-mcp-toolkit
cd medical-mcp-toolkit

# 2) Create your environment file
cp .env.example .env
# Edit .env and set BEARER_TOKEN, and (optionally) DATABASE_URL

# 3) (Optional) Start Postgres DB with schema + seed data
make db-up
# Verify: make db-logs   or   docker ps

# 4) Create venv and install deps (uv-managed)
make install   # or: make uv-install

# 5) Run the HTTP server (FastAPI on port 9090)
make run-api   # (equivalent to: uv run uvicorn server:app --host 0.0.0.0 --port 9090)

典型的启动日志(示例):

2025-10-15 12:16:46,272 INFO [mcp_server] [registry] 12 tools registered: calcClinicalScores, getDrugAlternatives, getDrugContraindications, getDrugInfo, getDrugInteractions, getPatient, getPatient360, getPatientMedicalProfile, getPatientVitals, scheduleAppointment, searchMedicalKB, triageSymptoms
INFO:     Started server process [23217]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://0.0.0.0:9090 (Press CTRL+C to quit)

______________________________________________________________________

✅ 吸烟测试(bash)

健康是 纯文本 (ok),所以使用 jq -R .

curl -sS http://localhost:9090/health | jq -R .
# "ok"

调用一个工具:

curl -sS -X POST "http://localhost:9090/invoke" \
  -H 'Authorization: Bearer dev-token' \
  -H 'Content-Type: application/json' \
  -d '{
    "tool": "triageSymptoms",
    "args": {
      "age": 45,
      "sex": "male",
      "symptoms": ["chest pain","sweating"],
      "duration_text": "2 hours"
    }
  }' | jq

示例结果:

{
  "ok": true,
  "tool": "triageSymptoms",
  "result": {
    "acuity": "urgent",
    "advice": "call emergency services",
    "rulesMatched": ["chest pain", "diaphoresis"],
    "nextSteps": ["ECG", "troponin", "aspirin if not contraindicated"]
  }
}
如果你看到 jq 解析错误,你可能是在传递非JSON数据。 /health 是文本/纯文本类型; /invoke 是JSON。添加 -icurl 查看HTTP状态码/头部信息。

______________________________________________________________________

🔌 HTTP API

  • GET /health好的 (纯文本)

- JSON视图技巧: curl -sS /health | jq -R -r .ok

  • GET /schema (auth) → 组件 JSON 架构(来自 schemas/components.schema.json
  • GET /tools (auth) → {"tools": ["..."]}
  • POST /invoke (认证) → {"ok": true, "tool": "", "result": ...}

认证: 设置 BEARER_TOKEN 在服务器环境中。如果未设置,则禁用认证(开发模式)。 发送: Authorization: Bearer for /schema/tools/invoke.

______________________________________________________________________

🧰 可用工具(12个)

  • 患者: getPatientgetPatientVitalsgetPatientMedicalProfile
  • 计算器: calcClinicalScores (体重指数,体表面积,肌酐清除率,估算肾小球滤过率)
  • 药物: getDrugInfogetDrugInteractionsgetDrugContraindicationsgetDrugAlternatives
  • 分类与知识库(Triage & KB) triageSymptomssearchMedicalKB
  • 调度与P360: scheduleAppointmentgetPatient360

使用 GET /tools 列出名字,并且 GET /schema 用于类型化输入/输出。

______________________________________________________________________

🧪 更多示例

列出工具:

curl -sS "http://localhost:9090/tools" \
  -H 'Authorization: Bearer dev-token' | jq

获取模式:

curl -sS "http://localhost:9090/schema" \
  -H 'Authorization: Bearer dev-token' | jq

药品信息:

curl -sS -X POST "http://localhost:9090/invoke" \
  -H 'Authorization: Bearer dev-token' \
  -H 'Content-Type: application/json' \
  -d '{"tool":"getDrugInfo","args":{"drug":"lisinopril"}}' | jq

______________________________________________________________________

🧵 MCP 传输(SSE / STDIO)

对于LLM(大型语言模型)代理,相同的工具也通过MCP(可能是指某种中间件或控制平台)暴露出来。

SSE传输(端口9090):

uv run python -c "import asyncio; \
from medical_mcp_toolkit.mcp_server import run_mcp_async; \
asyncio.run(run_mcp_async('sse', host='0.0.0.0', port=9090))"

STDIO传输:

uv run python -c "import asyncio; \
from medical_mcp_toolkit.mcp_server import run_mcp_async; \
asyncio.run(run_mcp_async('stdio'))"
注:该 HTTP API 由……提供服务/由……负责 uvicorn server:app. 那个 SSE/STDIO MCP 运行器是独立的(与……分开的) mcp_server.py)。 选择您需要的模式。

______________________________________________________________________

🗄️ 数据库(基于Docker的PostgreSQL)

你将获得:

  • Dockerfile.db — 生产级Postgres镜像构建器。
  • db/10_init.sql — 完整架构(患者信息、生命体征、病情、过敏史、药物;药品、相互作用;预约;审核)。
  • db/20_seed.sql — 演示数据(患者 demo-001demo-002以及基本药物KB。
  • Makefile 辅助工具: db-updb-downdb-logsdb-reset

启动数据库:

make db-up
# or direct script:
scripts/create_db.sh

管理数据库:

make db-logs    # tail logs
make db-down    # stop & remove container
make db-reset   # recreate fresh DB (drops data)

默认DSN(匹配 .env.example):

postgresql://mcp_user:mcp_password@localhost:5432/medical_db

______________________________________________________________________

🔧 脚本

  • scripts/mcp_curl_demo.sh — 跨平台演示版用于 两者 HTTP 和 SSE JSON-RPC。

示例:

# HTTP mode (health, tools, invoke)
MODE=http TOKEN=dev-token ./scripts/mcp_curl_demo.sh

# SSE JSON-RPC mode (initialize, tools/list, tools/call triage)
MODE=sse TOKEN=dev-token CALL_TOOL=triageSymptoms ./scripts/mcp_curl_demo.sh

______________________________________________________________________

🛠️ 开发

环境(由uv管理):

make install       # or: make uv-install
make fmt           # ruff format + black
make lint          # ruff check
make test          # pytest

运行HTTP API(开发版):

export BEARER_TOKEN=dev-token
make run-api
# (equivalent to: uv run uvicorn server:app --host 0.0.0.0 --port 9090)

运行MCP SSE(开发版):

uv run python -c "import asyncio; from medical_mcp_toolkit.mcp_server import run_mcp_async; asyncio.run(run_mcp_async('sse', host='0.0.0.0', port=9090))"

______________________________________________________________________

🐳 Docker(注:Docker是一个用于开发、交付和运行应用程序的开源平台)

构建并运行:

make docker-build
BEARER_TOKEN=prod-secret make docker-run
# Server will listen on container port 9090 and be mapped to localhost:9090

日志与停止:

make docker-logs
make docker-stop

直接构建数据库镜像(可选):

docker build -t medical-db -f Dockerfile.db .
docker run -d --name medical-db-container \
  -e POSTGRES_USER=mcp_user \
  -e POSTGRES_PASSWORD=mcp_password \
  -e POSTGRES_DB=medical_db \
  -p 5432:5432 \
  medical-db

______________________________________________________________________

⚙️ 配置(环境)

  • BEARER_TOKEN — 在非开发环境中进行身份验证所需。
  • DATABASE_URL — PostgreSQL 数据源名称 (DSN)(可选;如果未设置,演示将使用内存中的数据)。

- 默认(参见 .env.example): postgresql://mcp_user:mcp_password@localhost:5432/medical_db

  • MCP_LOG_LEVEL — MCP部件的日志级别(INFODEBUG,……)。
  • UVICORN_LOG_LEVEL — Uvicorn 的日志级别(infodebug,……)。
  • (适配器,在你连接实际系统时)

- DRUG_API_BASEDRUG_API_KEY - KB_BASE - SCHED_BASE

______________________________________________________________________

📬 信使

进口 postman/medical-mcp-toolkit.postman_collection.json。 设置变量:

  • baseUrlhttp://localhost:9090
  • token → 您的承载令牌(例如。, dev-token)

______________________________________________________________________

🧩 你可以用这个仓库做什么

  • 即插即用的医疗工具 对于多智能体系统(如watsonx Orchestrate等)。
  • 通过HTTP调用工具 用于快速原型制作、仪表板开发或RPA粘合工具。
  • 运行MCP传输 因此,大型语言模型(LLM)代理可以原生地调用相同的函数。
  • 交换演示适配器 在实际的电子健康记录(EHR)/药品数据库(Drug-DB)/知识库(KB)/调度系统中使用,同时保持类型化的合同(Pydantic模型 + JSON Schema)。
  • “Ship to prod”可以翻译为“发运至生产环境”或“部署到生产环境”,具体取决于上下文,但通常指的是将软件、系统或产品从开发或测试环境转移到实际生产或运行环境中 采用Docker并具有轻量级的运行开销。

______________________________________________________________________

🧯 故障排除

  • jq: parse error ... on /health那条路线返回 纯文本(text/plain)用途:
  curl -sS http://localhost:9090/health | jq -R -r .
  • 401 Unauthorized/invoke使用以下命令启动服务器: BEARER_TOKEN 并且将同样的(信息/内容)传递进去 Authorization: Bearer ...
  • 你开始了 SSE MCP 运行器 但它们正在调用HTTP端点:SSE模式不适用 /invoke使用 uvicorn server:app 用于HTTP API。
  • 检查端口绑定:
  ss -ltnp | grep 9090   # or: sudo lsof -i :9090

______________________________________________________________________

📜 许可证

Apache 2.0 —— 请参阅 LICENSE

______________________________________________________________________

🤝 致谢

以❤️倾心打造,满足生产级别的临床AI原型开发需求。 针对……优化 IBM Watsonx Orchestrate 多智能体系统和兼容的大型语言模型(LLM)运行时环境。

目录标签

目录标签

Python数据分析API集成医疗工具本地部署临床计算药物信息症状分诊医疗知识库

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

token

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiotoken部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP