项目简介

这是一个基于 Model Context Protocol (MCP) 标准实现的服务器,专门用于与遵循 Observational Medical Outcomes Partnership (OMOP) 公共数据模型 (CDM) 的医疗数据库进行交互。它允许 LLM 客户端通过结构化的方式访问和查询 OMOP 数据库中的医疗健康数据,为 AI 应用提供必要的上下文信息。

主要功能点

  • 数据访问能力: 提供对 OMOP 数据库的标准化访问接口。
  • 信息架构查询: LLM 可以通过工具获取 OMOP 数据库中允许访问的表和列的信息架构,了解数据结构。
  • 安全查询执行: 允许 LLM 调用工具执行针对 OMOP 数据库的只读 SELECT 查询,并获取结果(默认为 CSV 格式,且有行数限制)。
  • MCP 标准接口: 通过 JSON-RPC 协议实现与 LLM 客户端通信,提供能力声明和会话管理。
  • 环境配置: 支持通过环境变量配置数据库连接。

安装步骤

  1. 克隆仓库: 从 GitHub 克隆本仓库到本地。
  2. 安装 Python: 确保您的系统安装了 Python 3.8 或更高版本。
  3. 安装依赖: 进入仓库目录,根据项目导入的库安装必要的依赖。主要依赖包括 'fastmcp' (MCP 服务器框架)、'ibis' (数据库抽象层) 以及您所使用的特定数据库的 'ibis' 后端(例如 'ibis.backends.duckdb')。通常可以通过 'pip install -r requirements.txt' 安装(如果项目提供了 'requirements.txt'),或者手动安装:
    pip install fastmcp ibis ibis-framework[duckdb] python-dotenv # 根据需要替换 [duckdb] 为您的数据库类型
  4. 配置数据库连接: 设置一个名为 'DB_CONNECTION_STRING' 的环境变量,其值是您 OMOP 数据库的连接字符串。例如,对于 DuckDB 文件:'export DB_CONNECTION_STRING="duckdb:///path/to/your/omop.duckdb"'。建议使用 '.env' 文件来管理此配置。

服务器配置

此 MCP 服务器设计为通过标准的 Stdio 传输协议运行。LLM 客户端需要配置以下信息来启动并连接到此服务器:

  • 'server name': '"OMOP MCP Server"'
  • 'command': LLM 客户端用于启动服务器进程的命令,例如 'python'
  • 'args': 传递给命令的参数列表,例如 '["-m", "omcp.main"]'。请注意,数据库连接字符串通过环境变量传递,不在此处配置。
  • 'transport': '"stdio"'

客户端配置示例(JSON 格式描述):

{
  "server name": "OMOP MCP Server",
  "command": "python",
  "args": ["-m", "omcp.main"],
  "transport": "stdio"
}

(请注意:上方是描述性信息,客户端应根据实际环境构建对应的 JSON 配置,而非直接复制此文本块。)

基本使用方法

配置并启动服务器后,LLM 客户端可以通过 MCP 协议调用暴露的工具:

  • 调用 'Get_Information_Schema' 工具: 无需参数,获取数据库表结构信息(CSV 格式)。
  • 调用 'Select_Query' 工具: 接受一个名为 'query' 的字符串参数,其值为一个 SQL SELECT 语句。服务器将执行该查询并返回结果(CSV 格式)。请注意,服务器可能限制查询的表和列,并且仅允许 SELECT 语句。

LLM 可以利用这些工具来探索 OMOP 数据库结构、检索特定医疗数据,并将其作为生成响应或执行任务的上下文。

信息

分类

数据库与文件