Token导航 LogoToken导航TokenDH.com
Medical Terminologies MCP logo
AI代理stdio官方级别未说明来源级核验

Medical Terminologies MCP

MCP Server

@modelcontextprotocol/inspector

一个提供统一访问全球主要医学术语的模型上下文协议(MCP)服务器,适用于研究人员、公共卫生分析师和临床信息学开发人员。

工具数

37

提示词数

0

GitHub Stars

3

资源数

0
TypeScriptClaudeAI代理Claude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

SidneyBissoli

提供方

SidneyBissoli

最后核验

2026/5/17 20:19

运行时

Node.js

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

npx @modelcontextprotocol/inspector --transport streamable-http \

详细介绍

医疗术语MCP服务器

](https://www.npmjs.com/package/medical-terminologies-mcp) ![License: MIT](https://opensource.org/licenses/MIT) ![MCP](https://modelcontextprotocol.io) ![LobeHub MCP server](https://lobehub.com/mcp/sidneybissoli-medical-terminologies-mcp) ![Glama MCP server](https://glama.ai/mcp/servers/SidneyBissoli/medical-terminologies-mcp) ![tool calls](https://medical-terminologies-mcp.sidneybissoli.workers.dev/stats)

模型上下文协议(MCP)服务器,提供对全球主要医学术语的统一访问:

  • ICD-11 -国际疾病分类(世界卫生组织)
  • 临床术语 -药物系统命名法 *(选择加入;需要自托管暴风雪)*
  • 腰部 -逻辑观测标识符名称和代码
  • RxNorm -临床药物的标准化名称(NIH)
  • 医学主题词 -医学主题标题(NLM)
  • 空中交通管制 -解剖治疗化学分类(世界卫生组织合作中心,通过NLM RxClass提供服务)
  • CID-10 -ICD-10的巴西葡萄牙语翻译(DataSUS V2008,捆绑)

特性

  • 31个默认工具(37个启用SNOMED)用于医学术语查找
  • 3 MCP 提示 将工具调用编排到命名工作流中(find-medical-code, drug-info, cid10-portuguese-lookup)--客户端将这些呈现为单击用户操作
  • 4 MCP 资源 用于过程中参考内容(info://server, info://cid10/chapters, info://licenses, info://stats)--亚毫秒读取(除 info://stats 往返托管端点上的StatsCounter持久对象)
  • 单个服务器中的多术语支持
  • 跨术语映射和搜索
  • 内置缓存以提高性能
  • 遵守API限制的费率限制
  • 格式丰富的详细回复
  • 两种运输方式: 标准 (默认值;适用于Claude Desktop、IDE客户端)和 流式HTTP (对于托管部署,默认情况下在边缘的Cloudflare Workers、Smithery URL提交或自托管Docker上运行)

这是给谁的?

此服务器是 临床护理决策工具——执业临床医生有专门的助理(UpToDate AI、OpenEvidence、EHR集成工具)。实际受众是研究人员、公共卫生分析师、临床信息学开发人员和教育工作者,他们需要通过程序访问权威术语数据。

如果你是…开始为什么
生物医学研究员/文献学家mesh_search, mesh_descriptor, mesh_treeMeSH是PubMed的索引词汇;树编号允许您以编程方式遍历受控层次结构
公共卫生分析员(巴西/SUS)cid10_search, cid10_chapters, atc_classifyCID-10 V2008是巴西的操作标准;ATC与DataSUS处方数据完美配对
公共卫生分析员(国际)icd11_search, icd11_lookup, icd11_chapters世界卫生组织ICD-11是目前的国际修订版;章节和层次结构支持管道分类
临床信息开发人员loinc_search, loinc_details, find_equivalentLOINC用于实验室/观察互操作性;跨术语搜索构建新映射
教育工作者/课程作者mesh_descriptor, icd11_lookup, rxnorm_search权威定义、树编号和药物术语类型,您可以放入自检练习中

尝试托管实例(不安装)

Cloudflare Workers的公共部署在以下位置运行:

https://medical-terminologies-mcp.sidneybissoli.workers.dev/mcp

通过MCP检查器或任何可流式HTTP MCP客户端连接:

npx @modelcontextprotocol/inspector --transport streamable-http \
  --server-url https://medical-terminologies-mcp.sidneybissoli.workers.dev/mcp

或者通过Smithery安装,Smithery通过网关代理同一端点:

npx -y smithery mcp add sidneybissoli/medical-terminologies

托管实例配置了世界卫生组织凭据,因此所有31个默认工具都可以在没有任何设置的情况下工作。对于您自己的部署(例如公司网络、不同地区、自定义世界卫生组织证书),请参阅 安装托管在Cloudflare Workers上 下面的部分。

安装

全局安装(推荐)

npm install -g medical-terminologies-mcp

本地安装

npm install medical-terminologies-mcp

配置

克劳德桌面版

添加到您的Claude Desktop配置文件中:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json 视窗: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "medical-terminologies": {
      "command": "npx",
      "args": ["-y", "medical-terminologies-mcp"],
      "env": {
        "WHO_CLIENT_ID": "your-who-client-id",
        "WHO_CLIENT_SECRET": "your-who-client-secret"
      }
    }
  }
}

环境变量

变量必填描述
WHO_CLIENT_ID是?世界卫生组织ICD API客户ID
WHO_CLIENT_SECRET是?世界卫生组织ICD API客户秘密
WHO_ICD11_RELEASE_IDICD-11版本可供查询(例如。 2024-01, 2025-01).默认 2024-01.
ENABLE_SNOMED_TOOLS否²设置为 true 注册6个SNOMED相关工具。默认关闭
SNOMED_BASE_URLNo²暴风雪实例的基本URL,例如。 https://my-snowstorm.example.com/snowstorm/snomed-ct.
SNOMED_LANGUAGE否²接受SNOMED响应的语言标签,例如。 pt, pt-BR, es.默认值 en单个标签值被可靠地传递;具有q权重的复合值(例如。 pt-BR,en;q=0.8)取决于Snowstorm实例的Accept-Language处理——回退语义可能会有所不同。如果依赖于加权回退,请针对您的特定部署进行测试。
LOG_LEVEL引脚日志级别(debug, info, warn, error, fatal).默认 info.

¹ICD-11工具需要。获取凭据:https://icd.who.int/icdapi.

²参见 SNOMED CT设置(高级) 在......下面LOINC、RxNorm和MeSH不需要配置。

HTTP传输(托管/共享部署)

默认情况下,服务器在stdio上运行——这是Claude Desktop和IDE客户端所期望的。对于托管部署(Cloudflare Workers、Smithery、您自己的Docker容器),请通过 --http 切换到流式HTTP传输:

medical-terminologies-mcp --http --port 3000
# or, in Docker / containers:
medical-terminologies-mcp --http --host 0.0.0.0 --port 3000
标志环境变量默认值描述
--httpMCP_HTTP=trueoff启用流式HTTP传输而不是stdio
--port NPORT3000要侦听的TCP端口(使用 0 对于临时端口)
--host HHOST127.0.0.1绑定地址。通过 0.0.0.0 用于容器/托管用途

终点:

  • POST /mcp --基于流式HTTP(MCP协议)的JSON-RPC。无状态模式:每个请求都是独立的,没有会话cookie。
  • GET /health --活性探针返回 { status, name, version, tool_count } 用于负载均衡器和正常运行时间监视器。
  • CORS是允许的(*)因此浏览器客户端(例如MCP Inspector web UI)可以直接连接。

从另一个终端进行快速烟雾测试:

curl -sS http://localhost:3000/health
# {"status":"ok","name":"medical-terminologies-mcp","version":"1.5.0","tool_count":31}

# Inspector via HTTP
npx @modelcontextprotocol/inspector --transport streamable-http --server-url http://localhost:3000/mcp

托管在Cloudflare Workers上(主要)

生产部署是Cloudflare Worker。来源生活在 src/worker.ts,配置中 wrangler.toml,并在中部署CI .github/workflows/deploy-worker.yml (每次按下都会自动运行 main).

要部署自己的实例,请执行以下操作:

npm ci
npm run build:worker
npx wrangler login         # one-time, browser flow
npx wrangler deploy        # publishes to ..workers.dev
# Set ICD-11 secrets so those 5 tools work:
npx wrangler secret put WHO_CLIENT_ID
npx wrangler secret put WHO_CLIENT_SECRET

公共端点是 POST https://..workers.dev/mcp.CORS是允许的,因此MCP检查器web UI直接连接。 /health 回报 { status, name, version, tool_count, uptime_s }.

Why Workers:边缘零冷启动,1000万请求每月5美元(免费层每天可覆盖高达10万个请求),无需调整或重启虚拟机。第一阶段部署使用每个隔离缓存+速率限制器——适用于中等流量;在持续的高负载下,交换Workers KV缓存和持久对象速率限制器(跟踪为PROGRESS.md第11.9阶段第2阶段随访)。

在Smithery上市

在您的Worker上线后,在Smithery上注册URL:

  1. 访问https://smithery.ai → 发布→ MCP (或 https://smithery.ai/new).
  2. 选择 统一资源定位符 提交路径(Smithery在2024年弃用了容器托管——现在支持的流是URL)。
  3. 粘贴 https://.workers.dev/mcp.Smithery的网关扫描合规性和代理流量。

自托管Docker(替代方案)

如果您更愿意在自己的基础架构中运行服务器(私有部署、内部合规约束、本地),该仓库包括 Dockerfile:

docker build -t medical-terminologies-mcp .
docker run --rm -p 3000:3000 \
  -e PORT=3000 \
  -e WHO_CLIENT_ID=... -e WHO_CLIENT_SECRET=... \
  medical-terminologies-mcp

多阶段构建(~150 MB),运行 node dist/index.js --http,绑定 0.0.0.0:$PORT。与Workers部署相同的MCP端点。

可用工具(默认情况下为31个,启用SNOMED时为37个)

ICD-11工具(5)

工具说明示例
icd11_search按术语搜索ICD-11query: "diabetes mellitus"
icd11_lookup通过代码/URI获取实体详细信息code: "5A11"
icd11_hierarchy导航父/子关系code: "5A11"
icd11_chapters列出所有ICD-11章节-
icd11_postcoordination获取后协调轴code: "5A11"

LOINC工具(4)

工具说明示例
loinc_search搜索实验室测试和观察结果query: "glucose"
loinc_details获取完整的LOINC代码详细信息loinc_num: "2339-0"
loinc_answers获取调查答案列表loinc_num: "44249-1"
loinc_panels获取面板/表单结构loinc_num: "24331-1"

RxNorm工具(5)

工具说明示例
rxnorm_search按名称搜索药物query: "metformin"
rxnorm_concept获取药物概念详细信息rxcui: "6809"
rxnorm_ingredients获取活性成分rxcui: "6809"
rxnorm_classes参加治疗课程rxcui: "6809"
rxnorm_ndcRxCUI和NDC之间的映射rxcui: "6809"

MeSH工具(4)

工具说明示例
mesh_search搜索MeSH描述符query: "hypertension"
mesh_descriptor获取描述符详细信息mesh_id: "D006973"
mesh_tree获取树层次结构位置mesh_id: "D006973"
mesh_qualifiers获取允许的限定符mesh_id: "D006973"

SNOMED CT工具(5,默认禁用)

这些仅在以下情况下注册 ENABLE_SNOMED_TOOLS=true。参见 SNOMED CT设置(高级).

工具说明示例
snomed_search按术语搜索概念query: "myocardial infarction"
snomed_concept通过SCTID获取概念细节sctid: "22298006"
snomed_hierarchy获取父/子概念sctid: "22298006"
snomed_descriptions获取所有描述sctid: "22298006"
snomed_ecl执行ECL查询ecl: "<< 73211009"

人行横道工具(5-- map_snomed_to_icd10 需要SNOMED)

工具说明示例
map_icd10_to_icd11权威ICD-10→ 通过捆绑世界卫生组织过渡表绘制ICD-11图;返回主代码+章节+URI和任何WHO文档化的备选方案icd10_code: "E11"
map_snomed_to_icd10鼻CT→ ICD-10指南(仅当 ENABLE_SNOMED_TOOLS=true)sctid: "73211009"
map_loinc_to_snomed腰部↔ SNOMED指南loinc_code: "2339-0"
validate_codes在ICD-11、LOINC、RxNorm、MeSH、ATC、CID-10(以及启用时的SNOMED)中批量验证多达100个代码;每个代码返回有效/无效+显示名称codes: [{terminology:"icd11",code:"5A11"}, …]
find_equivalent跨术语搜索;禁用SNOMED工具时跳过SNOMED分支term: "diabetes"

ATC工具(3)

世界卫生组织解剖治疗化学分类,通过NLM RxClass提供(免费,无授权)。WHOCC基础本身需要付费订阅,但RxClass封装了相同的代码/名称对。

工具说明示例
atc_classify药品名称→ ATC代码drug_name: "metformin"
atc_lookupATC代码(1-4级)→ 名称+级别类型atc_code: "A10BA"
atc_membersATC等级→ 会员毒品atc_code: "A10BA"

CID-10工具(4)

ICD-10的巴西葡萄牙语翻译(DataSUS V2008)。打包为静态数据集——无HTTP调用。巴西SUS在操作上使用CID-10 V2008;对于国际ICD-11(世界卫生组织当前修订版),请使用上述ICD-11工具。

工具说明示例
cid10_search葡萄牙语文本搜索(不区分发音符号)query: "diabetes"
cid10_lookup代码→ 葡萄牙语官方名称code: "I21""A00.1"
cid10_chapters列出22个CID-10章节-
cid10_chapter第章详细介绍组成小组num: 9

版本控制工具(2)

展示此服务器目前查询的每个术语的版本——在对固定版本运行批处理验证或调查上游更新后的意外查找遗漏时非常有用。

工具说明示例
terminology_versions列出所有8个支持的术语,包括当前版本、发布日期、发布者、源URL和更新节奏-
terminology_diff报告两个版本的术语之间的差异数据(ICD-10的实际交叉修订统计数据→ ICD-11;指导否则)terminology: "icd10-icd11"

输出示例

下面的示例是工具生成的实际格式化输出—— CallToolResult。工具也会返回一个 structuredContent 与每个工具匹配的对象 outputSchema 对于程序化消费者。

loinc_search --查询:“葡萄糖”,最大结果:3

## LOINC Search Results for "glucose"

Found 1024 total results (showing 3):

1. **74790-7** - Glucose challenge (hydrogen breath test) panel - Exhaled gas
   Component: Glucose challenge panel | Method: -

2. **104708-3** - Deprecated Estimated average glucose [Moles/volume] in Blood
   Component: Estimated average glucose | Property: SCnc

3. **97510-2** - Glucose measurements in range out of Total glucose measurements during reporting period
   Component: Glucose measurements in range/Total glucose measurements | Property: NFr | Method: Calculated

total_count (1024)反映了NLM临床表索引中的每个匹配项,而不仅仅是返回的页面。碰撞 max_results (最多50)查看规范代码,如 2339-0 (血液中的葡萄糖\[质量/体积\]);API的相关性排名将面板和衍生的测量结果置于小页面上的普通血液葡萄糖之上。

rxnorm_ingredients --rxcui:“6809”(二甲双胍)

# Ingredients for RxCUI 6809

Found 18 ingredient(s):

| RxCUI | Name | Type |
|-------|------|------|
| 6809 | metformin | Single Ingredient |
| 1007411 | chlorpropamide / metformin | Multiple Ingredient |
| 1043562 | metformin / saxagliptin | Multiple Ingredient |
| 1243019 | linagliptin / metformin | Multiple Ingredient |
| 1486436 | dapagliflozin / metformin | Multiple Ingredient |
| 1545149 | canagliflozin / metformin | Multiple Ingredient |
| 1664314 | empagliflozin / metformin | Multiple Ingredient |
| 729717  | metformin / sitagliptin | Multiple Ingredient |
| ...     | (10 more combinations)   | Multiple Ingredient |

对于本身就是一种成分(TTY=IN)的RxCUI,该工具返回该成分加上包含它的每个多成分(TTY=MIN)概念。使用此方法枚举围绕物质构建的组合产品。

mesh_descriptor --mesh_id:“D006973”(高血压)

# Hypertension
MeSH ID: D006973

## Scope Note

Persistently high systemic arterial BLOOD PRESSURE. Based on multiple readings (BLOOD PRESSURE DETERMINATION), hypertension is currently defined as when SYSTOLIC PRESSURE is consistently greater than 140 mm Hg or when DIASTOLIC PRESSURE is consistently 90 mm Hg or more.

## Tree Numbers

- C14.907.489

## Concepts

- Hypertension *(preferred)*

## Allowed Qualifiers

35 qualifier(s) allowed. Use mesh_qualifiers for details.

范围注释来自描述符的 *首选概念*,而不是其注释字段(这是一个面向索引器的注释)。树编号是进入MeSH受控层次结构的可导航路径-- C14.907.489 将高血压归入心血管疾病→ 血管疾病。

常见工作流

  • ICD-11查询: icd11_search 带有临床术语→ 选择结果→ icd11_lookup 使用代码获取完整详细信息,或 icd11_hierarchy 陪父母/孩子散步。
  • 药品管道: rxnorm_search 对于品牌或通用名称→ rxnorm_concept 为了规范记录→ rxnorm_ingredientsrxnorm_classes 用于下游分析。
  • 跨术语脚手架: find_equivalent 使用临床术语在一次呼叫中搜索ICD-11、LOINC、RxNorm、MeSH和(启用时)SNOMED。使用它来引导映射;成对 map_* 工具对其进行了改进。
  • ICD-10→ ICD-11(文本搜索,非权威): map_icd10_to_icd11 对世界卫生组织ICD-11进行诚实的文本搜索。世界卫生组织的真实过渡表在 PROGRESS.md第13.1阶段.

SNOMED CT设置(高级)

5 SNOMED工具(snomed_search, snomed_concept, snomed_hierarchy, snomed_descriptions, snomed_ecl)加上SNOMED依赖的人行横道工具(map_snomed_to_icd10)都是 默认情况下禁用当它们被禁用时,服务器注册了31个工具,而不是37个; find_equivalent 仍然有效,并跳过SNOMED分支,并附上解释性说明。

原因:截至2026年5月8日,该项目历史上称之为IHTSDO暴风雪的公共终点(https://browser.ihtsdotools.org/snowstorm/snomed-ct/...)为每条路径返回HTTP 410 Gone。如果没有可用的后端,注册这些工具会向每个客户提供6个损坏的工具。

要启用SNOMED工具:

  1. 确认您的SNOMED CT许可证。 SNOMED CT的使用需要SNOMED International(IHTSDO)许可证。成员国居民通常通过其国家释放中心获得一个;非会员可以获得联盟许可证。看https://www.snomed.org/snomed-ct/get-snomed.
  1. 配置此服务器:
   {
     "mcpServers": {
       "medical-terminologies": {
         "command": "npx",
         "args": ["-y", "medical-terminologies-mcp"],
         "env": {
           "WHO_CLIENT_ID": "...",
           "WHO_CLIENT_SECRET": "...",
           "ENABLE_SNOMED_TOOLS": "true",
           "SNOMED_BASE_URL": "https://my-snowstorm.example.com/snowstorm/snomed-ct",
           "SNOMED_LANGUAGE": "en"
         }
       }
     }
   }

SNOMED_BASE_URL 应该指向暴风雪暴露的底部 /MAIN/concepts 以及相关端点。 SNOMED_LANGUAGE 接受标准 Accept-Language 标签(例如。 pt, es, pt-BR,en;q=0.8)--Snowstorm在分支有本地化术语时返回这些术语,否则返回英语。

  1. 重新启动MCP客户端 因此,服务器会接收env变量。

如果你设置 ENABLE_SNOMED_TOOLS=true 如果不配置工作的Snowstorm,SNOMED工具将注册,但每次呼叫都会在网络层失败。

术语许可证

ICD-11(世界卫生组织)

ICD-11内容在 知识共享署名-禁止衍生3.0 IGO许可(CC BY-ND 3.0 IGO).

  • 你必须将世界卫生组织作为来源
  • 您不得创作衍生作品
  • API访问要求在https://icd.who.int/icdapi

临床术语

SNOMED CT的使用需要IHTSDO(SNOMED International)许可证。默认情况下,此服务器中的SNOMED工具处于禁用状态,仅由具有有效许可证和自托管Snowstorm实例的操作员启用——请参阅 SNOMED CT设置(高级).

  • 成员国拥有国家许可证
  • 其他人可以使用联盟许可证
  • 更多信息:https://www.snomed.org/snomed-ct/get-snomed

腰部

LOINC内容根据 LOINC许可证.

  • 大多数用途免费
  • 需要署名
  • 推荐注册

RxNorm

RxNorm由美国国家医学图书馆制作,免费提供。

  • 使用无需许可证
  • 赞赏归因

医学主题词

MeSH由美国国家医学图书馆制作,免费提供。

  • 使用无需许可证
  • 赞赏归因

API费率限制

此服务器实现速率限制以尊重API提供程序:

API费率限制
世界卫生组织ICD-115个请求/秒
NLM(LOINC、MeSH)每秒10个请求
RxNorm20个请求/秒
SNOMED CT(暴风雪)每秒10个请求

发展

从源头构建

git clone https://github.com/SidneyBissoli/medical-terminologies-mcp.git
cd medical-terminologies-mcp
npm install
npm run build

在本地运行

npm start

MCP检验员测试

npx @modelcontextprotocol/inspector node dist/index.js

贡献

欢迎投稿!请随时提交拉取请求。

  1. 分叉存储库
  2. 创建功能分支(git checkout -b feature/AmazingFeature)
  3. 提交您的更改(git commit -m 'Add some AmazingFeature')
  4. 推到分支(git push origin feature/AmazingFeature)
  5. 打开拉取请求

作者

西德尼·比索里

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

注:虽然该软件是麻省理工学院许可的,但通过它访问的医学术语有自己的许可证(见 术语许可证 上文)。

致谢

支持

如果您遇到任何问题或有疑问:

  • 打开一个问题
  • 检查现有问题的解决方案

______________________________________________________________________

出于对医学信息学界的热爱

目录标签

目录标签

TypeScriptClaudeAI代理医学术语本地部署MCP协议医疗信息学术语查询跨术语映射

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

session

运行时(runtime,运行环境)

Node.js

来源包(packageName,安装包名)

@modelcontextprotocol/inspector

工具数量(toolCount,工具数)

37

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiosession部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP