Mcp Terminology

io.github.pcmedsingePublished by GitHub account pcmedsingev1.0.0Updated Oct 24, 2026

LOINC/SNOMED CT/RxNorm/ICD-10 lookup, search, translation and ValueSet expansion via FHIR.

VerifiedSTDIODesktop onlyKnowledge & MemoryData & Analytics

Overview

AI-generated overview

An MCP server that lets an assistant look up, search, translate and expand clinical terminology codes (LOINC, SNOMED CT, RxNorm, ICD-10 and others) through a FH

What you can do
Look up a single code in a clinical terminology system and get its display name, definition and designations, with aliases for LOINC, SNOMED CT, RxNorm, ICD-10-CM, ICD-10, CVX, CPT, NDC and UCUM. Search codes by free text within LOINC, SNOMED CT or RxNorm. Translate a code from one system to another, for example SNOMED to ICD-10-CM. Expand a canonical FHIR ValueSet by its URL.
When to use it
Useful when an assistant has to interpret, normalize or cross-map medical codes in health-data work, such as resolving a lab code, finding a drug code by name, or converting a diagnosis code between systems. Best suited to developers and analysts working with FHIR or clinical datasets rather than general-purpose tasks.
Requirements
Runs locally as a Python package (installed with uv or pip) over stdio. Needs network access to a FHIR R4 terminology server; the base URL is set with the TERMINOLOGY_BASE_URL environment variable and defaults to the free public tx.fhir.org server. Optional LangFuse tracing is enabled with LANGFUSE_PUBLIC_KEY, LANGFUSE_SECRET_KEY and LANGFUSE_HOST.
Before you install
Every query is sent over HTTPS to the configured terminology server, which by default is a third-party public service, so do not send patient-identifiable data. If LangFuse keys are set, tool inputs and outputs are traced to that service. Results are capped at 100 per query, and the public server may be rate-limited or unavailable.

Installation

In SourceWeft

  1. Open Mcp Terminology in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

mcp-terminology

Unified LOINC / SNOMED CT / RxNorm / ICD-10 MCP server — v1.0.0 Part of the fhir-mcp-suite monorepo.

[License] [Python]

Query four major clinical terminology systems through a single MCP server backed by the free public FHIR R4 terminology server (tx.fhir.org/r4).


Tools

ToolDescriptionBackend operation
lookup_codeLook up a single code — returns display, definition, designationsCodeSystem/$lookup
search_codesFree-text search within LOINC, SNOMED CT, or RxNormValueSet/$expand?filter=
translate_codeTranslate a code across systems (SNOMED ↔ ICD-10-CM, etc.)ConceptMap/$translate
expand_valuesetExpand any canonical FHIR ValueSet by URLValueSet/$expand

Supported systems for lookup_code

AliasURI
loinchttp://loinc.org
snomed / snomed-cthttp://snomed.info/sct
rxnormhttp://www.nlm.nih.gov/research/umls/rxnorm
icd-10-cmhttp://hl7.org/fhir/sid/icd-10-cm
icd-10http://hl7.org/fhir/sid/icd-10
cvxhttp://hl7.org/fhir/sid/cvx
cpthttp://www.ama-assn.org/go/cpt
ndchttp://hl7.org/fhir/sid/ndc
ucumhttp://unitsofmeasure.org

Quick start

bash
# Install into the monorepo workspaceuv sync --all-packages
# Run (stdio mode — for Claude Desktop)uv run mcp-terminology
# Run with SSE transport (port 8001)MCP_TRANSPORT=sse uv run mcp-terminology

Claude Desktop configuration

json
{  "mcpServers": {    "terminology": {      "command": "uv",      "args": [        "--directory",        "/path/to/fhir-mcp-suite",        "run",        "mcp-terminology"      ],      "env": {        "TERMINOLOGY_BASE_URL": "https://tx.fhir.org/r4",        "LOG_LEVEL": "WARNING"      }    }  }}

Example tool calls

Look up a LOINC code

json
{ "system": "loinc", "code": "8302-2" }
json
{  "system_url": "http://loinc.org",  "system_name": "LOINC",  "code": "8302-2",  "display": "Body height",  "definition": "...",  "designations": [...],  "version": "2.78"}

Translate SNOMED → ICD-10-CM

json
{  "code": "73211009",  "source_system": "snomed",  "target_system": "icd-10-cm"}

Expand a ValueSet

json
{ "url": "http://hl7.org/fhir/ValueSet/administrative-gender" }

Architecture

Claude Desktop / LangGraph agent         │  MCP stdio    mcp-terminology (this package)         │  HTTPS    tx.fhir.org/r4  (free public FHIR R4 terminology server)         └── CodeSystem/$lookup         └── ValueSet/$expand         └── ConceptMap/$translate

Observability: every tool call is traced in LangFuse (input, output, latency, response bytes). Set LANGFUSE_PUBLIC_KEY / LANGFUSE_SECRET_KEY / LANGFUSE_HOST to enable.


Eval results

mcp-terminology eval — 21 golden cases  Error/security cases: 6/6   100%  (network-independent)  Integration cases:    run with `--tags lookup search translate expand`  CI threshold:         85% pass rate

Run locally:

bash
# Error cases only (no network needed):uv run python evals/mcp-terminology/run_eval.py --tags error
# Full suite (requires tx.fhir.org):uv run python evals/mcp-terminology/run_eval.py
# CI gate:uv run python evals/mcp-terminology/run_eval.py --ci --threshold 0.85

Security

  • Input sanitization on all parameters (regex allowlist on codes, http/https-only URLs, control-char stripping on filters)
  • Hard cap of 100 results per query
  • No PHI — uses only synthetic/public code lookups
  • See validation.py for the full allowlist

License

Apache-2.0 — see LICENSE.

Source: packages/mcp-terminology/README.md at commit 07fc507

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v1.0.0LatestSep 16, 2026

Score

40% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.