MCP Hub
Back to servers

medical-terminologies-mcp

Requires Setup

Unified access to global medical terminologies: ICD-11, SNOMED CT, LOINC, RxNorm, MeSH

Registry
Stars
3
Forks
1
Updated
May 8, 2026
Validated
May 10, 2026

Quick Install

npx -y medical-terminologies-mcp

Medical Terminologies MCP Server

npm version License: MIT MCP

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

  • ICD-11 - International Classification of Diseases (WHO)
  • SNOMED CT - Systematized Nomenclature of Medicine
  • LOINC - Logical Observation Identifiers Names and Codes
  • RxNorm - Normalized names for clinical drugs (NIH)
  • MeSH - Medical Subject Headings (NLM)

Features

  • 27 specialized tools for medical terminology lookup
  • Multi-terminology support in a single server
  • Cross-terminology mapping and search
  • Built-in caching for improved performance
  • Rate limiting to respect API limits
  • Detailed responses with rich formatting

Installation

Global Installation (Recommended)

npm install -g medical-terminologies-mcp

Local Installation

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

{
  "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. 2024-01, 2025-01). Default 2024-01.
ENABLE_SNOMED_TOOLSNo²Set to true to register the 6 SNOMED-dependent tools. Default off.
SNOMED_BASE_URLNo²Base URL for a Snowstorm instance, e.g. https://my-snowstorm.example.com/snowstorm/snomed-ct.
SNOMED_LANGUAGENo²Accept-Language tag(s) for SNOMED responses, e.g. pt, pt-BR, es. Default en. Single-tag values are pass-through reliably; composite values with q-weights (e.g. pt-BR,en;q=0.8) depend on your Snowstorm instance's Accept-Language handling — fallback semantics may vary. Test against your specific deployment if relying on weighted fallback.
LOG_LEVELNopino log level (debug, info, warn, error, fatal). Default info.

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

² See SNOMED CT setup (advanced) below. LOINC, RxNorm, and MeSH need no configuration.

Available Tools (21 by default, 27 with SNOMED enabled)

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_answersGet answer list for surveysloinc_num: "44249-1"
loinc_panelsGet panel/form structureloinc_num: "24331-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"

SNOMED CT Tools (5, disabled by default)

These are only registered when ENABLE_SNOMED_TOOLS=true. See SNOMED CT setup (advanced).

ToolDescriptionExample
snomed_searchSearch concepts by termquery: "myocardial infarction"
snomed_conceptGet concept details by SCTIDsctid: "22298006"
snomed_hierarchyGet parent/child conceptssctid: "22298006"
snomed_descriptionsGet all descriptionssctid: "22298006"
snomed_eclExecute ECL queriesecl: "<< 73211009"

Crosswalk Tools (4 — map_snomed_to_icd10 requires SNOMED)

ToolDescriptionExample
map_icd10_to_icd11Text search ICD-11 using an ICD-10 code (not authoritative; see WHO transition tables)icd10_code: "E11"
map_snomed_to_icd10SNOMED CT → ICD-10 guidance (only when ENABLE_SNOMED_TOOLS=true)sctid: "73211009"
map_loinc_to_snomedLOINC ↔ SNOMED guidanceloinc_code: "2339-0"
find_equivalentCross-terminology search; SNOMED branch is skipped when SNOMED tools are disabledterm: "diabetes"

Usage Examples

Search for a diagnosis in ICD-11

Use icd11_search with query "type 2 diabetes mellitus"

Look up a lab test in LOINC

Use loinc_details with loinc_num "2339-0" to get glucose test details

Find drug information in RxNorm

Use rxnorm_search with query "metformin" then rxnorm_concept for details

Search across all terminologies

Use find_equivalent with term "diabetes" to search ICD-11, SNOMED, LOINC, RxNorm, and MeSH

Map ICD-10 to ICD-11

Use map_icd10_to_icd11 with icd10_code "E11" to find ICD-11 equivalents

SNOMED CT setup (advanced)

The 5 SNOMED tools (snomed_search, snomed_concept, snomed_hierarchy, snomed_descriptions, snomed_ecl) plus the SNOMED-dependent crosswalk tool (map_snomed_to_icd10) are disabled by default. With them disabled, the server registers 21 tools instead of 27; find_equivalent still works and skips the SNOMED branch with an explanatory note.

The reason: as of 2026-05-08, the public IHTSDO Snowstorm endpoint that this project historically called (https://browser.ihtsdotools.org/snowstorm/snomed-ct/...) returns HTTP 410 Gone for every path. Without a working backend, registering these tools surfaces 6 guaranteed-broken tools to every client.

To enable the SNOMED tools:

  1. Confirm your SNOMED CT license. SNOMED CT use requires an SNOMED International (IHTSDO) license. Member country residents typically have one through their national release center; non-members can obtain an Affiliate license. See https://www.snomed.org/snomed-ct/get-snomed.

  2. Run a Snowstorm instance. SNOMED International publishes Snowstorm as open source (IHTSDO/snowstorm) and as a Docker image (snomedinternational/snowstorm). Self-hosting requires importing an RF2 release file (provided to license holders).

  3. Configure this server:

    {
      "mcpServers": {
        "medical-terminologies": {
          "command": "npx",
          "args": ["-y", "medical-terminologies-mcp"],
          "env": {
            "WHO_CLIENT_ID": "...",
            "WHO_CLIENT_SECRET": "...",
            "ENABLE_SNOMED_TOOLS": "true",
            "SNOMED_BASE_URL": "https://my-snowstorm.example.com/snowstorm/snomed-ct",
            "SNOMED_LANGUAGE": "en"
          }
        }
      }
    }
    

    SNOMED_BASE_URL should point at the base under which Snowstorm exposes its /MAIN/concepts and related endpoints. SNOMED_LANGUAGE accepts standard Accept-Language tags (e.g. pt, es, pt-BR,en;q=0.8) — Snowstorm returns localized terms when the branch has them and falls back to English otherwise.

  4. Restart the MCP client so the server picks up the env vars.

If you set ENABLE_SNOMED_TOOLS=true without configuring a working Snowstorm, the SNOMED tools will register but every call will fail at the network layer.

Terminology Licenses

ICD-11 (WHO)

ICD-11 content is provided under the Creative Commons Attribution-NoDerivatives 3.0 IGO license (CC BY-ND 3.0 IGO).

  • You must attribute WHO as the source
  • You may not create derivative works
  • API access requires registration at https://icd.who.int/icdapi

SNOMED CT

SNOMED CT use requires an IHTSDO (SNOMED International) license. The SNOMED tools in this server are disabled by default and only enabled by operators with a valid license and a self-hosted Snowstorm instance — see SNOMED CT setup (advanced).

LOINC

LOINC content is provided under the LOINC License.

  • Free for most uses
  • Attribution required
  • Registration recommended

RxNorm

RxNorm is produced by the U.S. National Library of Medicine and is freely available.

  • No license required for use
  • Attribution appreciated

MeSH

MeSH is produced by the U.S. National Library of Medicine and is freely available.

  • No license required for use
  • Attribution appreciated

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
SNOMED CT (Snowstorm)10 requests/second

Development

Building from source

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

Running locally

npm start

Testing with MCP Inspector

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

Reviews

No reviews yet

Sign in to write a review