# Medical Terminologies MCP MCP server

Unified MCP lookup server for ICD-11, SNOMED, LOINC, RxNorm, MeSH, ATC, CID-10. tools, MIT.

## Links
- Registry page: https://www.getdrio.com/mcp/io-github-sidneybissoli-medical-terminologies-mcp
- Repository: https://github.com/SidneyBissoli/medical-terminologies-mcp
- Website: https://medium.com/@sbissoli76/seven-medical-terminologies-one-mcp-server-a-practical-walkthrough-for-clinical-and-research-use-a6c46de9c83b

## Install
- Command: `npx -y medical-terminologies-mcp`
- Endpoint: https://medical-terminologies-mcp.sidneybissoli.workers.dev/mcp
- Auth: Not captured

## Setup notes
- Package: Npm medical-terminologies-mcp v1.5.0
- Environment variable: WHO_CLIENT_ID
- Environment variable: WHO_CLIENT_SECRET (secret)
- Environment variable: WHO_ICD11_RELEASE_ID
- Environment variable: ENABLE_SNOMED_TOOLS
- Environment variable: SNOMED_BASE_URL
- Environment variable: SNOMED_LANGUAGE
- Environment variable: LOG_LEVEL
- Package: Npm medical-terminologies-mcp v1.5.0
- Package argument: --http
- Package argument: --port
- Package argument: --host
- Environment variable: WHO_CLIENT_ID
- Environment variable: WHO_CLIENT_SECRET (secret)
- Environment variable: WHO_ICD11_RELEASE_ID
- Environment variable: ENABLE_SNOMED_TOOLS
- Environment variable: SNOMED_BASE_URL
- Environment variable: SNOMED_LANGUAGE
- Environment variable: LOG_LEVEL
- Remote endpoint: https://medical-terminologies-mcp.sidneybissoli.workers.dev/mcp

## Tools
- icd11_search - 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

Returns matching entities with codes, titles, and relevance scores. Endpoint: https://medical-terminologies-mcp.sidneybissoli.workers.dev/mcp
- icd11_lookup - 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. Endpoint: https://medical-terminologies-mcp.sidneybissoli.workers.dev/mcp
- icd11_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

Direction 'parents' returns ancestor categories, 'children' returns subcategories. Endpoint: https://medical-terminologies-mcp.sidneybissoli.workers.dev/mcp
- icd11_chapters - 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. Endpoint: https://medical-terminologies-mcp.sidneybissoli.workers.dev/mcp
- icd11_postcoordination - 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. Endpoint: https://medical-terminologies-mcp.sidneybissoli.workers.dev/mcp
- loinc_search - 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. Endpoint: https://medical-terminologies-mcp.sidneybissoli.workers.dev/mcp
- loinc_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). Endpoint: https://medical-terminologies-mcp.sidneybissoli.workers.dev/mcp
- loinc_answers - 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. Endpoint: https://medical-terminologies-mcp.sidneybissoli.workers.dev/mcp
- loinc_panels - 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. Endpoint: https://medical-terminologies-mcp.sidneybissoli.workers.dev/mcp
- rxnorm_search - 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. Endpoint: https://medical-terminologies-mcp.sidneybissoli.workers.dev/mcp
- rxnorm_concept - 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". Endpoint: https://medical-terminologies-mcp.sidneybissoli.workers.dev/mcp
- rxnorm_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. Endpoint: https://medical-terminologies-mcp.sidneybissoli.workers.dev/mcp
- rxnorm_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. Endpoint: https://medical-terminologies-mcp.sidneybissoli.workers.dev/mcp
- rxnorm_ndc - 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. Endpoint: https://medical-terminologies-mcp.sidneybissoli.workers.dev/mcp
- mesh_search - 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

Returns matching descriptors with MeSH IDs and labels. Endpoint: https://medical-terminologies-mcp.sidneybissoli.workers.dev/mcp
- mesh_descriptor - 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). Endpoint: https://medical-terminologies-mcp.sidneybissoli.workers.dev/mcp
- mesh_tree - 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). Endpoint: https://medical-terminologies-mcp.sidneybissoli.workers.dev/mcp
- mesh_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"). Endpoint: https://medical-terminologies-mcp.sidneybissoli.workers.dev/mcp
- map_icd10_to_icd11 - 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. Endpoint: https://medical-terminologies-mcp.sidneybissoli.workers.dev/mcp
- map_loinc_to_snomed - 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). Endpoint: https://medical-terminologies-mcp.sidneybissoli.workers.dev/mcp
- validate_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; 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). Endpoint: https://medical-terminologies-mcp.sidneybissoli.workers.dev/mcp
- find_equivalent - 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. Endpoint: https://medical-terminologies-mcp.sidneybissoli.workers.dev/mcp
- atc_classify - 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. Endpoint: https://medical-terminologies-mcp.sidneybissoli.workers.dev/mcp
- atc_lookup - 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. Endpoint: https://medical-terminologies-mcp.sidneybissoli.workers.dev/mcp
- atc_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. Endpoint: https://medical-terminologies-mcp.sidneybissoli.workers.dev/mcp
- cid10_search - 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". This tool searches the Brazilian Portuguese CID-10 V2008 — for the international ICD-11 (current WHO revision, in English by default), use icd11_search. Endpoint: https://medical-terminologies-mcp.sidneybissoli.workers.dev/mcp
- cid10_lookup - 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. Endpoint: https://medical-terminologies-mcp.sidneybissoli.workers.dev/mcp
- cid10_chapters - 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. Endpoint: https://medical-terminologies-mcp.sidneybissoli.workers.dev/mcp
- cid10_chapter - 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). Endpoint: https://medical-terminologies-mcp.sidneybissoli.workers.dev/mcp
- 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 / 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. Endpoint: https://medical-terminologies-mcp.sidneybissoli.workers.dev/mcp
- terminology_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 (SNOMED, LOINC, RxNorm, MeSH), the publisher's official changelog is the authoritative source. Endpoint: https://medical-terminologies-mcp.sidneybissoli.workers.dev/mcp

## Resources
- info://server - Version, tool count, supported terminologies, and feature-flag state. Useful for LLMs to ground answers about server capabilities. MIME type: application/json
- info://cid10/chapters - List of the 22 CID-10 chapters (Brazilian Portuguese ICD-10, DataSUS V2008) with code ranges and Portuguese descriptions. Source: bundled CID-10 dataset. MIME type: application/json
- info://licenses - Per-terminology license disclaimers and access requirements. Important for downstream redistribution decisions and for surfacing license constraints in LLM answers. MIME type: text/markdown
- info://stats - Per-tool invocation counts and total successful dispatches recorded by the hosted Cloudflare Workers endpoint. Excludes local stdio installs (those have no shared counter by design). Useful for adoption signal — see top_tool to know which terminology is pulling the most demand. MIME type: application/json

## Prompts
- find-medical-code - Search a clinical condition, symptom, or medical term across all available terminologies (ICD-11, LOINC, RxNorm, MeSH, ATC, CID-10) in parallel and synthesize the matches with their codes and source terminology. Arguments: condition, language
- drug-info - Compile comprehensive information about a drug — normalized name, RxCUI, active ingredients, therapeutic classes, and WHO ATC classification — by composing RxNorm and ATC tool calls. Arguments: drug_name
- cid10-portuguese-lookup - Procura um termo médico em português no CID-10 brasileiro (DataSUS V2008), com contexto de capítulo e descrição clínica. Searches a Portuguese medical term in the Brazilian CID-10 with chapter context. Arguments: term

## Metadata
- Owner: io.github.SidneyBissoli
- Version: 1.5.0
- Runtime: Npm
- Transports: STDIO, HTTP
- License: Not captured
- Language: Not captured
- Stars: Not captured
- Updated: May 13, 2026
- Source: https://registry.modelcontextprotocol.io
