Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Medical Terminologies MCP

NPM · MEDICAL-TERMINOLOGIES-MCP · 2 COMPONENTS · SCANNED SEP 20

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

+15 this week 95 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security98
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 6 of 19 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency100
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to SidneyBissoli/medical-terminologies-mcp). View diagnostics → Pass
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 3 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability82
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 6681 tokens (~180/item across 37 items; 33 tools + 4 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management90
  • Stability observed for 27 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 33 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 35 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
Install

How do I install the Medical Terminologies MCP server?

Medical Terminologies MCP runs locally as an npm package, launched with npx -y medical-terminologies-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · medical-terminologies-mcp

# add to Claude Code
claude mcp add sidneybissoli-medical-terminologies-mcp -- npx -y medical-terminologies-mcp
// .cursor/mcp.json
{
  "mcpServers": {
    "sidneybissoli-medical-terminologies-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "medical-terminologies-mcp"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "sidneybissoli-medical-terminologies-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "medical-terminologies-mcp"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add sidneybissoli-medical-terminologies-mcp -- npx -y medical-terminologies-mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "sidneybissoli-medical-terminologies-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "medical-terminologies-mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add sidneybissoli-medical-terminologies-mcp --command npx --arg -y --arg medical-terminologies-mcp
# ~/.hermes/config.yaml
mcp_servers:
  sidneybissoli-medical-terminologies-mcp:
    command: "npx"
    args: ["-y", "medical-terminologies-mcp"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "sidneybissoli-medical-terminologies-mcp": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "medical-terminologies-mcp"
      ]
    }
  }
}
# add to Vellum
assistant mcp add sidneybissoli-medical-terminologies-mcp -t stdio -c npx -a -y medical-terminologies-mcp
// mcp.json
{
  "mcpServers": {
    "sidneybissoli-medical-terminologies-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "medical-terminologies-mcp"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 20 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.

  • 18 Sept 26 +11
    • Known CVEs: unverified → pass security
    • Dependency health: unverified → 0.88 functional
  • 17 Sept 26 −13
    • Known CVEs: pass → unverified security
    • Stability: pass → unverified security
    • Tool safety: pass → unverified security
    • Tool coverage: 100 → unverified functional
    • Schema quality: 100 → unverified functional
    • Capabilities: pass → unverified functional
    • Dependency health: 0.86 → unverified functional
    • Stability: pass → 0.80 functional
    • Package version: 1.12.0 → 1.12.1 functional
  • 16 Sept 26 0
    • Stability: 0.97 → unverified security
    • Tool safety: pass → unverified security
    • Stability: 0.97 → pass security
    • Capabilities: pass → unverified functional
    • Tool coverage: 100 → unverified functional
    • Schema quality: 100 → unverified functional
    • Package version: 1.11.0 → 1.12.0 functional
  • 15 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.

  • 14 Sept 26 +15
    • Malware scan: unverified → pass security
  • 13 Sept 26 −14
    • Malware scan: pass → unverified security
    • Package version: 1.10.0 → 1.11.0 functional
  • 11 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 20 Sept 2026 · Analysed npm/medical-terminologies-mcp@1.12.1

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem npm
Reason Verified
Discovered via Registry attestation endpoint
Source repo SidneyBissoli/medical-terminologies-mcp
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/SidneyBissoli/medical-terminologies-mcp/.github/workflows/publish.yml@refs/tags/v1.12.1
Rekor log index 2869278690
Predicate type https://slsa.dev/provenance/v1
Subject digest sha512:404c5f6f59cef822e59247c5ad2728b6bf12a29282e9b0dd8f23ee66d0eab1f316c620ab63cc3742aa91e0f8cec002aab7aeeca75efe55de5146effe5

Background: How many MCP packages publish verified provenance →

Dependencies 19 packages
Packages resolved 19
Stale 5
No linked repository 1
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 33 exposed · ~6,002 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
atc_classify ~157

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.

NameTypeReqDescription
drug_namestringyesDrug name to classify (brand or generic, e.g., "metformin")
NameTypeReqDescription
attributionarrayyesCanonical source URLs of this response (attribution list)
drug_namestringyes
matchesarrayyes
provenanceobjectyesProvenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license

No examples provided.

atc_lookup ~225

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.

NameTypeReqDescription
atc_codestringyesATC code at level 1-4 (1-5 chars). Substance-level codes (7 chars, e.g., A10BA02) are not exposed by this endpoint — use atc_classify with the drug name instead.
NameTypeReqDescription
atc_codestringyes
attributionarrayyesCanonical source URLs of this response (attribution list)
detailsyes
foundbooleanyes
provenanceobjectyesProvenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license

No examples provided.

atc_members ~166

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.

NameTypeReqDescription
atc_codestringyesATC code at any level. Higher levels (1-4) return all member substances; level 5 returns the single substance.
NameTypeReqDescription
atc_codestringyes
attributionarrayyesCanonical source URLs of this response (attribution list)
membersarrayyes
provenanceobjectyesProvenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license

No examples provided.

cid10_chapter ~118

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 - Build hierarchical browsers - Find which group contains a code range Provide a chapter number (1-22).

NameTypeReqDescription
numintegeryesChapter number (1-22). CID-10 V2008 has 22 chapters.
NameTypeReqDescription
attributionarrayyesCanonical source URLs of this response (attribution list)
chapteryes
foundbooleanyes
groupsarrayyes
numintegeryes
provenanceobjectyesProvenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license

No examples provided.

cid10_chapters ~131

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.

Input schema present but exposes no named parameters.

NameTypeReqDescription
attributionarrayyesCanonical source URLs of this response (attribution list)
chaptersarrayyes
provenanceobjectyesProvenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license

No examples provided.

cid10_lookup ~149

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.

NameTypeReqDescription
codestringyesCID-10 code (e.g., "A00", "A00.1", "A001", "I21"). Dotted and undotted forms both accepted.
NameTypeReqDescription
attributionarrayyesCanonical source URLs of this response (attribution list)
codestringyes
foundbooleanyes
hityes
provenanceobjectyesProvenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license

No examples provided.

cid10_search ~342

Search the Brazilian CID-10 (Classificação Estatística Internacional de Doenças, 10ª Revisão) by Portuguese text. Use this tool to: - Find CID-10 codes for Brazilian SUS / ANVISA contexts ("infarto", "diabetes", "tuberculose") - Look up the official Portuguese (CBCD/USP) translation of a clinical term - Locate codes for billing, epidemiology, and clinical documentation in Brazil Returns matches from CID-10 categories (3-char) and/or subcategories (4-char). Search is diacritic-insensitive: typing "infeccoes" matches "infecções". Every word must match (AND), and everyday Portuguese is resolved to the CID-10's own wording (câncer→neoplasia maligna, AVC→acidente vascular cerebral, pressão alta→hipertensão, suicídio→lesão autoprovocada, aids→HIV); when that happens the response says so in vocabulary_notes. This tool searches the Brazilian Portuguese CID-10 V2008 — for the international ICD-11 (current WHO revision, in English by default), use icd11_search.

NameTypeReqDescription
levelstringRestrict search to 3-char categories, 4-char subcategories, or both. Default: all
max_resultsintegerMaximum number of results (1-100). Default: 25
querystringyesSearch terms in Portuguese, AND between words (e.g., "diabetes", "infarto", "câncer de mama"); accents ignored, everyday words resolved to CID-10 wording
NameTypeReqDescription
attributionarrayyesCanonical source URLs of this response (attribution list)
hitsarrayyes
levelstringyes
provenanceobjectyesProvenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license
querystringyes
shown_countintegeryes
total_countintegeryes
vocabulary_notesarray

No examples provided.

fetch ~206

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.

NameTypeReqDescription
idstringyesIdentifier of a document returned by `search`
NameTypeReqDescription
attributionarrayyesCanonical source URLs of this response (attribution list)
idstringyesUnique identifier of the document on this server; what `fetch` takes
metadataobjectAdditional key/value pairs about the document (kind, source, period…)
provenanceobjectyesProvenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license
textstringyesFull readable content of the document (Markdown)
titlestringyesHuman-readable title of the document
urlstringyesCanonical public URL of the document — ChatGPT's citation depends on it

No examples provided.

find_equivalent ~434

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, SNOMED CT, 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.

NameTypeReqDescription
limitintegerMaximum candidates returned PER terminology (1-10, default 5). This is a cap, not a page: the live fan-out has no stable cursor across five upstreams, so raise the limit instead of paging.
source_terminologystringIf set, this terminology is excluded from the search. Use this when the term came from this terminology and you want equivalents in the others. Combines with target_terminologies by subtraction (sour…
target_terminologiesarrayLimit the search to these terminologies. If omitted, all five are searched.
termstringyesMedical term to search (e.g., "diabetes", "aspirin")
NameTypeReqDescription
attributionarrayyesCanonical source URLs of this response (attribution list)
groupsarrayyes
provenancearrayyesOne provenance block per upstream source that contributed to this response (contract v1.0; licenses are never merged)
rankingobjectyes
resultsobjectyes
searched_terminologiesarrayyes
source_terminologyyes
termstringyes

No examples provided.

icd11_chapters ~111

List all ICD-11 chapters (top-level categories). Use this tool to: - Get an overview of ICD-11 structure - Find which chapter covers a body system or condition type - Navigate to specific disease categories ICD-11 has 28 chapters covering all areas of medicine.

NameTypeReqDescription
languagestringLanguage code (default: en). Returns the source's OFFICIAL translation when it exists (e.g. 'pt' for official Portuguese); content is never machine-translated.
NameTypeReqDescription
attributionarrayyesCanonical source URLs of this response (attribution list)
chaptersarrayyes
provenanceobjectyesProvenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license

No examples provided.

icd11_hierarchy ~297

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.

NameTypeReqDescription
codestringICD-11 code (e.g., "BA00", "5A11") or block range (e.g., "5A10-5A2Y")
directionstringyesDirection: "parents" for ancestors, "children" for subtypes
languagestringLanguage code (default: en). Returns the source's OFFICIAL translation when it exists (e.g. 'pt' for official Portuguese); content is never machine-translated.
uristringEntity URI as returned by icd11_lookup, icd11_search or a previous icd11_hierarchy call
NameTypeReqDescription
attributionarrayyesCanonical source URLs of this response (attribution list)
codestringyes
directionstringyes
entitiesarrayyes
provenanceobjectyesProvenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license

No examples provided.

icd11_lookup ~175

Get detailed information about a specific ICD-11 entity by code or URI. Use this tool to: - Get the full definition of a disease - Retrieve coding notes and exclusions - Get the official title and synonyms Provide either an ICD-11 code (e.g., "BA00") or a full foundation URI. Set `language` for WHO's official translations (e.g. `language: "pt"` for official Portuguese).

NameTypeReqDescription
codestringICD-11 code (e.g., "BA00", "1A00")
languagestringLanguage code (default: en). Returns the source's OFFICIAL translation when it exists (e.g. 'pt' for official Portuguese); content is never machine-translated.
uristringFull ICD-11 foundation URI
NameTypeReqDescription
attributionarrayyesCanonical source URLs of this response (attribution list)
block_idstring|nullyes
browser_urlstring|nullyes
class_kindstring|nullyes
codestring|nullyes
code_rangestring|nullyes
coding_notestring|nullyes
definitionstring|nullyes
diagnostic_criteriastring|nullyes
exclusionsarrayyes
inclusionsarrayyes
index_termsarrayyes
long_definitionstring|nullyes
provenanceobjectyesProvenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license
titlestringyes
uristringyes

No examples provided.

icd11_postcoordination ~85

Get postcoordination information for an ICD-11 code. Use this tool to: - Find available axes for building composite codes - Check required vs optional postcoordination - Understand code extension possibilities Postcoordination allows adding severity, laterality, anatomy, etc.

NameTypeReqDescription
codestringyesICD-11 code to get postcoordination info for
NameTypeReqDescription
attributionarrayyesCanonical source URLs of this response (attribution list)
axesarrayyes
codestringyes
provenanceobjectyesProvenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license

No examples provided.

icd11_search ~198

Search for medical conditions, diseases, and health problems in ICD-11 (International Classification of Diseases, 11th Revision). Use this tool to: - Find ICD-11 codes for diagnoses - Search for diseases by name or keyword - Look up conditions in multiple languages Set `language` for WHO's official translations — e.g. `language: "pt"` searches and returns the official Portuguese (pt-BR) ICD-11 labels. Never machine-translated. Returns matching entities with codes, titles, and relevance scores.

NameTypeReqDescription
languagestringLanguage code (default: en). Returns the source's OFFICIAL translation when it exists (e.g. 'pt' for official Portuguese); content is never machine-translated.
max_resultsintegerMaximum number of results (1-100). Default: 25
querystringyesSearch text (disease name, symptom, or keyword)
NameTypeReqDescription
attributionarrayyesCanonical source URLs of this response (attribution list)
entitiesarrayyes
provenanceobjectyesProvenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license
querystringyes
total_countintegeryes

No examples provided.

loinc_answers ~90

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 for data entry validation - Look up standardized answer lists Only applicable to LOINC codes that represent questions with defined answer sets.

NameTypeReqDescription
loinc_numstringyesLOINC number (e.g., "2339-0")
NameTypeReqDescription
answersarrayyes
attributionarrayyesCanonical source URLs of this response (attribution list)
loinc_numstringyes
provenanceobjectyesProvenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license

No examples provided.

loinc_details ~107

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).

NameTypeReqDescription
loinc_numstringyesLOINC number (e.g., "2339-0")
NameTypeReqDescription
attributionarrayyesCanonical source URLs of this response (attribution list)
classstringyes
componentstringyes
external_copyright_noticestring|nullyes
loinc_numstringyes
long_common_namestringyes
method_typestringyes
propertystringyes
provenanceobjectyesProvenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license
scale_typestringyes
short_namestringyes
statusstringyes
systemstringyes
time_aspectstringyes

No examples provided.

loinc_panels ~95

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.

NameTypeReqDescription
loinc_numstringyesLOINC number (e.g., "2339-0")
NameTypeReqDescription
attributionarrayyesCanonical source URLs of this response (attribution list)
loinc_numstringyes
panelyes
provenanceobjectyesProvenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license

No examples provided.

loinc_search ~129

Search for laboratory tests, clinical observations, and measurements in LOINC (Logical Observation Identifiers Names and Codes). Use this tool to: - Find LOINC codes for lab tests (e.g., "glucose", "hemoglobin") - Search for clinical measurements and vital signs - Look up diagnostic observations Returns matching LOINC codes with names, components, and properties.

NameTypeReqDescription
max_resultsintegerMaximum number of results (1-100). Default: 25
querystringyesSearch term (test name, keyword, or partial LOINC code)
NameTypeReqDescription
attributionarrayyesCanonical source URLs of this response (attribution list)
itemsarrayyes
provenanceobjectyesProvenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license
querystringyes
shown_countintegeryes
total_countintegeryes

No examples provided.

map_icd10_to_icd11 ~291

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.

NameTypeReqDescription
icd10_codestringyesICD-10 code to query in the ICD-11 search index (e.g., E11, I21.0, J18.9)
NameTypeReqDescription
alternativesarrayyesAdditional ICD-11 candidates WHO documents for this ICD-10 code. Empty when the primary is the only documented mapping (or when found=false). 1,461 of the 11,243 indexed codes have non-empty alternat…
attributionarrayyesCanonical source URLs of this response (attribution list)
foundbooleanyesWhether the code is in the WHO ICD-10 → ICD-11 transition table.
icd10yesSource ICD-10 entry from the WHO table. Null when found=false.
primaryyesPrimary 1:1 ICD-11 mapping. Null when found=false.
provenanceobjectyesProvenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license
querystringyesThe ICD-10 code as submitted (raw, before normalization).
sourceobjectyes

No examples provided.

map_loinc_to_snomed ~230

This tool looks up a LOINC code in NLM Clinical Tables and returns guidance on where to obtain a LOINC → SNOMED CT mapping. It does not perform the mapping. Direct LOINC → SNOMED CT mappings are not freely available via API. UMLS Metathesaurus contains the relationships but requires an individual UMLS Terminology Services license; the LOINC SNOMED CT Expression Association is published by Regenstrief Institute as part of the LOINC release and requires authenticated download from loinc.org under the LOINC license. For programmatic LOINC → SNOMED mapping, use UMLS or the LOINC Expression Association files. For interactive lookup, use the SNOMED CT browser available to your organization or the Regenstrief RELMA desktop tool. Provide a LOINC code like "2339-0" (Glucose) or "718-7" (Hemoglobin).

NameTypeReqDescription
loinc_codestringyesLOINC code (e.g., 2339-0 for Glucose)
NameTypeReqDescription
attributionarrayyesCanonical source URLs of this response (attribution list)
guidancestringyesShort human-readable explanation of why this tool returns guidance instead of a mapping.
loinc_codestringyesThe LOINC code as submitted.
loinc_detailsyesNLM Clinical Tables details for the LOINC code (component, system, property, etc.). Null when the code was not found upstream.
mapping_sourcesarrayyesStructured list of authoritative LOINC → SNOMED CT mapping sources (UMLS Metathesaurus, LOINC SNOMED CT Expression Association, Regenstrief RELMA).
provenanceobjectyesProvenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license
statusstringyesAlways "guidance-only" — direct LOINC → SNOMED CT mappings require licensed sources (UMLS Metathesaurus or LOINC SNOMED CT Expression Association). This tool returns pointers, not the mapping itself.

No examples provided.

mesh_descriptor ~159

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"`).

NameTypeReqDescription
languagestringLanguage code (default: en). Returns the source's OFFICIAL translation when it exists (e.g. 'pt' for official Portuguese); content is never machine-translated.
mesh_idstringyesMeSH Descriptor ID (e.g., D015242, D003920)
NameTypeReqDescription
attributionarrayyesCanonical source URLs of this response (attribution list)
conceptsarrayyes
idstringyes
labelstringyes
provenanceobjectyesProvenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license
qualifiersarrayyes
scope_notestringyes
tree_numbersarrayyes
uristringyes

No examples provided.

mesh_qualifiers ~96

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").

NameTypeReqDescription
mesh_idstringyesMeSH Descriptor ID (e.g., D015242, D003920)
NameTypeReqDescription
attributionarrayyesCanonical source URLs of this response (attribution list)
mesh_idstringyes
provenanceobjectyesProvenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license
qualifiersarrayyes

No examples provided.

mesh_search ~199

Search for MeSH (Medical Subject Headings) descriptors. Use this tool to: - Find MeSH terms for indexing medical literature - Look up subject headings for PubMed searches - Find controlled vocabulary terms Set `language` to request NLM's official translations where they exist (e.g. `language: "pt"` for Portuguese labels); content is never machine-translated. Returns matching descriptors with MeSH IDs and labels.

NameTypeReqDescription
languagestringLanguage code (default: en). Returns the source's OFFICIAL translation when it exists (e.g. 'pt' for official Portuguese); content is never machine-translated.
matchstringMatch type: exact, contains, or startswith. Default: contains
max_resultsintegerMaximum number of results (1-100). Default: 25
querystringyesSearch term (e.g., "diabetes", "heart failure")
NameTypeReqDescription
attributionarrayyesCanonical source URLs of this response (attribution list)
descriptorsarrayyes
matchstringyes
provenanceobjectyesProvenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license
querystringyes
total_countintegeryes

No examples provided.

mesh_tree ~104

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).

NameTypeReqDescription
mesh_idstringyesMeSH Descriptor ID (e.g., D015242, D003920)
NameTypeReqDescription
attributionarrayyesCanonical source URLs of this response (attribution list)
mesh_idstringyes
provenanceobjectyesProvenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license
tree_numbersarrayyes

No examples provided.

rxnorm_classes ~80

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.

NameTypeReqDescription
rxcuistringyesRxCUI of the drug
NameTypeReqDescription
attributionarrayyesCanonical source URLs of this response (attribution list)
classesarrayyes
provenanceobjectyesProvenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license
rxcuistringyes

No examples provided.

rxnorm_concept ~112

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

NameTypeReqDescription
include_relatedbooleanInclude related concepts (ingredients, brands, dose forms)
rxcuistringyesRxNorm Concept Unique Identifier
NameTypeReqDescription
attributionarrayyesCanonical source URLs of this response (attribution list)
languagestringyes
namestringyes
provenanceobjectyesProvenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license
related_groupsyes
remapped_toarrayyes
rxcuistringyes
statusstringyes
suppressstringyes
synonymstringyes
ttystringyes
umlscuistringyes

No examples provided.

rxnorm_ingredients ~77

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.

NameTypeReqDescription
rxcuistringyesRxCUI of the drug
NameTypeReqDescription
attributionarrayyesCanonical source URLs of this response (attribution list)
ingredientsarrayyes
provenanceobjectyesProvenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license
rxcuistringyes

No examples provided.

rxnorm_ndc ~126

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.

NameTypeReqDescription
ndcstringNDC code to look up RxCUI (alternative to rxcui)
rxcuistringRxCUI to get NDC codes for
NameTypeReqDescription
attributionarrayyesCanonical source URLs of this response (attribution list)
ndcstring|nullyes
ndcsarrayyes
provenanceobjectyesProvenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license
query_modestringyes
rxcuistring|nullyes

No examples provided.

rxnorm_search ~101

Search for drugs in RxNorm (Normalized names for clinical drugs). Use this tool to: - Find drug concepts by brand or generic name - Look up medications for prescribing - Search for drug formulations Returns matching drugs with RxCUI identifiers, names, and term types.

NameTypeReqDescription
max_resultsintegerMaximum number of results (1-100). Default: 25
querystringyesDrug name to search (brand or generic)
NameTypeReqDescription
attributionarrayyesCanonical source URLs of this response (attribution list)
drugsarrayyes
provenanceobjectyesProvenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license
querystringyes
total_countintegeryes

No examples provided.

search ~257

Searches the medical terminologies (CID-10 categories and chapters, ICD-11, LOINC, RxNorm, MeSH, terminology version records) catalog and returns up to 10 matching documents as { id, title, url }, ordered by relevance (an empty list means nothing matched). This tool exists for the OpenAI Deep Research contract: ChatGPT deep research, company knowledge and research workflows over the Responses API require exactly the tools `search` and `fetch`. Pass one of the returned ids to `fetch` to read the document. For direct questions and for data (values, series, rankings) prefer the terminology tools (`icd11_*`, `cid10_*`, `loinc_*`, `rxnorm_*`, `mesh_*`, `atc_*`, `map_*`, `find_equivalent`, `validate_codes`), which return the actual data with provenance — this is a catalog index, not a data query. Query: natural language or keywords, Portuguese or English; accents and case are ignored. Behavior: read-only and idempotent — the catalog comes from the public source and is cached in memory.

NameTypeReqDescription
querystringyesSearch terms, natural language or keywords (accents and case are ignored)
NameTypeReqDescription
attributionarrayyesCanonical source URLs of this response (attribution list)
provenancearrayyesOne provenance block per upstream source that contributed to this response (contract v1.0; licenses are never merged)
resultsarrayyesMatching documents, in relevance order

No examples provided.

terminology_diff ~346

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 (SNOMED, LOINC, RxNorm, MeSH), the publisher's official changelog is the authoritative source.

NameTypeReqDescription
from_versionstringVersion you have data from. Optional; behavior depends on terminology.
terminologystringyesWhich terminology to report on.
to_versionstringVersion you want to compare to. Optional.
NameTypeReqDescription
attributionarrayyesCanonical source URLs of this response (attribution list)
bundled_versionsarrayyes
changelog_urlstring|nullyes
cross_revision_summaryyesPopulated only for terminology="icd10" today — the bundled WHO ICD-10 → ICD-11 transition tables let us surface a real structural diff between the two WHO revisions.
diff_availablebooleanyesTrue when this server has the data to compute a real diff for the requested terminology. False = guidance-only response.
from_versionstring|nullyes
messagestringyes
provenanceobjectyesProvenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license
terminologystringyes
to_versionstring|nullyes

No examples provided.

terminology_versions ~188

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 / SNOMED / 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 8 is returned. The ICD-10 → ICD-11 version reads live from the bundled dataset; everything else is metadata maintained alongside the project release.

NameTypeReqDescription
terminologystringFilter to a single terminology. Omit to return all 8.
NameTypeReqDescription
attributionarrayyesCanonical source URLs of this response (attribution list)
generatedstringyesDate this snapshot was generated.
provenanceobjectyesProvenance block (contract v1.0): source, URL, data vintage, extraction instant, citation, license
terminologiesarrayyes
totalintegeryes

No examples provided.

validate_codes ~421

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; SNOMED and LOINC return 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, SNOMED feature flag off, 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`, `snomed`, `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).

NameTypeReqDescription
codesarrayyesList of code+terminology pairs to validate. Hard cap of 50 per call to keep total latency under ~10 s given upstream rate limits.
NameTypeReqDescription
attributionarrayyesCanonical source URLs of this response (attribution list)
error_countintegeryesHow many couldn't be validated due to upstream/network errors.
invalid_countintegeryesHow many were not found.
provenancearrayyesOne provenance block per upstream source that contributed to this response (contract v1.0; licenses are never merged)
resultsarrayyes
totalintegeryesNumber of codes submitted.
valid_countintegeryesHow many were confirmed valid.

No examples provided.

Common questions

What is the Medical Terminologies MCP server?

Medical Terminologies MCP is listed in the public MCP registry as io.github.SidneyBissoli/medical-terminologies-mcp. Diagnoses, drugs & lab codes: ICD-11, SNOMED, LOINC, RxNorm, MeSH, ATC, CID-10. 33 tools, MIT. This page covers its npm package (medical-terminologies-mcp).

Is the Medical Terminologies MCP server safe to use?

Medical Terminologies MCP scores 95 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Medical Terminologies MCP server expose?

Medical Terminologies MCP exposes 33 tools: icd11_search, icd11_lookup, icd11_hierarchy, icd11_chapters, icd11_postcoordination, and 28 more. Their descriptions and schemas cost roughly 6,002 tokens of context every time the server is loaded.

Is the Medical Terminologies MCP server still maintained?

Medical Terminologies MCP is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the Medical Terminologies MCP server under?

Medical Terminologies MCP declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.