<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Sidney Bissoli</title>
    <description>The latest articles on DEV Community by Sidney Bissoli (@sidneybissoli).</description>
    <link>https://dev.to/sidneybissoli</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3926068%2F9bef71c6-0092-4d9b-95ec-40dd4833cd9d.jpeg</url>
      <title>DEV Community: Sidney Bissoli</title>
      <link>https://dev.to/sidneybissoli</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sidneybissoli"/>
    <language>en</language>
    <item>
      <title>Seven medical terminologies, one MCP server: a practical walkthrough for clinical and research use</title>
      <dc:creator>Sidney Bissoli</dc:creator>
      <pubDate>Tue, 12 May 2026 01:55:45 +0000</pubDate>
      <link>https://dev.to/sidneybissoli/seven-medical-terminologies-one-mcp-server-a-practical-walkthrough-for-clinical-and-research-use-5gia</link>
      <guid>https://dev.to/sidneybissoli/seven-medical-terminologies-one-mcp-server-a-practical-walkthrough-for-clinical-and-research-use-5gia</guid>
      <description>&lt;p&gt;If you've ever asked an LLM to "find the LOINC code for procalcitonin" or "list the active ingredients in Janumet," you've probably watched it confidently invent a code that doesn't exist. Medical terminologies are exactly the kind of structured, frequently-updated reference data that language models are bad at memorizing and good at &lt;em&gt;looking up&lt;/em&gt; — if you give them the right tool.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;medical-terminologies-mcp&lt;/code&gt; is a Model Context Protocol server that gives any MCP-compatible client (Claude Desktop, Claude Code, Continue, and others) unified access to seven medical terminology systems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ICD-11&lt;/strong&gt; (WHO International Classification of Diseases, 11th Revision)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LOINC&lt;/strong&gt; (Logical Observation Identifiers Names and Codes)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;RxNorm&lt;/strong&gt; (NIH normalized clinical drug names)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MeSH&lt;/strong&gt; (NLM Medical Subject Headings)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ATC&lt;/strong&gt; (WHO Anatomical Therapeutic Chemical, served via NLM RxClass)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CID-10&lt;/strong&gt; (Brazilian Portuguese translation of ICD-10, DataSUS V2008 — bundled)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SNOMED CT&lt;/strong&gt; (Systematized Nomenclature of Medicine, optional, license required)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Twenty-six tools work out of the box with no authentication for LOINC, RxNorm, MeSH, ATC, CID-10, plus a bundled authoritative ICD-10 → ICD-11 mapping, a cross-terminology batch validator, and versioning + cross-revision diff. ICD-11 live lookup needs free WHO API credentials (a five-minute signup), bringing the default count to 31. SNOMED is gated behind an explicit feature flag and requires an IHTSDO license plus a self-hosted Snowstorm instance — more on why below.&lt;/p&gt;

&lt;p&gt;The server also exposes 3 MCP &lt;strong&gt;Prompts&lt;/strong&gt; that orchestrate tool calls into named user actions (&lt;code&gt;find-medical-code&lt;/code&gt;, &lt;code&gt;drug-info&lt;/code&gt;, &lt;code&gt;cid10-portuguese-lookup&lt;/code&gt;) and 3 &lt;strong&gt;Resources&lt;/strong&gt; for in-process reference content (server metadata, CID-10 chapter listing, per-terminology license disclaimers) — MCP clients render Prompts as one-click actions and read Resources by URI.&lt;/p&gt;

&lt;p&gt;This post walks through three concrete clinical and research workflows where the server earns its place in the toolbelt.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setup in 60 seconds
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"medical-terminologies"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"-y"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"medical-terminologies-mcp"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"env"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"WHO_CLIENT_ID"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"your-who-id"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"WHO_CLIENT_SECRET"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"your-who-secret"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Drop that into your Claude Desktop config (&lt;code&gt;%APPDATA%\Claude\claude_desktop_config.json&lt;/code&gt; on Windows, &lt;code&gt;~/Library/Application Support/Claude/claude_desktop_config.json&lt;/code&gt; on macOS), restart Claude, and 31 tools appear. WHO credentials are optional — without them the 5 ICD-11 live-lookup tools throw a clear configuration error and the other 26 work fine (including the authoritative ICD-10 → ICD-11 mapping, which uses bundled WHO data and needs no auth).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prefer a hosted endpoint?&lt;/strong&gt; The server runs on Cloudflare Workers at the edge — point any Streamable-HTTP MCP client at &lt;code&gt;https://medical-terminologies-mcp.sidneybissoli.workers.dev/mcp&lt;/code&gt; and skip the local install. Also listed on &lt;a href="https://smithery.ai/server/@SidneyBissoli/medical-terminologies-mcp" rel="noopener noreferrer"&gt;Smithery&lt;/a&gt;, &lt;a href="https://glama.ai/mcp/servers/SidneyBissoli/medical-terminologies-mcp" rel="noopener noreferrer"&gt;Glama&lt;/a&gt;, and &lt;a href="https://mcpservers.org/servers/sidneybissoli/medical-terminologies-mcp" rel="noopener noreferrer"&gt;mcpservers.org&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use case 1: sepsis triage — finding the right LOINC for procalcitonin
&lt;/h2&gt;

&lt;p&gt;A clinical scenario. An ED resident is documenting a sepsis workup and needs the LOINC code for serum procalcitonin to attach to the lab order in the EMR. They could open loinc.org, run a search, scroll through results, and copy the code. Or they could ask their LLM-powered scribe.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;You: What's the LOINC code for procalcitonin in serum?

Claude (calling loinc_search):
&lt;span class="gu"&gt;## LOINC Search Results for "procalcitonin"&lt;/span&gt;
Found 23 total results (showing 10):
&lt;span class="p"&gt;
1.&lt;/span&gt; &lt;span class="gs"&gt;**33959-8**&lt;/span&gt; - Procalcitonin [Mass/volume] in Serum or Plasma
   Component: Procalcitonin | Property: MCnc | Timing: Pt | System: Ser/Plas
   Class: CHEM | Status: ACTIVE
&lt;span class="p"&gt;2.&lt;/span&gt; &lt;span class="gs"&gt;**75241-0**&lt;/span&gt; - Procalcitonin [Mass/volume] in Body fluid
...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The LLM picks &lt;code&gt;33959-8&lt;/code&gt; and proposes it. The clinician confirms or asks for details:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;You: Give me the full LOINC details for 33959-8.

Claude (calling loinc_details):
&lt;span class="gh"&gt;# 33959-8 - Procalcitonin [Mass/volume] in Serum or Plasma&lt;/span&gt;

| Attribute | Value |
|-----------|-------|
| Component | Procalcitonin |
| Property  | MCnc |
| Timing    | Pt |
| System    | Ser/Plas |
| Scale Type| Qn |
| Method    | (none) |
| Class     | CHEM |
| Status    | ACTIVE |
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What this replaces in practice: a 30-second context switch from EMR to a browser tab, every time a clinician needs to pin down a specific code. Multiplied across the day, across a team, that's real time.&lt;/p&gt;

&lt;p&gt;The same workflow applies to any biomarker, vital sign, or observation: lactate (&lt;code&gt;2524-7&lt;/code&gt;), troponin I high-sensitivity (&lt;code&gt;67151-1&lt;/code&gt;), SpO₂ (&lt;code&gt;59408-5&lt;/code&gt;). The tool is &lt;code&gt;loinc_search&lt;/code&gt; for the discovery step, &lt;code&gt;loinc_details&lt;/code&gt; for the verification step. Both are deterministic API calls against NLM Clinical Tables — the LLM doesn't memorize codes, it looks them up.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use case 2: medication reconciliation — breaking down a combination product
&lt;/h2&gt;

&lt;p&gt;A scenario familiar to any inpatient pharmacist or hospitalist: a patient is admitted on Janumet (a brand combo of sitagliptin and metformin), and the team needs to reconcile this against the formulary, check for class-level interactions, and document the active ingredients separately.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;You: I need to break down Janumet for the admission med rec.
What are the active ingredients and their drug classes?

Claude (calling rxnorm_search, then rxnorm_ingredients, then atc_classify):

Step 1 — search for Janumet:
&lt;span class="gs"&gt;**860975**&lt;/span&gt; - Janumet (sitagliptin 50 MG / metformin hydrochloride 500 MG Oral Tablet)
   Type: SBD | Synonym: sitagliptin/metformin

Step 2 — get the ingredients:
| RxCUI | Name | Type |
|-------|------|------|
| 593411 | sitagliptin | Single Ingredient |
| 6809 | metformin | Single Ingredient |

Step 3 — get ATC classes for each ingredient:
For sitagliptin (593411): A10BH (Dipeptidyl-Peptidase IV Inhibitors)
For metformin (6809):     A10BA (Biguanides)
                          A10BD (Combinations of oral blood glucose lowering drugs)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Three tool calls, structured data, no hallucination risk. The LLM can compose this into a med rec note, flag that both ingredients sit in the same A10B (oral glucose-lowering) ATC bucket, and surface the ATC codes for any pharmacy system that uses ATC.&lt;/p&gt;

&lt;p&gt;What this enables that bare LLMs don't: the chain &lt;code&gt;brand → ingredients → ATC classes&lt;/code&gt; is a graph traversal across a real database. The model isn't recalling that sitagliptin is a DPP-4 inhibitor; it's &lt;em&gt;looking it up&lt;/em&gt; against the same source the FDA uses.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use case 3: evidence synthesis — building a precise PubMed search with MeSH
&lt;/h2&gt;

&lt;p&gt;A scenario for a researcher running a systematic review on the impact of primary health care interventions on avoidable hospitalizations. The quality of a literature search hinges on hitting the right MeSH descriptors and qualifiers — not on free-text keyword guesswork.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;You: I'm building a search strategy for a systematic review on
primary health care and avoidable hospitalizations. Help me find
the right MeSH descriptors and applicable qualifiers.

Claude (calling mesh_search):
| MeSH ID | Label |
|---------|-------|
| D011320 | Primary Health Care |
| D006297 | Health Services Accessibility |
| D004472 | Hospitalization |
| D006308 | Health Services Misuse |

You: Get me the tree position and allowed qualifiers for Primary Health Care.

Claude (calling mesh_tree, then mesh_qualifiers):
&lt;span class="gh"&gt;# Tree Numbers for D011320&lt;/span&gt;

&lt;span class="gu"&gt;### Health Care&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="sb"&gt;`N04.590.233.727`&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; &lt;span class="sb"&gt;`N02.421.143.827`&lt;/span&gt;

&lt;span class="gh"&gt;# Allowed Qualifiers for D011320&lt;/span&gt;

| Qualifier ID | Label |
|--------------|-------|
| Q000208 | ethics |
| Q000379 | methods |
| Q000523 | organization &amp;amp; administration |
| Q000592 | standards |
| Q000656 | trends |
| Q000706 | statistics &amp;amp; numerical data |
| Q000941 | utilization |

&lt;span class="ge"&gt;*Use qualifiers with descriptors like: "Primary Health Care/utilization"*&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That last detail — the seven allowed qualifiers, with &lt;code&gt;/utilization&lt;/code&gt; and &lt;code&gt;/statistics &amp;amp; numerical data&lt;/code&gt; highlighted — is exactly what a precise PubMed search needs. The model now has enough to draft &lt;code&gt;("Primary Health Care/utilization"[MeSH] OR "Primary Health Care/statistics &amp;amp; numerical data"[MeSH]) AND "Hospitalization/prevention and control"[MeSH]&lt;/code&gt; and explain why each leg matters.&lt;/p&gt;

&lt;p&gt;The use case generalizes: any research informatics workflow that needs controlled vocabulary mapping (PubMed, Cochrane, OVID) benefits from &lt;code&gt;mesh_search&lt;/code&gt; + &lt;code&gt;mesh_qualifiers&lt;/code&gt; + &lt;code&gt;mesh_tree&lt;/code&gt;. For systematic reviews specifically, the qualifier list is the part that's hardest to remember and easiest to get wrong.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's new in 1.4.0 (data-integrity release)
&lt;/h2&gt;

&lt;p&gt;Three additions that change the depth of what the server can answer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;map_icd10_to_icd11&lt;/code&gt; now returns an authoritative WHO mapping&lt;/strong&gt;, not a text-search heuristic. The 2025-01 release of the WHO transition tables is bundled (5.4 MB raw / 0.95 MB gzipped) covering 11,243 ICD-10 categories. 1,461 of those have multiple WHO-documented ICD-11 candidates — the tool surfaces the primary mapping plus all alternatives, with Foundation/Linearization URIs ready to navigate into ICD-11.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;validate_codes&lt;/code&gt;&lt;/strong&gt; is a new batch validator. Pass up to 50 &lt;code&gt;{ code, terminology }&lt;/code&gt; pairs and get back per-item &lt;code&gt;{ valid, active, title, replaced_by, source, error }&lt;/code&gt;. Designed for retrospective database analysis: flag codes that no longer exist, surface ICD-10 → ICD-11 replacements at scale, grade activity status where the source terminology exposes it (SNOMED's active flag, LOINC's STATUS field).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;terminology_versions&lt;/code&gt; + &lt;code&gt;terminology_diff&lt;/code&gt;&lt;/strong&gt; for pipeline maintainers. The first lists current version, release date, publisher, and update cadence across all 8 terminologies. The second is guidance-only for terminologies without bundled history — except for ICD-10, where the bundled transition tables let it surface a real cross-revision summary (1:1 mappings vs splits vs average alternatives when split).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Together with the per-tool &lt;code&gt;language&lt;/code&gt; parameter added to SNOMED + MeSH, that's four sub-tasks shipped as one data-integrity release. The earlier 1.3.0 added MCP Prompts (orchestration templates) and Resources (in-process reference content) — both visible in clients like LobeChat and Claude Desktop as one-click actions.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the server doesn't claim to do
&lt;/h2&gt;

&lt;p&gt;A few things worth being explicit about, because the README is honest about them and the LLM should be too:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;map_loinc_to_snomed&lt;/code&gt; returns guidance&lt;/strong&gt;, not a mapping. Direct LOINC ↔ SNOMED CT mappings live in UMLS Metathesaurus (license required) or the LOINC SNOMED CT Expression Association files (LOINC license required).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;map_snomed_to_icd10&lt;/code&gt;&lt;/strong&gt; also returns guidance only today. The authoritative source is SNOMED International's ICD-10 Complex Map refset (447562003), which needs a Snowstorm instance with the refset loaded — planned as Phase 13.7 once that's tractable.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SNOMED tools are off by default&lt;/strong&gt; because the historical public IHTSDO Snowstorm endpoint was retired (HTTP 410 Gone). Operators with an IHTSDO license and a self-hosted Snowstorm instance flip them on with &lt;code&gt;ENABLE_SNOMED_TOOLS=true SNOMED_BASE_URL=...&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;None of this is a substitute for clinical judgment.&lt;/strong&gt; It's a lookup layer for already-known codes, not a diagnostic tool.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Under the hood, briefly
&lt;/h2&gt;

&lt;p&gt;For developers curious about the engineering: TypeScript on Node 20+, bundled with esbuild, built around a token-bucket rate limiter (5 req/s for WHO, 10 req/s for NLM, 20 req/s for RxNorm) and exponential-backoff retry with ±25% jitter. WHO OAuth tokens are cached using the actual &lt;code&gt;expires_in&lt;/code&gt; from the API response, not a hardcoded TTL. Every default tool declares &lt;code&gt;outputSchema&lt;/code&gt; and returns &lt;code&gt;structuredContent&lt;/code&gt; alongside markdown — so MCP clients that consume structured data get typed objects, not parsed prose. The 313-test Vitest suite (unit + contract via nock + integration against live APIs gated by env flag) gates CI on PR. A daily integration cron catches upstream API drift — work that already caught three silent production regressions where the API had drifted and the client gracefully returned empty data.&lt;/p&gt;

&lt;p&gt;Two transports: stdio (default — Claude Desktop, IDE clients) and Streamable HTTP. The HTTP path runs on Cloudflare Workers at the edge by default — single web-standard fetch handler, ~0.95 MB gzipped including the bundled CID-10 (DataSUS V2008) and ICD-10 → ICD-11 (WHO 2025-01) datasets, well within Cloudflare's 3 MB compressed script limit. Same source tree; per-isolate cache + rate limiter (KV + Durable Object swap available when traffic crosses the threshold).&lt;/p&gt;

&lt;p&gt;It's MIT licensed. The medical terminology content has its own licenses, all linked in the README and surfaced as the &lt;code&gt;info://licenses&lt;/code&gt; Resource.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;npm:&lt;/strong&gt; &lt;a href="https://www.npmjs.com/package/medical-terminologies-mcp" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/medical-terminologies-mcp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/SidneyBissoli/medical-terminologies-mcp" rel="noopener noreferrer"&gt;https://github.com/SidneyBissoli/medical-terminologies-mcp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hosted endpoint:&lt;/strong&gt; &lt;a href="https://medical-terminologies-mcp.sidneybissoli.workers.dev/mcp" rel="noopener noreferrer"&gt;https://medical-terminologies-mcp.sidneybissoli.workers.dev/mcp&lt;/a&gt; (Streamable HTTP, Cloudflare Workers)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Smithery:&lt;/strong&gt; &lt;a href="https://smithery.ai/server/@SidneyBissoli/medical-terminologies-mcp" rel="noopener noreferrer"&gt;https://smithery.ai/server/@SidneyBissoli/medical-terminologies-mcp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Glama:&lt;/strong&gt; &lt;a href="https://glama.ai/mcp/servers/SidneyBissoli/medical-terminologies-mcp" rel="noopener noreferrer"&gt;https://glama.ai/mcp/servers/SidneyBissoli/medical-terminologies-mcp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;mcpservers.org:&lt;/strong&gt; &lt;a href="https://mcpservers.org/servers/sidneybissoli/medical-terminologies-mcp" rel="noopener noreferrer"&gt;https://mcpservers.org/servers/sidneybissoli/medical-terminologies-mcp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MCP Registry:&lt;/strong&gt; &lt;code&gt;io.github.SidneyBissoli/medical-terminologies-mcp&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;WHO API credentials (free): &lt;a href="https://icd.who.int/icdapi" rel="noopener noreferrer"&gt;https://icd.who.int/icdapi&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Issues, PRs, and use-case reports welcome — especially from clinical informatics teams, research informatics groups, and public-health data analysts using LLMs in real workflows. There's a real gap between "LLM as scribe" and "LLM with reliable terminology access," and closing it is what this server is for.&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>healthcare</category>
      <category>ai</category>
      <category>typescript</category>
    </item>
  </channel>
</rss>
