Medical Terminologies MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| HOST | No | Bind address for HTTP transport (default 127.0.0.1) | 127.0.0.1 |
| PORT | No | TCP port for HTTP transport (default 3000) | 3000 |
| MCP_HTTP | No | Enable HTTP transport (set to 'true') instead of stdio | |
| LOG_LEVEL | No | pino log level (debug, info, warn, error, fatal). Default 'info'. | info |
| WHO_CLIENT_ID | Yes | WHO ICD API Client ID (required for ICD-11 tools) | |
| SNOMED_BASE_URL | No | Base URL for a Snowstorm instance (e.g. https://my-snowstorm.example.com/snowstorm/snomed-ct) | |
| SNOMED_LANGUAGE | No | Accept-Language tag for SNOMED responses (e.g. 'en', 'pt', 'pt-BR,en;q=0.8'). Default 'en'. | en |
| WHO_CLIENT_SECRET | Yes | WHO ICD API Client Secret (required for ICD-11 tools) | |
| ENABLE_SNOMED_TOOLS | No | Set to 'true' to enable SNOMED CT tools (requires self-hosted Snowstorm). Default 'false'. | false |
| WHO_ICD11_RELEASE_ID | No | ICD-11 release to query (e.g. 2024-01). Default 2024-01. | 2024-01 |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {} |
| prompts | {} |
| resources | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| icd11_searchA | Search for medical conditions, diseases, and health problems in ICD-11 (International Classification of Diseases, 11th Revision). Use this tool to:
Returns matching entities with codes, titles, and relevance scores. |
| icd11_lookupA | Get detailed information about a specific ICD-11 entity by code or URI. Use this tool to:
Provide either an ICD-11 code (e.g., "BA00") or a full foundation URI. |
| icd11_hierarchyA | Navigate the ICD-11 hierarchy to find parent or child entities. Use this tool to:
Direction 'parents' returns ancestor categories, 'children' returns subcategories. |
| icd11_chaptersA | List all ICD-11 chapters (top-level categories). Use this tool to:
ICD-11 has 28 chapters covering all areas of medicine. |
| icd11_postcoordinationA | Get postcoordination information for an ICD-11 code. Use this tool to:
Postcoordination allows adding severity, laterality, anatomy, etc. |
| loinc_searchA | Search for laboratory tests, clinical observations, and measurements in LOINC (Logical Observation Identifiers Names and Codes). Use this tool to:
Returns matching LOINC codes with names, components, and properties. |
| loinc_detailsA | Get detailed information about a specific LOINC code. Use this tool to:
Provide a LOINC number in format "XXXXX-X" (e.g., "2339-0" for Glucose). |
| loinc_answersA | Get the list of valid answers for a LOINC questionnaire item. Use this tool to:
Only applicable to LOINC codes that represent questions with defined answer sets. |
| loinc_panelsA | Get the structure of a LOINC panel or form. Use this tool to:
Returns the list of LOINC codes that make up the panel. |
| rxnorm_searchA | Search for drugs in RxNorm (Normalized names for clinical drugs). Use this tool to:
Returns matching drugs with RxCUI identifiers, names, and term types. |
| rxnorm_conceptA | Get detailed information about a specific RxNorm concept by RxCUI. Use this tool to:
Provide an RxCUI (RxNorm Concept Unique Identifier) like "161". |
| rxnorm_ingredientsA | Get active ingredients for a drug by RxCUI. Use this tool to:
Returns ingredient RxCUIs and names. |
| rxnorm_classesA | Get therapeutic and pharmacologic classes for a drug. Use this tool to:
Returns class IDs, names, and classification sources. |
| rxnorm_ndcA | Map between RxNorm concepts and National Drug Codes (NDC). Use this tool to:
Provide either an RxCUI to get NDCs, or an NDC to get the RxCUI. |
| mesh_searchA | Search for MeSH (Medical Subject Headings) descriptors. Use this tool to:
Returns matching descriptors with MeSH IDs and labels. |
| mesh_descriptorA | Get detailed information about a MeSH descriptor by ID. Use this tool to:
Provide a MeSH Descriptor ID like "D015242" (Ofloxacin). |
| mesh_treeA | Get the tree hierarchy location(s) for a MeSH descriptor. Use this tool to:
MeSH tree numbers show the hierarchical path (e.g., C14.280.647 for Myocardial Infarction). |
| mesh_qualifiersA | Get allowed qualifiers (subheadings) for a MeSH descriptor. Use this tool to:
Qualifiers refine descriptors (e.g., "Diabetes Mellitus/drug therapy"). |
| map_icd10_to_icd11A | 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. |
| map_loinc_to_snomedA | 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). |
| validate_codesA | 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
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: 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). |
| find_equivalentA | Search for equivalent terms across multiple medical terminologies. Use this tool to:
Searches across: ICD-11, SNOMED CT, LOINC, RxNorm, and MeSH. Set |
| atc_classifyA | Look up the WHO ATC (Anatomical Therapeutic Chemical) classification(s) for a drug by name. Use this tool to:
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. |
| atc_lookupA | Look up an ATC code at level 1-4 to get its name and hierarchy level. Use this tool to:
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_membersA | List the drugs (substances) that belong to an ATC class. Use this tool to:
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. |
| cid10_searchA | Search the Brazilian CID-10 (Classificação Estatística Internacional de Doenças, 10ª Revisão) by Portuguese text. Use this tool to:
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. |
| cid10_lookupA | Look up a specific CID-10 code and return its Portuguese name. Use this tool to:
Accepts both dotted ("A00.1") and undotted ("A001") forms; returns the canonical display. |
| cid10_chaptersA | List the 22 chapters of CID-10 with their code ranges and Portuguese titles. Use this tool to:
Returns 22 entries — CID-10 V2008 has not been updated since 2008. |
| cid10_chapterA | 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:
Provide a chapter number (1-22). |
| terminology_versionsA | 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:
Pass |
| terminology_diffA | 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. 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 Inputs:
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. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| 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. |
| 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. |
| 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. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| Server info | Version, tool count, supported terminologies, and feature-flag state. Useful for LLMs to ground answers about server capabilities. |
| CID-10 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. |
| Terminology licenses | Per-terminology license disclaimers and access requirements. Important for downstream redistribution decisions and for surfacing license constraints in LLM answers. |
| Usage stats (hosted endpoint) | 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. |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/SidneyBissoli/medical-terminologies-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server