肾病学知识检索工具

一个公开的肾病学知识检索服务,通过HTTP JSON-RPC和SSE提供肾病学教育内容的检索功能,适用于任何兼容MCP的客户端。

  • by wsmaisys
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 wsmaisys/Nephrology-RAG-MCP-tool

使用说明

🧬 肾脏病RAG MCP工具

肾脏学教育背景下的公共MCP兼容检索服务。

该服务可独立于MediFlow进行部署和使用。MediFlow是一个消费者,但MCP端点的设计使任何兼容MCP的客户端都可以查询肾脏病知识库,而无需直接访问嵌入、FAISS文件或Mistral凭据。

🎯 目的

  • 通过HTTP JSON-RPC和SSE公开公共肾脏病知识库。
  • 为任何兼容MCP的客户提供服务,而不仅仅是MediFlow医疗助理。
  • 在服务器端保留Mistral嵌入和FAISS向量存储。
  • 返回检索到的文档块和元数据,以便下游代理可以引用和推理基于上下文的内容。
  • 提供一个干净的公共契约,该契约足够稳定,可以独立部署和重用。

该服务仅返回教育检索上下文。它不会诊断、开处方、分流或取代临床医生的判断。

🌐 公共端点

https://nephrology-rag-mcp-tool-785629432566.us-central1.run.app/mcp

显示:

https://nephrology-rag-mcp-tool-785629432566.us-central1.run.app/mcp.json

健康检查:

GET /health   process health, may return ready=false while vector store is loading
GET /ready    readiness; returns 503 until vector store is available

🧰 MCP工具

query_nephrology_docs

检索前k个相关文档块。

论据:

  • query 字符串,必填
  • k 整数,可选,默认值 4,上限为 MAX_K
  • session_id string,可选

退货:

  • status
  • query
  • context
  • metadata
  • num_results
  • session_id
  • server
  • tool

get_server_info

返回准备状态、端点、功能、配置限制和会话元数据。

🔁 JSON-RPC调用示例

curl -X POST https://nephrology-rag-mcp-tool-785629432566.us-central1.run.app/mcp \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": "query-1",
    "method": "tools/call",
    "params": {
      "name": "query_nephrology_docs",
      "arguments": {
        "query": "acute kidney injury management",
        "k": 4
      }
    }
  }'

📡 SSE呼叫示例

curl -N -X POST https://nephrology-rag-mcp-tool-785629432566.us-central1.run.app/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: text/event-stream" \
  -d '{
    "jsonrpc": "2.0",
    "id": "stream-1",
    "method": "tools/call",
    "params": {
      "name": "query_nephrology_docs",
      "transport": "http/sse",
      "arguments": {
        "query": "chronic kidney disease stages",
        "k": 3
      }
    }
  }'

⚙️ 本地设置

python -m venv venv
venv\Scripts\Activate.ps1
pip install -r requirements.txt

创建 .env:

MISTRAL_API_KEY=your_mistral_api_key
HOST=0.0.0.0
PORT=8000
DEFAULT_K=4
MAX_K=10
MAX_QUERY_CHARS=1000
PUBLIC_BASE_URL=http://localhost:8000

运行:

python rag_mcp_server.py

✅ 测试

pytest test_mcp_contract.py -q

合约测试验证了公共清单、工具模式、JSON-RPC行为和准备就绪预期。

☁️ 部署

此服务专为从其自己的存储库独立自动部署而设计。Cloud Run应提供:

  • MISTRAL_API_KEY
  • PUBLIC_BASE_URL=https://nephrology-rag-mcp-tool-785629432566.us-central1.run.app
  • 可选的 DEFAULT_K
  • 可选的 MAX_K
  • 可选的 MAX_QUERY_CHARS

这项服务是公共的。客户端不发送Mistral密钥。如果以后需要滥用保护,请添加网关级速率限制,而不是将此服务器耦合到MediFlow身份验证。

🤝 MediFlow集成合同

MediFlow应通过以下方式指向此服务:

NEPHROLOGY_MCP_URL=https://nephrology-rag-mcp-tool-785629432566.us-central1.run.app/mcp

MediFlow仍负责:

  • 患者验证
  • 患者背景
  • 临床提示
  • 安全免责声明
  • 决定何时使用RAG与网络搜索

此MCP服务仍负责:

  • 矢量存储加载
  • 肾脏病学语义检索
  • 公共MCP兼容JSON-RPC和SSE响应
  • 返回检索到的带有元数据的上下文,用于下游接地

🛡️ 安全注意事项

  • 检索输出是教育背景,而不是医学建议。
  • 下游助理必须决定如何呈现、引用和限定检索到的上下文。
  • 患者特定的决策必须来自消费临床应用程序,而不是此检索服务。
  • 在服务器端保留Mistral凭据;永远不要把它们暴露给公众客户。