FHIR MCP Server 是一个实现完整 Model Context Protocol (MCP) 的服务器,旨在促进基于 LLM 的智能体与符合 FHIR 标准的后端之间的无缝交互。它提供标准化接口,通过一套全面的工具支持对 FHIR 资源的完整 CRUD 操作,可从 MCP 兼容客户端(如 Claude Desktop)访问,允许用户使用自然语言提示查询和操作临床数据。
主要能力:
- 基于 FastMCP 框架构建,提供高性能 MCP 服务器能力。
- 对主要 FHIR 资源提供完整 CRUD 操作。
- 智能文档处理:支持 TXT、CSV、JSON 和 PDF 等多种格式的 AI 驱动文档摄取和分块。
- 语义搜索:通过向量嵌入(经由 Pinecone)进行高级文档搜索。
- RAG 就绪:具备上下文感知文档查询的检索增强生成管道。
- 安全认证:OAuth2 令牌管理,用于 FHIR API 集成。
- LOINC 集成:标准化医学术语查询和验证。
- 容器就绪:支持 Docker,便于部署和扩展。
- 可配置:提供基于 .env 的丰富配置选项。
架构: 服务器采用模块化架构,包括:
- MCP 工具:针对选定 FHIR 资源类型的专用工具,其他资源由通用工具处理。
- FHIR 服务器客户端:处理 FHIR API 通信和认证(OAuth2 及计划中的其他方式)。
- RAG 服务:基于嵌入的文档处理和语义检索。
- 向量存储:Pinecone 集成,用于基于相似度的搜索。
- LOINC 客户端:与 LOINC API 集成,用于术语解析和验证。
使用方式:
- 环境准备:需要 Docker(推荐)或 uv 进行依赖管理;FHIR 服务器账户(如 Medplum);Pinecone API 密钥(文档搜索必需);LOINC 账户(可选)。
- 安装与设置:
- 克隆仓库:git clone https://github.com/the-momentum/fhir-mcp-server && cd fhir-mcp-server
- 设置环境变量:cp config/.env.example config/.env,并编辑 config/.env 填入凭据和配置。
- 安装依赖:Docker 方式运行 make build;uv 方式运行 make uv。
- 更新 MCP 客户端配置(如 Claude Desktop 的 claude_desktop_config.json)。
- 重启 MCP 客户端以应用更改。
Docker 配置示例: { "mcpServers": { "docker-mcp-server": { "command": "docker", "args": [ "run", "-i", "--rm", "--init", "--name", "fhir-mcp-server", "--mount", "type=bind,source=<your-project-path>/app,target=/root_project/app", "--mount", "type=bind,source=<your-project-path>/config/.env,target=/root_project/config/.env", "-e", "TRANSPORT_MODE=stdio", "mcp-server:latest" ] } } }
uv 配置示例: { "mcpServers": { "uv-mcp-server": { "command": "uv", "args": ["run", "--frozen", "--directory", "<your-project-path>", "start"], "env": { "PATH": "<uv-bin-folder-path>" } } } }
安全与加密: 内置加密基础设施保护敏感配置值。敏感字段如 API 密钥和密码在运行时自动加密和解密。可使用自动化设置脚本,或手动生成主密钥并加密敏感值。自动加密的字段包括:FHIR_SERVER_CLIENT_SECRET、LOINC_PASSWORD、PINECONE_API_KEY。
工具集:
- FHIR 资源工具:支持所有 FHIR 资源的创建、读取、更新、删除操作,并强制执行 FHIR 资源验证,防止数据损坏,提供全面的错误响应。
- 文档管理工具:支持 TXT、PDF、CSV、JSON 格式的文档摄取,以及基于向量嵌入的语义搜索。
- LOINC 术语工具:标准化医学术语查询和验证。
适用场景:
- 通过自然语言查询患者病史、诊断、用药、就诊等信息。
- 生成和部署测试数据以验证 FHIR 服务器功能。
- 医疗数据文档的语义搜索和 RAG 应用。
限制:
- 文档搜索功能需要 Pinecone API 密钥,否则语义检索不可用。
- LOINC 账户为可选,但缺少时系统依赖静态或语言模型推断的代码,可能过时或不精确。
- 项目未针对测试数据生成场景设计,演示中显示可能无法完美工作,但 LLM 可通过试错纠正错误选择。
- 未来计划包括扩展认证选项、更多文件格式支持、表格感知文档分块、扫描文档 OCR 支持。
许可证:MIT License。