io.github.SidneyBissoli/medical-terminologies-mcp
Unified access to global medical terminologies: ICD-11, SNOMED CT, LOINC, RxNorm, MeSH
Ask AI about io.github.SidneyBissoli/medical-terminologies-mcp
Powered by Claude · Grounded in docs
I know everything about io.github.SidneyBissoli/medical-terminologies-mcp. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
Medical Terminologies MCP Server
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
| Variable | Required | Description |
|---|---|---|
WHO_CLIENT_ID | Yes* | WHO ICD API Client ID |
WHO_CLIENT_SECRET | Yes* | WHO ICD API Client Secret |
*Required for ICD-11 tools. Get credentials at: https://icd.who.int/icdapi
Other APIs (LOINC, RxNorm, MeSH, SNOMED CT) do not require authentication.
Available Tools (27)
ICD-11 Tools (5)
| Tool | Description | Example |
|---|---|---|
icd11_search | Search ICD-11 by term | query: "diabetes mellitus" |
icd11_lookup | Get entity details by code/URI | code: "5A11" |
icd11_hierarchy | Navigate parent/child relationships | code: "5A11" |
icd11_chapters | List all ICD-11 chapters | - |
icd11_postcoordination | Get postcoordination axes | code: "5A11" |
LOINC Tools (4)
| Tool | Description | Example |
|---|---|---|
loinc_search | Search lab tests and observations | query: "glucose" |
loinc_details | Get full LOINC code details | loinc_num: "2339-0" |
loinc_answers | Get answer list for surveys | loinc_num: "44249-1" |
loinc_panels | Get panel/form structure | loinc_num: "24331-1" |
RxNorm Tools (5)
| Tool | Description | Example |
|---|---|---|
rxnorm_search | Search drugs by name | query: "metformin" |
rxnorm_concept | Get drug concept details | rxcui: "6809" |
rxnorm_ingredients | Get active ingredients | rxcui: "6809" |
rxnorm_classes | Get therapeutic classes | rxcui: "6809" |
rxnorm_ndc | Map between RxCUI and NDC | rxcui: "6809" |
MeSH Tools (4)
| Tool | Description | Example |
|---|---|---|
mesh_search | Search MeSH descriptors | query: "hypertension" |
mesh_descriptor | Get descriptor details | mesh_id: "D006973" |
mesh_tree | Get tree hierarchy location | mesh_id: "D006973" |
mesh_qualifiers | Get allowed qualifiers | mesh_id: "D006973" |
SNOMED CT Tools (5)
| Tool | Description | Example |
|---|---|---|
snomed_search | Search concepts by term | query: "myocardial infarction" |
snomed_concept | Get concept details by SCTID | sctid: "22298006" |
snomed_hierarchy | Get parent/child concepts | sctid: "22298006" |
snomed_descriptions | Get all descriptions | sctid: "22298006" |
snomed_ecl | Execute ECL queries | ecl: "<< 73211009" |
Crosswalk Tools (4)
| Tool | Description | Example |
|---|---|---|
map_icd10_to_icd11 | Map ICD-10 to ICD-11 | icd10_code: "E11" |
map_snomed_to_icd10 | SNOMED to ICD-10 guidance | sctid: "73211009" |
map_loinc_to_snomed | LOINC to SNOMED guidance | loinc_code: "2339-0" |
find_equivalent | Cross-terminology search | term: "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
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 content is for reference purposes only. Production use requires an IHTSDO (SNOMED International) license.
- Member countries have national licenses
- Affiliate licenses available for others
- More info: https://www.snomed.org/snomed-ct/get-snomed
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:
| API | Rate Limit |
|---|---|
| WHO ICD-11 | 5 requests/second |
| NLM (LOINC, MeSH) | 10 requests/second |
| RxNorm | 20 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.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Author
Sidney Bissoli
- GitHub: @SidneyBissoli
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
- WHO for the ICD-11 API
- Regenstrief Institute for LOINC
- U.S. National Library of Medicine for RxNorm and MeSH
- SNOMED International for SNOMED CT
- Anthropic for the Model Context Protocol
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
