项目简介
'@flexpa/mcp-fhir' 是一个实验性的MCP服务器实现,它充当LLM客户端和FHIR服务器之间的桥梁。该服务器允许LLM通过标准化的MCP协议访问和操作存储在FHIR服务器中的医疗健康数据。它定义了一系列 资源 (Resources) 和 工具 (Tools),使得LLM能够以结构化的方式获取和利用FHIR数据作为上下文信息。
请注意: 这是一个实验性项目,不建议在生产环境中使用。
主要功能点
- 资源访问 (Resources):
- 通过 'fhir://' URI 格式访问 FHIR 服务器中的各种资源,例如 Patient, Observation, MedicationRequest 等。
- 支持 FHIR 服务器 CapabilityStatement 中声明的所有资源类型。
- 返回的资源数据为标准的 FHIR JSON 格式。
- 工具调用 (Tools):
- 'search_fhir': 用于搜索 FHIR 资源。
- 允许指定要搜索的资源类型 ('resourceType') 和搜索参数 ('searchParams')。
- 返回 FHIR 搜索结果。
- 'read_fhir': 用于读取指定的 FHIR 资源。
- 通过资源的 'uri' 进行读取。
- 返回指定 URI 的 FHIR 资源。
- 'search_fhir': 用于搜索 FHIR 资源。
安装步骤
-
安装依赖
在项目根目录下,运行以下命令安装项目依赖:
npm install -
构建服务器
运行以下命令构建服务器代码:
npm run build构建后的文件将位于 'build' 目录中。
服务器配置
为了让MCP客户端(例如 Claude Desktop)连接到 '@flexpa/mcp-fhir' 服务器,你需要配置客户端的服务器配置文件。以下是 Claude Desktop 的配置示例,你需要根据你的MCP客户端进行相应的配置:
配置文件路径:
- MacOS: '~/Library/Application Support/Claude/claude_desktop_config.json'
- Windows: '%APPDATA%/Claude/claude_desktop_config.json'
配置内容 (json格式):
{ "mcpServers": { "fhir": { // 服务器名称,可以自定义,例如 "fhir-server" "command": "/path/to/@flexpa/mcp-fhir/build/index.js" // **[请替换为实际路径]** 指向构建后的 index.js 文件路径 }, "env": { "FHIR_BASE_URL": "<FHIR_BASE_URL>", // **[请替换为实际FHIR服务器地址]** 你的 FHIR 服务器的根 URL,例如 "https://hapi.fhir.org/baseR4" "FHIR_ACCESS_TOKEN": "<FHIR_ACCESS_TOKEN>" // **[请替换为实际Token,如果FHIR服务器需要]** 访问 FHIR 服务器的 SMART on FHIR 访问令牌 (如果你的 FHIR 服务器需要身份验证) } } }
配置说明:
- 'mcpServers': 定义 MCP 服务器的配置。
- 'fhir': 服务器的名称,这里设置为 "fhir",可以根据需要自定义。MCP客户端可能会使用这个名称来引用该服务器。
- 'command': [重要] 指向 '@flexpa/mcp-fhir' 服务器启动脚本的路径。你需要将 '/path/to/@flexpa/mcp-fhir/build/index.js' 替换为你的系统中 'build/index.js' 文件的绝对路径。例如,如果你的项目位于 '~/projects/mcp-fhir',则路径可能类似于 '/Users/yourusername/projects/mcp-fhir/build/index.js'。
- 'env': 设置服务器运行时的环境变量。
- 'FHIR_BASE_URL': [重要] 你需要将其替换为你的 FHIR 服务器的根 URL。例如,对于公开的 HAPI FHIR 服务器,可以使用 'https://hapi.fhir.org/baseR4'。
- 'FHIR_ACCESS_TOKEN': [可选,但通常需要] 如果你的 FHIR 服务器需要身份验证,你需要提供一个有效的 SMART on FHIR 访问令牌。将其替换为你的令牌字符串。如果你的 FHIR 服务器是公开访问的,并且不需要身份验证,则可以留空。
获取 FHIR_ACCESS_TOKEN 的说明 (如果需要):
获取 'FHIR_ACCESS_TOKEN' 的步骤取决于你的 FHIR 服务器和身份验证配置。通常,你需要注册一个 SMART on FHIR 应用,并使用授权流程(例如授权码流程)获取访问令牌。请参考你的 FHIR 服务器的文档或 SMART on FHIR 规范了解详细信息。
基本使用方法
配置完成后,你的 MCP 客户端应该能够连接到 '@flexpa/mcp-fhir' 服务器。
资源访问 (Resources):
你可以使用 'fhir://' URI 格式来访问 FHIR 资源。URI 的格式为 'fhir://<ResourceType>/<ResourceId>'。
例如:
- 'fhir://Patient/example' - 访问 Patient 类型的 ID 为 'example' 的资源。
- 'fhir://Observation/123' - 访问 Observation 类型的 ID 为 '123' 的资源。
在 MCP 客户端中,你可以尝试读取这些资源 URI,服务器将会从配置的 FHIR 服务器中获取数据并返回。
工具调用 (Tools):
你可以调用以下工具来操作 FHIR 数据:
- 'search_fhir': 调用此工具并提供 'resourceType' (例如 "Patient", "Observation") 和 'searchParams' (例如 '{"family": "Smith"}') 来搜索 FHIR 资源。
- 'read_fhir': 调用此工具并提供 'uri' (例如 "fhir://Patient/example") 来读取指定的 FHIR 资源。
具体的工具调用方法取决于你的 MCP 客户端的界面和操作方式。请参考你的 MCP 客户端文档了解如何调用工具。
调试
如果遇到问题,可以使用仓库 README 中提到的 MCP Inspector 进行调试。运行 'npm run inspector' 可以启动 Inspector,它提供了一个浏览器界面来查看 MCP 服务器和客户端之间的通信。
信息
分类
数据库与文件