项目简介
'omop_mcp' 是一个基于 Model Context Protocol (MCP) 构建的服务器,旨在帮助大型语言模型(LLM)将复杂的临床术语映射到 Observational Medical Outcomes Partnership (OMOP) 通用数据模型中的标准化概念。它通过提供特定的工具和上下文资源,使得LLM能够准确地搜索、验证和转换医学概念,从而实现医疗数据的标准化和互操作性。
主要功能点
- 临床术语映射: 将用户提供的临床术语(如疾病、药物、测量等)映射到OMOP标准概念。
- OMOP 概念验证: 验证映射结果的准确性和有效性。
- OMOP 词汇表搜索: 在OMOP词汇表中搜索相关概念,提供详细的元数据。
- 跨编码系统转换: 支持不同临床编码系统之间的概念转换。
- 提供OMOP上下文资源: 允许LLM访问OMOP表结构、官方文档和首选词汇表等信息,增强映射的准确性。
- Prompt 模板管理: 提供预定义的Prompt模板,简化LLM与服务器的交互。
安装步骤
-
克隆仓库: 将'omop_mcp' GitHub 仓库克隆到您的本地机器上。
git clone https://github.com/OHNLP/omop_mcp.git cd omop_mcp -
安装依赖: 建议使用 'uv' 或 'pip' 等工具安装项目所需的Python依赖。
# 使用 uv 安装 (推荐) uv sync # 或者使用 pip 安装 pip install -e . -
配置环境变量: 在项目根目录创建一个 '.env' 文件,并根据您的OpenAI或Azure OpenAI服务配置相关API密钥和模型信息(此MCP服务器依赖LLM来选择最终的映射结果)。
例如,这是一个 '.env' 文件的内容示例(请根据您的实际情况填写):
# 如果使用 Azure OpenAI AZURE_OPENAI_ENDPOINT_WEST="YOUR_AZURE_OPENAI_ENDPOINT" AZURE_OPENAI_API_KEY_WEST="YOUR_AZURE_OPENAI_KEY" AZURE_API_VERSION_WEST="2024-02-01" MODEL_NAME="YOUR_AZURE_DEPLOYMENT_NAME" # 如果使用 OpenAI # OPENAI_API_KEY="YOUR_OPENAI_KEY" # MODEL_NAME="gpt-4o"
服务器配置 (用于 MCP 客户端)
此MCP服务器是为MCP客户端(如 Claude Desktop 或其他支持 MCP 协议的 LLM 应用)提供服务的。您需要将以下配置添加到您的 MCP 客户端的配置文件中。
例如,在 'claude_desktop_config.json' 文件中添加:
{ "mcpServers": { "omop_mcp": { "command": "uv", "args": ["--directory", "<path-to-local-repo>", "run", "omop_mcp"] } } }
- '"omop_mcp"': 这是此MCP服务器在客户端中的唯一标识名称。
- '"command"': 启动服务器的可执行文件命令,这里推荐使用 'uv' (一个快速的 Python 包安装器和运行器)。
- '"args"': 传递给 'command' 的参数。
- '"--directory", "<path-to-local-repo>"': 指定您的 'omop_mcp' 本地仓库的绝对路径。
- '"run", "omop_mcp"': 'uv' 工具的命令,用于运行 'omop_mcp' Python 包中的主函数,从而启动MCP服务器。
基本使用方法 (通过 LLM 客户端)
配置完成后,当您的MCP客户端(如 Claude Desktop)启动并连接到 'omop_mcp' 服务器后,您可以在 LLM 的对话界面中通过自然语言请求OMOP概念映射。
用户 Prompt 示例: "Map 'Temperature Temporal Scanner - RR' for 'measurement_concept_id' in the 'measurement' table."
LLM 响应示例 (由 MCP 服务器的工具处理后生成):
CONCEPT_ID: 46235152 CODE: 75539-7 NAME: Body temperature - Temporal artery CLASS: Clinical Observation CONCEPT: Standard VALIDITY: Valid DOMAIN: Measurement VOCAB: LOINC URL: https://athena.ohdsi.org/search-terms/terms/46235152 REASON: This LOINC concept specifically represents body temperature measured at the temporal artery, which is what a temporal scanner measures. The "RR" in your source term likely refers to "Recovery Room" or another location/department indicator, but in OMOP, the location would typically be captured in a separate field rather than as part of the measurement concept itself.
此过程通常由LLM自动调用 'find_omop_concept' 工具来完成,用户只需提供意图清晰的查询即可。
信息
分类
AI与计算