项目简介

'@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 资源。

安装步骤

  1. 安装依赖

    在项目根目录下,运行以下命令安装项目依赖:

    npm install
  2. 构建服务器

    运行以下命令构建服务器代码:

    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 服务器和客户端之间的通信。

信息

分类

数据库与文件