Skip to content

cyanheads/medical-codes-mcp-server

v0.5.1Apache-2.0

Decode, search, validate, and crosswalk US medical codes — ICD-10-CM, ICD-10-PCS, HCPCS Level II, RxNorm — over a bundled offline index via MCP. STDIO or Streamable HTTP.

Changelog

All notable changes to this project. Each entry links to its full per-version file in changelog/.

0.5.1 — 2026-10-29

ICD-10-PCS table rows list their codes and placeholder-X ICD-10-CM codes name a real parent; dotted values like 724.2 are no longer read as RXCUIs; medcode_get_code holds a batch to a 24,000-byte reply with a deferred continuation; name_to_rxcui and ndc_to_rxcui hits carry conceptType.

0.5.0 — 2026-10-28

Publishes the medical-codes-guide agent skill over MCP and in the npm package, Docker image, and .mcpb; adopts mcp-ts-core 0.13.18 with the Agent Plugins root plugin.json and mcp.json; picks up 0.13.17's fix for the HTTP per-request memory leak.

0.4.2 — 2026-10-25

Bundled index rebuilt for ICD-10 FY2027, HCPCS 2026 October, and fresh RxNorm/RxClass snapshots; auto-detect misses name every system a code fits, dotted ICD-10-CM codes resolve unambiguously, HCPCS billability follows the termination date, and content[] text is Markdown-escaped.

0.4.1 — 2026-10-08

Framework 0.13.6 → 0.13.14: numeric and boolean strings, a lone string for codes, and null optional fields are repaired before validation; tool errors carry a request ID; the server.json HTTP entry starts the HTTP transport; Docker builds install dependencies on the build platform.

0.4.0 — 2026-09-24

medcode_map_codes maps a drug to its RxClass drug classes and a class to its member drugs, over a class layer baked into the bundled index from six US-government RxClass sources.

0.3.0 — 2026-09-24 · ⚠️ Breaking

RxNorm results stop passing stored placeholders off as facts (billable and shortDescription are null, check_code answers valid), medcode_map_codes rejects fields a direction ignores, and not-found errors name the likely cause instead of a generic miss.

0.2.9 — 2026-09-19

Adopts @cyanheads/mcp-ts-core 0.13.6: argument rejections carry an InvalidParams envelope with a synthesized recovery hint, client bookkeeping keys and case-varied parameter spellings no longer trip strict inputs, and the server declares a stateless session with a teardown hook that closes its SQLite handle.

0.2.8 — 2026-08-25

Adopts @cyanheads/mcp-ts-core 0.12.3 and the MCP SDK v2 line: tool inputs are strict, so an argument key a tool does not declare is rejected by name instead of dropped, and every HTTP endpoint serves protocol revision 2026-07-28 alongside the 2025 era.

0.2.7 — 2026-08-09

medcode_get_code, medcode_check_code, and medcode_map_codes carry an optional alsoInSystems disclosure when a resolved code also exists in another bundled system; not-found reasons now name membership, not shape, as the arbiter; a test-fixture race across parallel Vitest workers is fixed.

0.2.6 — 2026-08-09

medcode_map_codes distinguishes IN/PIN/MIN ingredient concepts, names ndc_to_rxcui targets, no longer misreports a past-the-end cursor or a resolvable RXCUI with no edges as an unmapped source; medcode_get_code decodes materialized header rows; medcode_search_codes matches chapter filters case-insensitively.

0.2.5 — 2026-08-09

medcode_get_code's hierarchy formatter renders empty/complete children explicitly; medcode_search_codes trims and omits blank chapter filters; medcode_browse_hierarchy rejects ICD-10-PCS nodes outside the axis alphabet or that prefix no bundled code; a NUL in a search query is normalized to a token separator instead of reaching FTS5 raw.

0.2.4 — 2026-08-09

medcode_map_codes now names ingredient/brand crosswalk targets and paginates rxcui_to_ndc; medcode_get_code rejects undersized hyphenated NDC segments instead of padding them into an unrelated product; mcp-ts-core bumped to ^0.11.1.

0.2.3 — 2026-07-13

Fixes medcode_browse_hierarchy reporting unknown_node for a complete, existing ICD-10-PCS code; whitespace-only required inputs reaching the service layer (arbitrary results from an unscoped RxNorm name lookup); and medcode_search_codes missing single-token compound matches like mono-/polyneuropathy.

0.2.2 — 2026-07-13

Cursor pagination (with nextCursor continuation) for medcode_search_codes, medcode_browse_hierarchy, and medcode_map_codes's children/name_to_rxcui directions, a childrenTruncated flag on medcode_get_code, and a fix for browse_hierarchy's capped children and inaccurate truncation metadata.

0.2.1 — 2026-07-13

RxNorm wording reconciled to the active normalized set, a dead no_match error contract removed from medcode_search_codes, and mcp-ts-core bumped to ^0.10.14 with bunfig supply-chain hardening (Socket scanner, minimumReleaseAge) and a Docker build fix.

0.2.0 — 2026-06-21

RxNorm is now bundled and live: the five medcode_map_codes drug directions resolve against the offline index, and medcode_get_code decodes an NDC directly to its RxNorm product. Build-time acquisition moved from the UMLS-gated RRF files to the keyless RxNav REST API.

0.1.5 — 2026-06-20

mcp-ts-core ^0.10.6 → ^0.10.9 maintenance: check-dependency-specifiers devcheck step + pluginManifests packaging check, ctx.content media collector and Canvas SQL gate classification land upstream, six scripts and the framework skill set re-synced. No server behavior change.

0.1.4 — 2026-06-19

map_codes returns ok-empty with a notice for a resolvable code with no edge (no_mapping reserved for an unresolvable source); check_code names RxNorm as unbundled for out-of-scope numeric codes; PCS browse and depth-1 hierarchy walking documented accurately.

0.1.3 — 2026-06-15

Fix unreachable HCPCS hierarchy by seeding letter-range bucket rows, and make the map_codes no_mapping example match the requested direction.

0.1.2 — 2026-06-15

Add public hosted endpoint at medical-codes.caseyjhand.com/mcp and Install in Claude Desktop badge.

0.1.1 — 2026-06-14

Scope the README title to the published npm name, @cyanheads/medical-codes-mcp-server.

0.1.0 — 2026-06-13

Offline US medical code lookup and crosswalk over a bundled SQLite+FTS5 index: ICD-10-CM, ICD-10-PCS, and HCPCS Level II across six medcode_* tools (RxNorm in a later release).