mcpField
O
omophub-mcp

omophub-mcp

本地服务
github.com/OMOPHub健康医疗64 天前更新

关于 omophub-mcp

omophub-mcp 是面向临床研究人员和健康数据团队的 MCP 服务,用于检索和处理 OMOP 医学词汇,支持概念查找、跨词汇映射、层级浏览及 FHIR 到 OMOP 的解析。

主要功能

  1. 01跨词汇搜索医学概念
  2. 02在不同词汇间映射概念
  3. 03浏览概念层级
  4. 04语义搜索与相似概念查找
  5. 05将 FHIR 代码解析为 OMOP

适用场景

  1. 01查找临床术语的 OMOP ID
  2. 02验证代码并检查映射
  3. 03构建表型概念集
  4. 04将 FHIR 值解析到 OMOP

MCP 相关

向 MCP 客户端提供 OMOP 词汇搜索、查找、映射、层级浏览和 FHIR 解析工具,以及词汇资源与引导提示词。支持 stdio 和 HTTP 连接。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"omophub-omophub": {
"command": "npx",
"args": [
"-y",
"@omophub/omophub-mcp"
],
"env": {
"OMOPHUB_API_KEY": "<OMOPHUB_API_KEY>"
}
}
}
}
启动命令npx -y @omophub/omophub-mcp
需要配置的环境变量
OMOPHUB_API_KEY密钥Your OMOPHub API key. Get one at https://omophub.com/dashboard/api-keys

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@omophub/omophub-mcp1.1.0

工具

6

收录的工具列表 · 更新于 2 周前

参数类型必填说明
pagenumber否页码(从 1 开始,默认值为 1)
querystring是要搜索的医学术语或概念名称
page_sizenumber否返回结果数(1–50,默认值为 10)
domain_idsstring否用于筛选的逗号分隔领域 ID。例如:'Condition'、'Drug'、'Measurement'、'Procedure'。留空则搜索所有领域。
vocabulary_idsstring否用于筛选的逗号分隔词汇 ID。例如:'SNOMED'、'ICD10CM'、'RxNorm'、'LOINC'。留空则搜索所有词汇。
standard_conceptenum否按标准概念状态筛选:'S' 表示标准,'C' 表示分类。省略则搜索全部。S | C

详细介绍

OMOPHub MCP 服务

为 AI Agent 提供医学词汇表。
搜索、映射和浏览 1,100 多万个 OMOP 概念:SNOMED CT、ICD-10、RxNorm、LOINC 等。可直接通过 Claude、Cursor、VS Code 或任何兼容 MCP 的客户端使用。

npm 版本 Codecov npm 下载量 许可证 TypeScript 兼容 MCP

快速开始 · 工具 · 示例 · 文档 · 网站


为什么选择 OMOPHub MCP?

如今使用医学词汇表意味着要下载数 GB 的 CSV 文件,将其载入本地数据库,再编写 SQL 查找所需内容。每次都如此。

OMOPHub MCP 服务让你的 AI 助手即时访问整个 OHDSI ATHENA 词汇表。无需设置数据库,无需处理 CSV,无需切换上下文。直接提问即可。

You: "Map ICD-10 code E11.9 to SNOMED"

Claude: Found it - E11.9 (Type 2 diabetes mellitus without complications)
        maps to SNOMED concept 201826 (Type 2 diabetes mellitus)
        via standard 'Maps to' relationship.

使用场景:

  • 概念查询 - 在几秒内查找临床术语对应的 OMOP 概念 ID
  • 跨词汇表映射 - 在 ICD-10、SNOMED、RxNorm、LOINC 和 120 多种词汇表之间进行映射
  • 层级浏览 - 探索祖先概念和后代概念,以定义表型
  • 构建概念集 - 让你的 AI Agent 为队列定义组装完整的概念集
  • 代码验证 - 验证医学代码并检查其标准映射

快速开始

1. 获取 API 密钥

在 omophub.com 注册 → 在控制面板中创建 API 密钥。

2. 添加到 AI 客户端
Claude Desktop

打开 Claude Desktop 设置 >“Developer”选项卡 >“Edit Config”。添加到 claude_desktop_config.json:

{
  "mcpServers": {
    "omophub": {
      "command": "npx",
      "args": ["-y", "@omophub/omophub-mcp"],
      "env": {
        "OMOPHUB_API_KEY": "oh_your_key_here"
      }
    }
  }
}
Claude Code
claude mcp add omophub -- npx -y @omophub/omophub-mcp
# Then set OMOPHUB_API_KEY in your environment
Cursor

打开命令面板并选择“Cursor Settings” >“MCP” >“Add new global MCP server”。添加到 .cursor/mcp.json:

{
  "mcpServers": {
    "omophub": {
      "command": "npx",
      "args": ["-y", "@omophub/omophub-mcp"],
      "env": {
        "OMOPHUB_API_KEY": "oh_your_key_here"
      }
    }
  }
}
VS Code

添加到 .vscode/mcp.json:

{
  "servers": {
    "omophub": {
      "command": "npx",
      "args": ["-y", "@omophub/omophub-mcp"],
      "env": {
        "OMOPHUB_API_KEY": "oh_your_key_here"
      }
    }
  }
}
Streamable HTTP(远程 / 托管)

将 MCP 服务作为 HTTP 服务运行,客户端通过 URL 连接:

# Start HTTP server on port 3100
npx -y @omophub/omophub-mcp --transport=http --port=3100 --api-key=oh_your_key_here

# MCP endpoint: http://localhost:3100/mcp
# Health check:  http://localhost:3100/health

将 MCP 客户端连接到 / 或 /mcp。适用于集中式部署,多个 AI Agent 可共用一个服务实例。

托管服务(mcp.omophub.com)

直接连接到 OMOPHub 托管的 MCP 服务,无需安装。每个客户端都通过 Authorization 标头使用自己的 API 密钥进行身份验证:

Claude Code:

claude mcp add omophub --transport http \
  -H "Authorization: Bearer oh_your_key_here" \
  https://mcp.omophub.com

VS Code(.vscode/mcp.json):

{
  "servers": {
    "omophub": {
      "type": "http",
      "url": "https://mcp.omophub.com",
      "headers": { "Authorization": "Bearer oh_your_key_here" }
    }
  }
}

Cursor / Windsurf:

{
  "mcpServers": {
    "omophub": {
      "url": "https://mcp.omophub.com",
      "headers": { "Authorization": "Bearer oh_your_key_here" }
    }
  }
}

注意: Claude Desktop 的 Custom Connectors 界面仅支持 OAuth,无法发送自定义标头。请改用 npx 设置。

Docker
# HTTP mode (default in Docker) - serves MCP on port 3100
docker run -e OMOPHUB_API_KEY=oh_your_key_here -p 3100:3100 omophub/omophub-mcp

# Stdio mode (for piping)
docker run -i -e OMOPHUB_API_KEY=oh_your_key_here omophub/omophub-mcp --transport=stdio
3. 开始提问

“2 型糖尿病的 OMOP 概念 ID 是什么?”

“将 ICD-10 代码 E11.9 映射到 SNOMED”

“显示 SNOMED 中 Diabetes mellitus 的所有后代概念”


可用工具

工具功能
search_concepts在所有词汇中按名称或临床术语搜索医学概念
get_concept根据 concept_id 获取特定 OMOP 概念的详细信息
get_concept_by_code使用特定词汇的代码查找概念(例如 ICD-10 E11.9)
map_concept将概念映射到其他词汇中的等效概念(分页 — 见下方说明)
get_hierarchy浏览概念层级结构 — 祖先、后代或两者
list_vocabularies列出可用的医学词汇及统计信息
semantic_search使用自然语言和神经嵌入进行搜索(理解临床含义)
find_similar_concepts查找与参考概念、名称或描述相似的概念
explore_concept一次调用即可获取概念详情、层级结构和跨词汇映射
fhir_resolve将 FHIR 编码值(包括通过 HL7 FHIR-to-OMOP IG ConceptMaps 映射的行政代码)解析为对应的 OMOP 标准概念和 CDM 目标表
fhir_resolve_codeable_concept解析 FHIR CodeableConcept — 根据 OHDSI 词汇优先级选取最佳匹配,同时遵循 userSelected
资源
URI描述
omophub://vocabularies包含统计信息的完整词汇目录
omophub://vocabularies/{vocabulary_id}特定词汇的详情
提示词
提示词描述
phenotype-concept-set通过引导式工作流,为临床表型构建概念集
code-lookup查找并验证医学代码及其映射和层级结构

示例提示词

查找概念 → search_concepts

"在 RxNorm 中搜索 metformin"

跨词汇映射 → map_concept

"我有 SNOMED 概念 201826——对应的 ICD-10 编码是什么?"

构建概念集 → search_concepts → get_hierarchy → map_concept

"帮我构建一个 2 型糖尿病概念集,包含所有后代概念"

完整性在这里至关重要。 map_concept 一次返回一页 (page_size 为 1-200,默认值为 100)。广泛使用的药物成分可能有远超 1,000 个 NDC 映射,因此单次调用得到的是样本,而非完整结果。检查 响应中的 has_more,并持续递增 page,直到其值为 false—— 否则概念集看起来完整,实际上却悄悄漏掉了一些编码。

使用 find_similar_concepts 进行探索,而非用于此目的:它基于嵌入相似度 排序,因此无法判断概念是否属于某个集合,也无法做到穷尽搜索,无论 page_size 设置得多大都一样。

验证编码 → get_concept_by_code → map_concept

"ICD-10 编码 E11.9 有效吗?它映射到 SNOMED 中的什么概念?"

语义搜索 → semantic_search

"查找与“心脏病发作”相关的概念"

探索概念 → explore_concept

"提供有关 SNOMED 概念 201826 的所有信息"

FHIR 到 OMOP 的解析 → fhir_resolve

"将 FHIR SNOMED 编码 44054006 解析到 OMOP——它应放在哪个表中?"

CodeableConcept → fhir_resolve_codeable_concept

"这个 CodeableConcept 同时包含 SNOMED 44054006 和 ICD-10 E11.9——用于 OMOP 时我应该选哪个?"

查找相似概念 → find_similar_concepts

"有哪些概念与“2 型糖尿病”相似?"


配置

环境变量
变量必需描述
OMOPHUB_API_KEY✅你的 OMOPHub API 密钥
OMOPHUB_BASE_URL自定义 API 基础 URL(默认值:https://api.omophub.com/v1)
OMOPHUB_LOG_LEVELdebug · info · warn · error(默认值:info)
OMOPHUB_ANALYTICS_OPTOUT设置为 true 以禁用分析请求头
OMOPHUB_USER_AGENT_SUFFIX可选的部署标识符,附加到 omophub-mcp/<version> 后(默认值:无)
MCP_TRANSPORTstdio(默认值)或 http
MCP_PORTHTTP 服务端口(默认值:3100,仅在使用 http 传输时生效)
HEALTH_PORTstdio 模式下独立健康检查端点的端口(默认值:禁用)
CLI 参数
# Stdio mode (default)
npx @omophub/omophub-mcp --api-key=oh_your_key --base-url=https://custom.api.com/v1

# HTTP mode
npx @omophub/omophub-mcp --transport=http --port=3100 --api-key=oh_your_key

# Stdio mode with standalone health endpoint
npx @omophub/omophub-mcp --api-key=oh_your_key --health-port=8080
健康检查端点(Docker / Kubernetes)

在 HTTP 模式下,健康检查端点位于 MCP 端点所在的同一端口,路径为 /health:

npx @omophub/omophub-mcp --transport=http --port=3100 --api-key=oh_your_key
curl http://localhost:3100/health
# → {"status":"ok","version":"1.5.0","uptime_seconds":42}

在 stdio 模式下,使用 --health-port 启用独立健康检查端点:

HEALTH_PORT=8080 OMOPHUB_API_KEY=oh_your_key npx @omophub/omophub-mcp
curl http://localhost:8080/health

Docker 镜像默认使用端口 3100 的 HTTP 模式,并内置健康检查。


开发

git clone https://github.com/OMOPHub/omophub-mcp.git
cd omophub-mcp
npm install
npm run build
npm test

本地运行:

OMOPHUB_API_KEY=oh_your_key npx tsx src/index.ts

故障排除

错误解决方案
API key required在环境变量或 MCP 配置中设置 OMOPHUB_API_KEY
Authentication failedAPI 密钥可能无效或已过期 - 生成新密钥
Rate limit exceeded已内置自动重试。如需更高限额,升级套餐
未显示工具重启 AI 客户端,确认 npx @omophub/omophub-mcp 运行时没有错误,并检查配置路径

链接


许可证

MIT - 参见 LICENSE

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。