使用说明
🧬 肾脏病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_Ksession_idstring,可选
退货:
statusquerycontextmetadatanum_resultssession_idservertool
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_KEYPUBLIC_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凭据;永远不要把它们暴露给公众客户。
