Medical Terminologies MCP

io.github.SidneyBissoli由 GitHub 账号 SidneyBissoli 发布v2.4.0更新于 Oct 29, 2026

Diagnoses, drugs & lab codes: ICD-11, LOINC, RxNorm, MeSH, ATC, CID-10. 33 tools, MIT.

已验证Streamable HTTP可网页运行知识与记忆数据与分析

概览

AI 生成的概览

在 ICD-11、LOINC、RxNorm、MeSH、ATC 与巴西 CID-10 之间查询和映射医学编码,支持跨术语体系对照与批量校验。

可以做什么
  • 检索并查看 ICD-11 实体、章节、层级与后组配轴
  • 检索 LOINC 检验与临床观察项目,查看详情、答案列表与组合面板结构
  • 检索 RxNorm 药物概念、成分、类别与 NDC 对照,并按 ATC 对药物分类
  • 检索 MeSH 主题词、树号与限定词,用于文献标引
  • 以葡萄牙语检索和浏览巴西 CID-10,并将 ICD-10 编码映射到 ICD-11
  • 批量把自由文本术语规范化为编码、校验编码清单、查找跨体系等价词并查询术语版本
适用场景
适合需要权威术语编码、跨体系对照或数据集规范化的研究人员、公共卫生分析师、临床信息学开发者和教学人员,而非用于临床诊疗建议。托管端点还提供 search 与 fetch,供 ChatGPT Deep Research 使用。
运行要求
可使用无需配置的托管 Streamable HTTP 端点,或在本地用 Node.js 以 stdio 运行 npm 包。自行部署时,五个 ICD-11 工具需要 WHO_CLIENT_ID 与 WHO_CLIENT_SECRET,其他术语体系无需凭据。可选 WHO_ICD11_RELEASE_ID 与 LOG_LEVEL。需能访问 WHO 与 NLM 的 API。
安装前请注意
发往 ICD-11、LOINC、RxNorm、MeSH 和 ATC 的查询字符串会转发给 WHO 与 NLM 的公共服务,运行前应对术语清单去标识化,避免患者姓名、自由文本病历或记录编号。自行部署需提供 WHO_CLIENT_ID 与 WHO_CLIENT_SECRET。它是检索工具而非临床决策支持,检索为词面匹配而非语义检索。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Medical Terminologies MCP,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/io.github.SidneyBissoli%2Fmedical-terminologies-mcp/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。

{
  "mcpServers": {
    "medical-terminologies": {
      "type": "http",
      "url": "https://medical.sidneybissoli.com/mcp"
    }
  }
}

README

Medical Terminologies MCP Server

[npm version] [npm downloads] [node] [MCP Registry] [LobeHub] [smithery badge] [Glama MCP server] [Available on CodeGuilds] [GitHub stars] [GitHub Sponsors] [tool calls] [MCP] [License: MIT]

A Model Context Protocol (MCP) server providing unified access to major global medical terminologies:

  • ICD-11 - International Classification of Diseases (WHO)
  • LOINC - Logical Observation Identifiers Names and Codes
  • RxNorm - Normalized names for clinical drugs (NIH)
  • MeSH - Medical Subject Headings (NLM)
  • ATC - Anatomical Therapeutic Chemical classification (WHO Collaborating Centre, served via NLM RxClass)
  • CID-10 - Brazilian Portuguese translation of ICD-10 (DataSUS V2008, bundled)

🇧🇷 Leia em Português

See it in action

Ask your assistant:

  • "What's the ICD-11 code for type 2 diabetes?" → icd11_search
  • "Map ICD-10 code E11 to ICD-11." → map_icd10_to_icd11
  • "What does LOINC 2339-0 measure?" → loinc_details
  • "Qual o código CID-10 para infarto agudo do miocárdio?" → cid10_search

The answers come from authoritative sources (WHO, NLM, NIH, DataSUS) — real codes and mappings, not guesses from training data.

Features

  • 33 tools: 31 terminology tools plus search/fetch for ChatGPT Deep Research
  • 3 MCP Prompts that orchestrate tool calls into named workflows (find-medical-code, drug-info, cid10-portuguese-lookup) — clients render these as one-click user actions
  • 4 MCP Resources for in-process reference content (info://server, info://cid10/chapters, info://licenses, info://stats) — sub-millisecond reads (except info://stats which round-trips to the StatsCounter Durable Object on the hosted endpoint)
  • Multi-terminology support in a single server
  • Cross-terminology mapping and search
  • Provenance on every response (since v1.8.0): each successful tool result carries a machine-readable provenance block — source, canonical URL, data vintage, real extraction instant (cache hits keep the original fetch instant), ready-to-use citation, and license — in structuredContent.provenance + attribution, mirrored in _meta under com.sidneybissoli.medical/*, with a compact text footer for text-only clients. Multi-source responses (find_equivalent, validate_codes) carry one block per source; server-computed ranking fields are flagged as derived
  • Built-in caching for improved performance
  • Rate limiting to respect API limits
  • Detailed responses with rich formatting
  • Two transports: stdio (default; for Claude Desktop, IDE clients) and Streamable HTTP (the hosted Cloudflare Worker at https://medical.sidneybissoli.com/mcp, or your own instance of worker/)

📖 Article (in Portuguese): CID-10, CID-11 e o que muda para quem trabalha com dados do SUS — the V2008 structure in numbers, what the WHO transition tables are and are not, and the licences that differ between sources. Also published on the site, in Portuguese and English: sidneybissoli.com.

Who is this for?

This server is not a clinical-care decision tool — practicing clinicians have specialized assistants (UpToDate AI, OpenEvidence, EHR-integrated tools) for that. The actual audience is researchers, public-health analysts, clinical informatics developers, and educators who need programmatic access to authoritative terminology data.

If you're a...Start withWhy
Biomedical researcher / bibliographermesh_search, mesh_descriptor, mesh_treeMeSH is PubMed's indexing vocabulary; tree numbers let you traverse the controlled hierarchy programmatically
Public-health analyst (Brazil / SUS)cid10_search, cid10_chapters, atc_classifyCID-10 V2008 is the Brazilian operational standard; ATC pairs cleanly with DataSUS prescription data
Public-health analyst (international)icd11_search, icd11_lookup, icd11_chaptersWHO ICD-11 is the current international revision; chapters and hierarchy support pipeline classification
Clinical-informatics developerloinc_search, loinc_details, find_equivalentLOINC for lab/observation interoperability; cross-terminology search to scaffold new mappings
Educator / curriculum authormesh_descriptor, icd11_lookup, rxnorm_searchAuthoritative definitions, tree numbers, and drug term-types you can drop into self-checked exercises

What this server is not intended for — and what leaves your machine

  • It is not intended for clinical decision support. It retrieves what the official sources publish. It does not diagnose, recommend treatment or dose.
  • It is not designed to run offline. ICD-11, LOINC, RxNorm, MeSH and ATC are answered live by the public WHO and NLM APIs. Every query string you send is forwarded to those services. De-identify term lists before running them: no patient names, free-text notes or record identifiers. Two datasets are bundled and answered in-process, with no network call: CID-10 (DataSUS V2008) and the WHO ICD-10 → ICD-11 transition tables (map_icd10_to_icd11).
  • Credentials are not required on the hosted endpoint. https://medical.sidneybissoli.com/mcp has WHO credentials configured. WHO_CLIENT_ID/WHO_CLIENT_SECRET are needed only when you run the server yourself, and only for the 5 ICD-11 tools.
  • SNOMED CT is not served. It was retired in 2.0.0: no public Snowstorm host remains, SNOMED content needs a per-country license, and the off-by-default tools confused every catalog that listed this server. See SNOMED CT (retired in 2.0.0).
  • It is not OMOP-shaped. Results carry the source's own codes, not OMOP concept_ids, and there is no concept_ancestor traversal. If your output has to join against an OMOP CDM, use an OMOP vocabulary service; use this server for general terminology work.
  • Search is lexical, not semantic. find_equivalent and the *_search tools match words, not meanings (no embeddings).
  • Large batches are paced by the upstream rate limits (see API Rate Limits). Thousands of distinct terms take minutes to tens of minutes.

Reproducibility: which version answered

A crosswalk or a coded dataset is only meaningful against a stated vocabulary version. Two things record it:

  • terminology_versions lists the release each terminology is queried against. Call it at the start of a batch run and keep the output with your results. The ICD-11 release is pinned (default 2026-01, override with WHO_ICD11_RELEASE_ID), so a self-hosted run is repeatable until you change it.

  • The provenance block on every response (structuredContent.provenance) carries retrieved_at (the real extraction instant; a cache hit keeps the original fetch time), the source URL, the citation and the license. Its data_vintage field carries the version when the source exposes one:

    Sourcedata_vintage in each response
    ICD-11the pinned WHO release (e.g. 2026-01)
    ICD-10 → ICD-11 tablesthe bundled WHO release (e.g. 2025-01)
    CID-10V2008
    LOINC, RxNorm, MeSH, ATCnull, because these APIs do not state a release per response. Record terminology_versions + retrieved_at instead

Minimal batch log: one terminology_versions call at the start, plus the provenance of each result (source, data_vintage, retrieved_at).

Try the hosted instance (no install)

A public Cloudflare Workers deployment runs at:

https://medical.sidneybissoli.com/mcp

Connect via the MCP Inspector or any Streamable HTTP MCP client:

bash
npx @modelcontextprotocol/inspector --transport streamable-http \  --server-url https://medical.sidneybissoli.com/mcp

Or install via Smithery, which proxies the same endpoint through their gateway:

bash
npx -y smithery mcp add sidneybissoli/medical-terminologies-mcp

The hosted instance has WHO credentials configured, so all 33 tools work without any setup on your side. For your own deployment (e.g. corporate network, different region, custom WHO credentials), see the Installation and Hosted on Cloudflare Workers sections below.

Installation

Global Installation (Recommended)

bash
npm install -g medical-terminologies-mcp

Local Installation

bash
npm install medical-terminologies-mcp

Configuration

Claude Desktop

Add to your Claude Desktop configuration file:

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

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"      }    }  }}

Environment Variables

VariableRequiredDescription
WHO_CLIENT_IDYes¹WHO ICD API Client ID
WHO_CLIENT_SECRETYes¹WHO ICD API Client Secret
WHO_ICD11_RELEASE_IDNoICD-11 release to query (e.g. 2025-01, 2026-01). Default 2026-01.
LOG_LEVELNopino log level (debug, info, warn, error, fatal). Default info.

¹ Required for ICD-11 tools. Get credentials at: https://icd.who.int/icdapi.

LOINC, RxNorm, MeSH, ATC and CID-10 need no configuration.

HTTP transport (hosted)

The server runs over stdio by default — that's what Claude Desktop and IDE clients expect. The Streamable HTTP transport is served by the Cloudflare Worker in worker/ (an instance of the maintainer's Fase 0 hosting template). The --http flag of the Node entry was removed in v1.6.0 — if you need a local HTTP endpoint, run the Worker locally:

bash
npm ci && cd worker && npm cinpm run dev     # wrangler dev on http://localhost:8787# Inspector via HTTPnpx @modelcontextprotocol/inspector --transport streamable-http --server-url http://localhost:8787/mcp

Hosted endpoints (production and local alike):

  • POST /mcp — JSON-RPC over Streamable HTTP (the MCP protocol). Stateless mode: each request is independent.
  • GET /health — liveness probe returning { status, name, version, tool_count, uptime_s }.
  • GET /status — version + deploy metadata. GET /metrics — aggregated per-tool usage.
  • GET /stats and GET /stats/badge — public tool-call counter (since 2026-05-13) and its shields.io badge.
  • GET /.well-known/mcp/server-card.json — static server card for registry scanners.
  • CORS is permissive (*) so browser clients (e.g. the MCP Inspector web UI) can connect directly.

ChatGPT (Deep Research)

ChatGPT deep research (and company knowledge, and research workflows over the Responses API) only uses an MCP server that exposes exactly search and fetch — this server does, on top of the terminology tools. Point the connector at the hosted endpoint, no key required:

https://medical.sidneybissoli.com/mcp

search ranks the query across the bundled CID-10 (categories, subcategories, chapters), the terminology version records and a live fan-out to ICD-11, LOINC, RxNorm and MeSH (the same fan-out find_equivalent does; a source that fails is skipped) and returns { id, title, url }; fetch renders the document through the terminology's own lookup tool (cid10_lookup, icd11_lookup, loinc_details, rxnorm_concept, mesh_descriptor, terminology_versions) as readable Markdown with the canonical public page (WHO ICD browsers, loinc.org, RxNav, MeSH Browser), which is what ChatGPT cites. Both carry the same provenance block as every other tool — search one block per source that answered, like find_equivalent. In ChatGPT's developer mode (Settings → Security and login → Developer mode) any tool is callable — the terminology tools remain the ones to use for data.

Hosted on Cloudflare Workers (primary)

The production deployment is the Cloudflare Worker in worker/, config in worker/wrangler.jsonc, CI deploy in .github/workflows/deploy-worker.yml (auto-runs on every push to main).

To deploy your own instance:

bash
npm ci && npm run build:worker-libcd worker && npm cinpx wrangler login         # one-time, browser flownpx wrangler deploy        # publishes to <name>.<account>.workers.dev# Set ICD-11 secrets so those 5 tools work:npx wrangler secret put WHO_CLIENT_IDnpx wrangler secret put WHO_CLIENT_SECRET

Note: worker/wrangler.jsonc pins the maintainer's account_id and custom domain route — remove/replace both for your own deployment.

Why Workers: zero cold start at the edge, $5/mo flat for 10M requests (free tier covers up to 100k req/day), and no VMs to size or restart. The template ships per-IP rate limiting and a usage-stats Durable Object; the upstream-facing cache/rate-limiter are per-isolate (PROGRESS.md Phase 11.9 Stage 2 tracks the KV/DO upgrade).

Listing on Smithery

After your Worker is live, register the URL on Smithery:

  1. Visit https://smithery.ai → Publish → MCP (or https://smithery.ai/new).
  2. Pick the URL submission path (Smithery deprecated container hosting in 2024 — URL is the supported flow now).
  3. Paste https://<your-worker>.workers.dev/mcp. Smithery's gateway scans for compliance and proxies traffic.

Available Tools (33)

Official Portuguese (pt-BR) content

The server never machine-translates terminology content — but several sources publish official translations, and the tools expose them:

  • CID-10 is natively Portuguese: cid10_search / cid10_lookup / cid10_chapter(s) serve the DataSUS V2008 dataset (the CID-10 the Brazilian SUS uses operationally).
  • ICD-11 in official Portuguese: pass language: "pt" to icd11_search / icd11_lookup to search and read WHO's official pt-BR linearization labels.
  • MeSH: pass language: "pt" to mesh_search / mesh_descriptor to request NLM's official translations where they exist.

If a source has no official translation for an entry, you get the source language back — never a machine translation.

ICD-11 Tools (5)

ToolDescriptionExample
icd11_searchSearch ICD-11 by termquery: "diabetes mellitus"
icd11_lookupGet entity details by code/URIcode: "5A11"
icd11_hierarchyNavigate parent/child relationshipscode: "5A11"
icd11_chaptersList all ICD-11 chapters-
icd11_postcoordinationGet postcoordination axescode: "5A11"

LOINC Tools (4)

ToolDescriptionExample
loinc_searchSearch lab tests and observationsquery: "glucose"
loinc_detailsGet full LOINC code detailsloinc_num: "2339-0"
loinc_answersAnswer list of a questionnaire item: LA code, text, order and score (PHQ-9 items: 0-3); empty for codes without a list, "not found" for unknown codesloinc_num: "44250-9"
loinc_panelsPanel/form structure: member items in form orderloinc_num: "44249-1"

RxNorm Tools (5)

ToolDescriptionExample
rxnorm_searchSearch drugs by namequery: "metformin"
rxnorm_conceptGet drug concept detailsrxcui: "6809"
rxnorm_ingredientsGet active ingredientsrxcui: "6809"
rxnorm_classesGet therapeutic classesrxcui: "6809"
rxnorm_ndcMap between RxCUI and NDCrxcui: "6809"

MeSH Tools (4)

ToolDescriptionExample
mesh_searchSearch MeSH descriptorsquery: "hypertension"
mesh_descriptorGet descriptor detailsmesh_id: "D006973"
mesh_treeGet tree hierarchy locationmesh_id: "D006973"
mesh_qualifiersGet allowed qualifiersmesh_id: "D006973"

Crosswalk Tools (4)

ToolDescriptionExample
map_icd10_to_icd11Authoritative ICD-10 → ICD-11 mapping via bundled WHO transition tables; returns primary code + chapter + URIs and any WHO-documented alternativesicd10_code: "E11"
validate_codesBatch-validate up to 50 codes across ICD-11, LOINC, RxNorm, MeSH, ATC, CID-10; returns per-code valid/invalid + display namecodes: [{terminology:"icd11",code:"5A11"}, …]
find_equivalentRanked unified search across terminologies: server-computed match_score/rank per candidate plus cross-terminology groups of lexically identical titlesterm: "diabetes"
harmonize_termsBatch-map up to 50 free-text terms to standard codes: diagnosis → ICD-11, drug → RxNorm (+ ATC classes), lab → LOINC. Per term: ranked candidates with match_score and match_type (exact / strong / needs_review), one provenance block per source. The term-first companion of validate_codesterms: [{term:"type 2 diabetes",domain:"diagnosis"}, {term:"metformin",domain:"drug"}]

ATC Tools (3)

WHO Anatomical Therapeutic Chemical classification, served through NLM RxClass (free, no auth). The WHOCC base itself requires a paid subscription, but RxClass envelopes the same code/name pairs.

ToolDescriptionExample
atc_classifyDrug name → ATC code(s)drug_name: "metformin"
atc_lookupATC code (level 1-4) → name + level typeatc_code: "A10BA"
atc_membersATC class → member drugsatc_code: "A10BA"

CID-10 Tools (4)

Brazilian Portuguese translation of ICD-10 (DataSUS V2008). Bundled as a static dataset — no HTTP calls. The Brazilian SUS uses CID-10 V2008 operationally; for the international ICD-11 (current WHO revision), use the ICD-11 tools above.

ToolDescriptionExample
cid10_searchPortuguese text search (diacritic-insensitive, AND between words; everyday words resolved to CID-10 wording, and the response says so)query: "câncer de mama"
cid10_lookupCode → official Portuguese namecode: "I21" or "A00.1"
cid10_chaptersList the 22 CID-10 chapters-
cid10_chapterChapter detail with constituent groupsnum: 9

Ask in your words, not the CID-10's. The CID-10 is worded in clinical Portuguese, and cid10_search matched your words against the code title as one verbatim phrase — so the everyday word returned nothing at all. Measured over the 14,496 categories and subcategories of the bundled V2008 dataset (2026-09-16), fixed since 1.12.0: every word must match (AND), and the everyday word is expanded to the CID-10's own (src/clients/cid10-vocabulary.ts, measured pairs only) — the response says so in vocabulary_notes, and zero results come with a way out.

you askhits beforethe CID-10 writeshits
câncer, câncer de mama0neoplasia maligna (da mama)497, 12
ataque cardíaco0infarto42
AVC0acidente vascular cerebral11
pressão alta0hipertensão44
dor de cabeça0cefaleia10
suicídio0lesão autoprovocada167
atropelamento0pedestre traumatizado97
aids0doença pelo HIV45
pedra nos rins, convulsão, tabagismo, maconha, crack, obeso, cachorro0calculose, convulsões, fumo, canabinóides, cocaína, obesidade, provocado por cão19, 41, 17, 12, 13, 6, 11

What the V2008 dataset does not carry stays out and still returns zero — covid (U07.1 is from 2020), zika — because an alias for a code that does not exist promises what the source does not have. The same table feeds the Deep Research search index.

Versioning Tools (2)

Surface what version of each terminology this server queries against today — useful when running batch validation against a pinned release or when investigating an unexpected lookup miss after an upstream update.

ToolDescriptionExample
terminology_versionsList all 8 supported terminologies with current version, release date, publisher, source URL, and update cadence-
terminology_diffReport what diff data is available between two versions of a terminology (real cross-revision stats for ICD-10 → ICD-11; guidance otherwise)terminology: "icd10-icd11"

ChatGPT Deep Research (2)

The OpenAI Deep Research contract — the only two tools without a terminology prefix (names fixed by OpenAI). See ChatGPT (Deep Research) above.

ToolDescriptionExample
searchSearches the catalog (CID-10, ICD-11, LOINC, RxNorm, MeSH, terminology versions) and returns { id, title, url } ranked by relevancequery: "myocardial infarction"
fetchReturns the full document of an id from search ({ id, title, text, url, metadata }), rendered by the terminology's lookup toolid: "cid10:I21.0"

Example Outputs

The samples below are the actual formatted output the tools produce — the text body of the CallToolResult. Tools also return a structuredContent object matching each tool's outputSchema for programmatic consumers.

loinc_search — query: "glucose", max_results: 3

markdown
## 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) reflects every match in the NLM Clinical Tables index, not just the page returned. Bump max_results (max 50) to see canonical codes like 2339-0 (Glucose [Mass/volume] in Blood); the API's relevance ranking puts panels and derived measurements above plain blood-glucose at small page sizes.

rxnorm_ingredients — rxcui: "6809" (metformin)

markdown
# 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 |

For an RxCUI that is itself an ingredient (TTY=IN), the tool returns that ingredient plus every multi-ingredient (TTY=MIN) concept that includes it. Use this to enumerate combination products built around a substance.

mesh_descriptor — mesh_id: "D006973" (Hypertension)

markdown
# HypertensionMeSH 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.

The scope note comes from the descriptor's preferred concept, not its annotation field (which is an indexer-facing note). Tree numbers are the navigable path into MeSH's controlled hierarchy — C14.907.489 places Hypertension under Cardiovascular Diseases → Vascular Diseases.

Common Workflows

  • ICD-11 lookup: icd11_search with a clinical term → pick the result → icd11_lookup with the code for full details, or icd11_hierarchy to walk parents/children.
  • Drug pipeline: rxnorm_search for a brand or generic name → rxnorm_concept for the canonical record → rxnorm_ingredients and rxnorm_classes for downstream analysis.
  • Harmonize a column of free-text terms: terminology_versions once at the start → harmonize_terms in batches of up to 50 (each term with its domain) → accept exact, spot-check strong, send needs_review to a person → keep each row's provenance with the crosswalk. Write lab terms with specimen and property ("glucose serum"): a bare "glucose" matches over a thousand LOINC codes.
  • Cross-terminology scaffolding: find_equivalent with a clinical term searches ICD-11, LOINC, RxNorm and MeSH in one call. Use it to bootstrap mappings; the pairwise map_* tools refine them.
  • ICD-10 → ICD-11 (authoritative): map_icd10_to_icd11 reads the bundled WHO transition tables. It returns the primary ICD-11 code plus any WHO-documented alternatives, and null (never a guess) when the ICD-10 category is not in the table.

SNOMED CT (retired in 2.0.0)

Until 1.18.x this server shipped five SNOMED CT tools (snomed_search, snomed_concept, snomed_hierarchy, snomed_descriptions, snomed_ecl) plus map_snomed_to_icd10, all off by default behind ENABLE_SNOMED_TOOLS, and map_loinc_to_snomed (guidance only). Version 2.0.0 removed all seven, the Snowstorm client and the flag, and snomed is no longer an accepted value of find_equivalent, validate_codes, terminology_versions or terminology_diff (a request naming it gets a validation error listing the accepted values).

Why: the public IHTSDO Snowstorm host behind the tools has returned HTTP 410 since 2026-05; SNOMED CT content needs a license that depends on the user's country; usage was zero; and the half-present terminology misled every third-party catalog that described this server.

If you need SNOMED CT: pacharanero/sct serves it locally from your own licensed release, and FHIR terminology servers (e.g. tx.fhir.org, a public HL7 test server; CSIRO Ontoserver) expose $lookup/$expand — under your own SNOMED license.

Terminology Licenses

The MIT license covers the server code and server-maintained metadata only — not the terminology content served through it, and not the two bundled datasets (cid10.json, icd10-to-icd11.json), which remain under their own terms. The consolidated notice ships with the package as NOTICE.md; every tool response carries a per-source provenance block with the applicable license.

ICD-11 (WHO)

ICD-11 content is provided under the Creative Commons Attribution-NoDerivatives 3.0 IGO license (CC BY-ND 3.0 IGO), per the ICD-11 Terms of Use and License Agreement.

  • Required citation: "International Classification of Diseases, Eleventh Revision (ICD-11), World Health Organization (WHO) 2019 https://icd.who.int/browse11. Licensed under the Creative Commons Attribution-NoDerivatives 3.0 IGO licence (CC BY-ND 3.0 IGO)."
  • This server always serves ICD-11 codes and titles together with their URIs, verbatim; non-English labels are WHO's own official translations (never machine-translated)
  • WHO may terminate the license at any time by notice (§4.7)
  • API access requires registration at https://icd.who.int/icdapi

WHO ICD-10 → ICD-11 transition tables (bundled)

Format conversion (TSV → JSON, content unaltered) of the tables WHO publishes within the ICD-11 release. © World Health Organization, under the ICD-11 Terms of Use — not under this project's MIT license. WHO's guidance: the tables show correspondence between revisions and "are not intended for directly converting data from one revision to the other."

CID-10 V2008 (DataSUS / CBCD, bundled)

© World Health Organization; Brazilian Portuguese translation © CBCD / Faculdade de Saúde Pública da USP; electronic files published by DataSUS (Ministério da Saúde do Brasil). DataSUS/CBCD permission: developers may use the files with due credit and at no charge — this server serves them free with credit in every response. Not under this project's MIT license.

LOINC

This material contains content from LOINC (http://loinc.org). LOINC is copyright © Regenstrief Institute, Inc. and the Logical Observation Identifiers Names and Codes (LOINC) Committee and is available at no cost under the license at http://loinc.org/license. LOINC® is a registered United States trademark of Regenstrief Institute, Inc.

  • Served via the free NLM Clinical Tables API; every code comes with its official display name
  • Terms with third-party copyright are served with their notice passed through verbatim

RxNorm

RxNorm is produced by the U.S. National Library of Medicine; the RxNav APIs serve non-proprietary, public-domain RxNorm content free of charge.

This product uses publicly available data from the U.S. National Library of Medicine (NLM), National Institutes of Health, Department of Health and Human Services; NLM is not responsible for the product and does not endorse or recommend this or any other product.

ATC (via NLM RxClass)

ATC classification © WHO Collaborating Centre for Drug Statistics Methodology (https://atcddd.fhi.no/), retrieved via NLM RxClass and served verbatim. This server never redistributes the WHOCC ATC/DDD index.

MeSH

MeSH is a U.S. government work served free of charge under the NLM Terms and Conditions. The NLM statement above (RxNorm) applies to this channel as well.

Surface fingerprint, checkable from the registry

Every release publishes, in its MCP Registry entry, the sha256 of the surface this version serves (initialize, tools, resources, prompts) and which methods answer without a credential. A surface change without a version bump fails the build; the fingerprint in the registry lets a client check the same thing on its own side. Canonical form and procedure: SPEC.md of @sbissoli/mcp-surface. To check it yourself (Node 18+, no dependencies):

sh
curl -sO https://raw.githubusercontent.com/SidneyBissoli/mcp-br-commons/main/packages/mcp-surface/exemplos/verify.mjsnode verify.mjs io.github.SidneyBissoli/medical-terminologies-mcp

API Rate Limits

This server implements rate limiting to respect API providers:

APIRate Limit
WHO ICD-115 requests/second
NLM (LOINC, MeSH)10 requests/second
RxNorm20 requests/second

Development

Building from source

bash
git clone https://github.com/SidneyBissoli/medical-terminologies-mcp.gitcd medical-terminologies-mcpnpm installnpm run build

Running locally

bash
npm start

Testing with MCP Inspector

bash
npx @modelcontextprotocol/inspector node dist/index.js

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Author

Sidney da Silva Pereira Bissoli

License

This project is licensed under the MIT License - see the LICENSE file for details.

Note: While this software is MIT licensed, the medical terminologies accessed through it have their own licenses (see Terminology Licenses above).

Acknowledgments

Support

If you encounter any issues or have questions:

  • Open an issue on GitHub
  • Check existing issues for solutions

Made with love for the medical informatics community

来源:README.md,提交 6d305f5

工具

33

icd11_lookup

ICD-11 Entity Details

Get detailed information about ONE ICD-11 entity you already have a code or URI for. Use this tool to: - Get the full definition of a disease - Retrieve coding notes, inclusions and exclusions - Get the official title and index terms (synonyms) Provide `code` (e.g., "BA00") or `uri` (any URI a previous answer returned) — at least one is required; calling with neither returns a validation error naming both. Set `language` for WHO's official translations (e.g. `language: "pt"` for official Portuguese). Returns a single entity (no pagination). A code WHO does not know comes back as a "not found" error, never an empty record. When NOT to use: to find a code from a disease name, use icd11_search first; to walk parents/children, use icd11_hierarchy; for an ICD-10 code (like "E11"), convert it with map_icd10_to_icd11 — ICD-10 codes are not ICD-11 codes.

输入参数uricodelanguage

icd11_hierarchy

Browse ICD-11 Hierarchy

Navigate the ICD-11 hierarchy to find parent or child entities. Use this tool to: - Find broader categories (parents) of a condition - Find specific subtypes (children) of a condition - Understand the classification structure Name the entity by `code` (a leaf code like "5A11", or a block range like "5A10-5A2Y" — blocks come back from 'parents' with an empty code and a code_range) or by `uri` (the URI any previous answer returned). Direction 'parents' returns ancestor categories, 'children' returns subcategories. ICD-10 codes (like "E11") are not ICD-11 codes: convert them first with map_icd10_to_icd11.

输入参数uricodelanguagedirection必填

icd11_chapters

List ICD-11 Chapters

List all ICD-11 chapters (top-level categories) of the pinned WHO release. Use this tool to: - Get an overview of ICD-11 structure - Find which chapter covers a body system or condition type - Get chapter URIs to drill down with icd11_hierarchy (direction 'children') Returns 28 entries in one response, no pagination — chapters 01-26 plus the supplementary sections V (functioning) and X (extension codes) — each with number, code, title and URI. Each chapter is fetched separately from WHO; if one fetch fails, that entry keeps its URI and carries an `error` instead of a title, and the rest still come back. Set `language` for WHO's official translations (e.g. `language: "pt"`); the result is cached, so repeated calls are cheap. When NOT to use: to find a specific disease, use icd11_search; for the Brazilian CID-10 (ICD-10) chapters, use cid10_chapters.

输入参数language

icd11_postcoordination

ICD-11 Postcoordination Options

List the postcoordination axes WHO allows for one ICD-11 stem code (MMS linearization, pinned release). Postcoordination means attaching extra detail to a stem code — severity, laterality, anatomy, causing agent, etc. — to build a composite (cluster) code. Use this tool to: - See which axes a stem code accepts before building a composite code - Check which axes are REQUIRED vs optional - See whether an axis takes one or several values, and how many values it offers Provide an ICD-11 `code` (e.g., "BA00"). Returns one entry per axis with `axis_name`, `required`, `allow_multiple` and `value_count` — the count of allowed values, not the values themselves. A code with no postcoordination, or one WHO does not know, returns an empty `axes` list (not an error), so check the code with icd11_lookup if the list is unexpectedly empty. When NOT to use: this does not build or validate a composite code, and it does not list the allowed values; to get a code from a disease name, use icd11_search.

输入参数code必填

loinc_details

LOINC Code Details

Get detailed information about a specific LOINC code. Use this tool to: - Get the full name and description of a LOINC code - Find the component, property, timing, and system - Check the scale type and method Provide a LOINC number in format "XXXXX-X" (e.g., "2339-0" for Glucose).

输入参数loinc_num必填

loinc_answers

LOINC Answer Lists

Get the list of valid answers for a LOINC questionnaire item. Use this tool to: - Find valid response options for survey questions - Get answer codes (LA…) for data entry validation - Get the item scores of scored instruments (e.g. PHQ-9: "Not at all" = 0 … "Nearly every day" = 3) Returns each answer with its LOINC answer code (LA…), text, display order and score (null when the list has none). A valid LOINC code without a defined answer list (e.g. a numeric lab such as 2339-0) returns an empty list; a code LOINC does not know returns a "not found" error. Only applicable to LOINC codes that represent questions with defined answer sets. For the questions of a whole questionnaire, use loinc_panels; to find a code by name, use loinc_search.

输入参数loinc_num必填

loinc_panels

LOINC Panel Structure

Get the structure of a LOINC panel or form. Use this tool to: - See all tests included in a panel (e.g., CBC, metabolic panel) - Get the structure of assessment forms - Find related observations grouped together Returns the list of LOINC codes that make up the panel.

输入参数loinc_num必填

rxnorm_concept

RxNorm Concept Details

Get detailed information about a specific RxNorm concept by RxCUI. Use this tool to: - Get the full name and synonyms for a drug - Check the concept status (active, remapped, etc.) - View related concepts (ingredients, brands, forms) Provide an RxCUI (RxNorm Concept Unique Identifier) like "161" — as a string of digits or as an integer.

输入参数rxcui必填include_related

rxnorm_ingredients

RxNorm Drug Ingredients

Get active ingredients for a drug by RxCUI. Use this tool to: - Find the active ingredients in a medication - Check for single vs. multiple ingredient products - Identify the generic components of brand drugs Returns ingredient RxCUIs and names.

输入参数rxcui必填

rxnorm_classes

RxNorm Drug Classes

Get therapeutic and pharmacologic classes for a drug. Use this tool to: - Find the drug class (e.g., "Beta-blockers", "NSAIDs") - Identify therapeutic categories - Look up mechanism of action classifications Returns class IDs, names, and classification sources.

输入参数rxcui必填

rxnorm_ndc

RxNorm / NDC Mapping

Map between RxNorm concepts and National Drug Codes (NDC). Use this tool to: - Get all NDC codes for a drug (by RxCUI) - Find the RxCUI for an NDC code - Cross-reference between coding systems Provide either an RxCUI to get NDCs, or an NDC to get the RxCUI.

输入参数ndcrxcui

mesh_descriptor

MeSH Descriptor Details

Get detailed information about a MeSH descriptor by ID. Use this tool to: - Get the full definition (scope note) of a MeSH term - View tree numbers showing hierarchy location - See related concepts and synonyms Provide a MeSH Descriptor ID like "D015242" (Ofloxacin). Set `language` to request NLM's official translations where they exist (e.g. `language: "pt"`).

输入参数mesh_id必填language

mesh_tree

MeSH Tree Locations

Get the tree hierarchy location(s) for a MeSH descriptor. Use this tool to: - See where a term fits in the MeSH hierarchy - Understand broader/narrower relationships - Find related terms in the same branch MeSH tree numbers show the hierarchical path (e.g., C14.280.647 for Myocardial Infarction).

输入参数mesh_id必填

mesh_qualifiers

MeSH Allowable Qualifiers

Get allowed qualifiers (subheadings) for a MeSH descriptor. Use this tool to: - Find which qualifiers can be combined with a descriptor - Build precise MeSH search queries - Understand aspects that can be specified Qualifiers refine descriptors (e.g., "Diabetes Mellitus/drug therapy").

输入参数mesh_id必填

map_icd10_to_icd11

Map ICD-10 to ICD-11

Authoritative ICD-10 → ICD-11 mapping using WHO transition tables (release 2025-01, bundled with the server). Returns the primary 1:1 ICD-11 category for the ICD-10 code plus any alternative ICD-11 candidates that WHO documents (some ICD-10 concepts split into multiple ICD-11 entities). For each mapping, includes the ICD-11 code, title, chapter, and the Foundation URI / Linearization URI for navigating to the full entity definition. Use this for clinical coding, billing migration, retrospective analysis, and any workflow that needs authoritative mapping rather than text-search candidates. Coverage: 11,243 ICD-10 categories (excludes chapters and blocks like "A00-A09" which aren't used in clinical coding). Provide a code like "E11" (Type 2 diabetes), "I21" (Acute MI), or "A07.8" (4 alternatives in WHO's table). Both dotted ("A07.8") and undotted ("A078") forms are accepted. Returns "no mapping" when the code isn't in the WHO category-level table — that's the honest answer rather than a fuzzy search fallback.

输入参数icd10_code必填

validate_codes

Validate Medical Codes

Validate a mixed batch of medical codes against their source terminologies. Useful for retrospective analysis of legacy databases — flag codes that no longer exist, surface ICD-10 → ICD-11 replacements, and grade activity status where the terminology exposes it. For each input `{ code, terminology }`, returns: - **valid**: whether the code exists in the source terminology. - **active**: whether the code is currently active. Null when the source doesn't expose an explicit active/inactive distinction at category level (CID-10, ATC, ICD-11, RxNorm, MeSH all return null today; LOINC returns a real boolean). - **title**: the official label/name when available. - **replaced_by**: a successor code, populated today only for ICD-10 codes that have a primary ICD-11 mapping in the bundled WHO transition tables. - **source**: human-readable provenance of the validation (terminology + release/version). - **error**: non-null only when validation couldn't be performed (network error, upstream outage, etc.). `valid: false` + `error: null` means "code not found"; `valid: false` + `error: set` means "couldn't validate". Terminology is **required per code** — auto-detection isn't supported because category codes like "A00" exist in both ICD-10 and CID-10. Accepted values: `icd11`, `icd10`, `loinc`, `rxnorm`, `mesh`, `atc`, `cid10`. Hard cap of 50 codes per call; codes are validated in parallel through their respective clients, so total wall time scales with the slowest upstream + its rate limit (worst case ~10 s for a full batch hitting ICD-11).

输入参数codes必填

find_equivalent

Find Equivalents Across Terminologies

Ranked unified search for equivalent terms across multiple medical terminologies. Use this tool to: - Find the same concept in different coding systems - Compare how terminologies represent a concept - Support terminology mapping and data integration Searches across: ICD-11, LOINC, RxNorm, and MeSH. Set `target_terminologies` to limit which are searched, or set `source_terminology` to exclude one (e.g. when you already have a code from that terminology and want equivalents elsewhere). The two combine: source is subtracted from targets. `limit` caps candidates per terminology (default 5, max 10). Every candidate carries `match_score` (lexical similarity to the search term, 0-1) and `rank` (global position across all searched terminologies) — both computed by this server, since upstreams don't expose comparable relevance scores. Candidates from different terminologies whose titles are lexically identical are clustered in `groups` — a strong same-concept signal (absence of a group is NOT evidence of non-equivalence). Searches upstreams in English. For official pt-BR content, use the dedicated tools: `icd11_search`/`mesh_search` accept `language: "pt"`, and `cid10_search` is natively Portuguese.

输入参数term必填limitsource_terminologytarget_terminologies

harmonize_terms

Harmonize Free-Text Terms to Standard Codes

Map a LIST of free-text clinical terms to standard codes in one call, with ranked candidates and a confidence label for each — the building block of a reviewable crosswalk. Use this tool to: - Harmonize a column of diagnoses, drugs or lab names from a dataset to ICD-11 / RxNorm (+ ATC) / LOINC - Triage which terms map cleanly (exact / strong) and which need a person (needs_review) - Build a crosswalk you can audit: every row keeps its candidates, scores and sources Give each term its `domain`: diagnosis → ICD-11; drug → RxNorm concepts (ingredients first) plus the ATC classes of the term; lab → LOINC. Up to 50 terms per call — a longer list is refused with a validation error: split it into batches of 50. Repeated term+domain pairs are looked up once. `max_candidates` keeps 1-5 per term (default 3). Every candidate carries `match_score` (lexical, 0-1, the find_equivalent formula) and `match_type`: exact = same words after normalization; strong = every term word is in the title (or the matched synonym) and score ≥ 0.85; needs_review = anything else. A one-word term is exact or needs_review, never strong ("Tylenol" vs "Tylenol PM" is a different product). Synonyms, abbreviations ("MI", "HbA1c") and misspellings land in needs_review or no_candidates — the label errs toward asking a person. Candidates sharing no word with the term are dropped, as are LOINC codes named "Deprecated". For diagnoses, a candidate is also scored against the synonyms WHO matched (e.g. "hypertension NOS" for Essential hypertension), reported in `matched_label`; postcoordinated clusters (codes with "/" or "&") are left out — build those with icd11_postcoordination. Lab names are ambiguous without specimen and property: "glucose" matches over a thousand LOINC codes, so write "glucose serum" or expect needs_review. One failed lookup does not fail the batch: that row comes back with status "error". Terms are searched in English and sent to the WHO and NLM APIs — de-identify the list first. For B

输入参数terms必填max_candidates

atc_classify

ATC Classification for a Drug

Look up the WHO ATC (Anatomical Therapeutic Chemical) classification(s) for a drug by name. Use this tool to: - Find the ATC code for a medication (e.g., "metformin" → A10BA02) - Identify the therapeutic and pharmacological class hierarchy - Cross-reference drugs with their international ATC codes Returns one entry per ATC code the drug belongs to. A single-ingredient drug typically maps to one substance-level code; combination products map to multiple. ATC codes are international (WHO Collaborating Centre); this tool retrieves them via NLM RxClass. Input is a drug NAME (brand or generic, English/US naming as in RxNorm). A name RxNorm does not recognize, or a drug without an ATC mapping, returns an empty `matches` list with an explanatory note — not an error; try the generic name, or resolve the name first with rxnorm_search. Which ATC tool: start here when you have a drug name; use atc_lookup when you already have a class code (level 1-4, e.g. "A10BA") and want its name; use atc_members to list the drugs inside a class.

输入参数drug_name必填

atc_lookup

ATC Code Details

Look up an ATC code at level 1-4 to get its name and hierarchy level. Use this tool to: - Resolve an ATC code (e.g., "A10BA") to its class name ("Biguanides") - Confirm a code exists in the current ATC index - Identify the level (anatomical / therapeutic / pharmacological / chemical) Accepts codes 1-5 characters long: "A" (anatomical), "A10" (therapeutic), "A10B" (pharmacological), "A10BA" (chemical). Substance-level codes (7 chars, e.g., "A10BA02") are not exposed by this endpoint — use atc_classify with the drug name to retrieve the substance code.

输入参数atc_code必填

atc_members

ATC Class Members

List the drugs (substances) that belong to an ATC class. Use this tool to: - Enumerate all members of a therapeutic class (e.g., "A10BA" → metformin, phenformin) - Build a list of drugs sharing a pharmacological mechanism - Explore an ATC subtree at any level Each member includes its substance-level (7-char) ATC code via source_atc_code, useful for disambiguation when the queried class is at level 1-4. RxNorm's catalog is US-centric; the ATC class names and codes themselves are international.

输入参数atc_code必填

cid10_lookup

Consultar Código CID-10

Look up a specific CID-10 code and return its Portuguese name. Use this tool to: - Resolve a code to its Brazilian description ("I21" → "Infarto agudo do miocárdio") - Confirm a 3-char category or 4-char subcategory exists in CID-10 - Retrieve gender / cause-of-death restriction flags when applicable Accepts both dotted ("A00.1") and undotted ("A001") forms; returns the canonical display.

输入参数code必填

cid10_chapters

Capítulos da CID-10

List the 22 chapters of CID-10 with their code ranges and Portuguese titles. Use this tool to: - See the top-level structure of CID-10 (chapters I-XXII, e.g., "I. Algumas doenças infecciosas e parasitárias", "IX. Doenças do aparelho circulatório") - Map a code to its chapter by code range (e.g., I00-I99 → chapter IX) - Build a navigable table of contents for downstream tooling Returns 22 entries — CID-10 V2008 has not been updated since 2008.

无需输入参数。

cid10_chapter

Capítulo da CID-10

Get one CID-10 chapter and its constituent groups (e.g., "Chapter IX → I00-I02 Febre reumática aguda, I05-I09 Doenças reumáticas crônicas do coração, ..."). Use this tool to: - Drill from a chapter into its groups (code ranges with Portuguese titles) - Build hierarchical browsers - Find which group contains a code range Provide the chapter number `num` as an integer 1-22 (chapter I = 1, IX = 9). Numbers outside 1-22 are rejected with a validation error. Returns the chapter (title and code range) plus ALL its groups in one response — no pagination; the 22 chapters hold 275 groups in total. Answered locally from the bundled CID-10 V2008; no network call. Which CID-10 tool: use cid10_chapters first if you do not know the chapter number (it lists all 22 with code ranges); use cid10_lookup for one specific code and cid10_search to find codes by Portuguese text. For the international ICD-11, use icd11_chapters.

输入参数num必填

terminology_versions

Terminology Versions

List the current version, release date, publisher, source URL, and update cadence of every terminology this server queries against. Useful for pipeline maintainers who need to: - Confirm which release of ICD-11 / LOINC / RxNorm / MeSH / ATC the server is querying before a batch run. - Verify the bundled CID-10 (frozen at V2008) and ICD-10 → ICD-11 transition tables (currently 2025-01) match expectations. - Cite the data version in research artifacts. Pass `terminology` to filter to a single entry; otherwise the full set of 7 is returned. The ICD-10 → ICD-11 version reads live from the bundled dataset; everything else is metadata maintained alongside the project release.

输入参数terminology

terminology_diff

Terminology Version Diff

Report what diff data is available between two versions of a terminology. For most terminologies this is **guidance only** — the server doesn't ship historical snapshots, so the tool points at the publisher's official changelog and explains the cadence. `bundled_versions` lists the version(s) this server actually has on hand. For **ICD-10 vs ICD-11** specifically, the tool surfaces a real cross-revision summary from the bundled WHO transition tables (the ICD-10 → ICD-11 case is a structural diff between two WHO revisions). Use `terminology: "icd10"` with no `to_version` to get the cross-revision summary: total mapped ICD-10 categories, how many are 1:1 vs split into multiple ICD-11 codes, and the average number of alternatives when split. Inputs: - `terminology` (required): which terminology to report on. - `from_version` (optional): the version you have data from. If omitted, the tool reports against the currently-bundled version. - `to_version` (optional): the version you want to compare to. If omitted, the tool reports against the publisher's latest known release. This tool is intentionally a metadata + guidance layer, not a diff engine — for terminologies that change frequently (LOINC, RxNorm, MeSH), the publisher's official changelog is the authoritative source.

输入参数to_versionterminology必填from_version

fetch

Deep Research Document

Returns the full document for an id obtained from `search`, as { id, title, text, url, metadata }: `text` is the readable content (Markdown) and `url` the canonical public page to cite. Companion of `search` in the OpenAI Deep Research contract, over the medical terminologies (CID-10 categories and chapters, ICD-11, LOINC, RxNorm, MeSH, terminology version records) catalog. Only ids returned by `search` are valid; an unknown id returns an error. The terminology tools (`icd11_*`, `cid10_*`, `loinc_*`, `rxnorm_*`, `mesh_*`, `atc_*`, `map_*`, `find_equivalent`, `validate_codes`) remain the tools for data queries. Behavior: read-only and idempotent — a live GET against the public source when the document needs it.

输入参数id必填

版本历史

14
  1. v2.4.0最新Oct 29, 2026
  2. v2.3.0Oct 16, 2026
  3. v2.2.0Oct 9, 2026
  4. v2.1.2Oct 8, 2026
  5. v2.1.1Oct 7, 2026
  6. v2.1.0Oct 6, 2026
  7. v2.0.0Oct 4, 2026
  8. v1.18.2Oct 3, 2026
  9. v1.17.1Oct 2, 2026
  10. v1.16.0Sep 29, 2026
  11. v1.15.0Sep 27, 2026
  12. v1.14.0Sep 25, 2026
  13. v1.12.1Sep 17, 2026
  14. v1.11.0Sep 16, 2026

评分

已满足适用检查项的 100%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分