mcpbeat Sign in

Medical Codes MCP Server

answering

Medical Codes MCP Server is answering right now. Last checked 4 min ago. 200 installs a week from npm. It exposes 6 tools. Last commit 25 Aug 2026.

Offline US medical code lookup and crosswalk — ICD-10-CM/PCS, HCPCS Level II, RxNorm. Keyless.

Installs per day peak 192 · avg 34 · +242% w/w
a month agotoday
Uptime history 48 days of history · worst day 0%
48 days agonow
100.0%
Uptime 24h
92 of 92 checks
6
Tools
read from the server
351 ms
Response time
average over 24h
200
Installs / week
npm and PyPI

What changed 13

Every tool that appeared, vanished or quietly changed what it asks for. Recorded since 9 August 2026. No other catalogue keeps this.

25 Aug 6 tools changed the parameters they ask for medcode_browse_hierarchy, medcode_check_code, medcode_get_code and 3 more
25 Aug a tool changed version
9 Aug 3 tool descriptions were rewritten medcode_check_code, medcode_get_code, medcode_map_codes
9 Aug 3 tools changed the parameters they ask for medcode_get_code, medcode_map_codes, medcode_search_codes

Nothing serious here today

Today is the operative word: we check Medical Codes MCP Server every 15 minutes and re-read its code on every release. Watch it and you find out the day that stops being true.

Three servers free · no card

Connect this server

Endpoint below is the one we actually reach during checks — not the one copied from a README. Last verified 4 min ago.

run in your terminal
claude mcp add medical-codes-mcp-server --transport http https://medical-codes.caseyjhand.com/mcp
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "medical-codes-mcp-server": {
      "url": "https://medical-codes.caseyjhand.com/mcp"
    }
  }
}
~/.codex/config.toml
[mcp_servers.medical-codes-mcp-server]
url = "https://medical-codes.caseyjhand.com/mcp"
.cursor/mcp.json
{
  "mcpServers": {
    "medical-codes-mcp-server": {
      "url": "https://medical-codes.caseyjhand.com/mcp"
    }
  }
}
.vscode/mcp.json
{
  "mcpServers": {
    "medical-codes-mcp-server": {
      "url": "https://medical-codes.caseyjhand.com/mcp"
    }
  }
}

This one needs environment variables set before it will start: MCP_HTTP_HOST (The hostname for the HTTP server.), MCP_HTTP_PORT (The port to run the HTTP server on.), MCP_HTTP_ENDPOINT_PATH (The endpoint path for the MCP server.), MCP_AUTH_MODE (Authentication mode to use: 'none', 'jwt', or 'oauth'.), MCP_LOG_LEVEL (Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').), MEDCODE_DB_PATH (Absolute path override for the bundled SQLite index. Defaults to the packaged data/medical-codes.db.), MEDCODE_MAX_RESULTS (Cap on rows returned by search and browse tools (default 50, hard ceiling 200).). The author declared them in the registry entry; get the values from the project itself.

Available tools 6

Read directly from the server with tools/list, grouped by what they act on. If a tool disappears, we record the date.

medcode
medcode_browse_hierarchy
Walk a US medical code system's hierarchy for discovery without a search term. With no `node`, returns the top-level entries (ICD-10-CM categories, HCPCS range buckets, or ICD-10-PCS first-axis values). With a `node`, returns its immediate children. ICD-10-CM and HCPCS use a prefix hierarchy (a shorter code is the parent of a longer one); ICD-10-PCS is axis-based — each of its 7 characters is an independent axis (section, body system, root operation, body part, approach, device, qualifier), but only the top-level Section axis is browsable (omit `node`): positions 2–7 are context-dependent on the preceding axis path and are not enumerable from a flat partial code. Lets an agent orient in an unfamiliar system or enumerate a category's specific codes. A large child set paginates: when the response carries a `nextCursor`, pass it back as `cursor` to fetch the next page.
medcode_check_code
Validate whether a US medical code exists, is current, and is billable in the active bundled release. Returns a discriminated status — valid_billable, valid_not_billable, valid_header, or terminated — with a `whyNot` explaining non-billable and terminated cases (e.g. "valid ICD-10-CM category but not billable — submit a more specific child code"). This is the detail a coder needs before submitting a claim. Auto-detects the system from the code's shape; pass an explicit `system` to disambiguate. A non-billable or terminated code is a successful result with a whyNot, not an error — only a code that exists in no bundled system raises unknown_code. A code string that also exists in another bundled system carries `alsoInSystems` naming it, since the verdict applies only to the system that answered.
medcode_get_code
Decode one or more US medical codes to their official descriptions across ICD-10-CM (diagnoses), ICD-10-PCS (inpatient procedures), HCPCS Level II (supplies/drugs/services), and RxNorm (drugs, by RXCUI). Also decodes a National Drug Code (NDC) directly to its RxNorm product offline, tagged `source: "NDC"` — hyphenated in an FDA segment configuration (4-4-2, 5-3-2, 5-4-1, or the 11-digit 5-4-2) or as bare 10/11 digits; any other segment widths are malformed and stay unresolved. Auto-detects the system from each code's shape; pass an explicit `system` only when a value is genuinely ambiguous. Accepts 1–50 codes and returns partial success: resolved codes in `found`, unresolved in `notFound` with a per-code reason, so one bad code never fails the batch. Set `includeHierarchy` to attach each code's parent and immediate children (with a `childrenTruncated` flag when a code has more children than the cap returns — walk the full set via medcode_browse_hierarchy or medcode_map_codes). The resolved `system` is echoed on every result for chaining into medcode_map_codes or a billability check; a code string that also exists in another bundled system carries `alsoInSystems` naming it, so a single answer to a colliding code is never mistaken for the only one.
medcode_list_systems
List the bundled US medical code systems with their release identifiers, effective dates, and code counts. Confirms which ICD-10-CM fiscal year, ICD-10-PCS fiscal year, HCPCS Level II release, and RxNorm normalized set are active before acting on any decode, search, or crosswalk result. The corpus is offline and built at package-build time — this call reports exactly which release is baked into the running server. ICD-10-CM/PCS are the US clinical modifications, not the ICD-10/ICD-11 base.
medcode_map_codes
Crosswalk a US medical code or drug across systems and within a hierarchy. Hierarchy directions: `parents` and `children` walk a code's prefix hierarchy one level per call — immediate parent/children only (depth-1); call iteratively for the full ancestor or descendant path (ICD-10-CM/HCPCS; ICD-10-PCS codes have no prefix parent). A resolvable source with no edge in the requested direction is a successful empty result with a notice, not an error. A source code string that also exists in another bundled system carries `alsoInSystems` naming it, since only the resolved system's hierarchy was walked. Drug directions (RxNorm): `name_to_rxcui` (drug name → RXCUI), `ndc_to_rxcui` and `rxcui_to_ndc` (NDC ↔ RXCUI; NDCs accepted hyphenated in an FDA segment configuration — 4-4-2, 5-3-2, 5-4-1, or the 11-digit 5-4-2 — or as bare 10/11 digits; `ndc_to_rxcui` names the product it decoded to), `rxcui_to_ingredients` and `rxcui_to_brands` (RXCUI → ingredient/brand RXCUIs, each with the target's RxNorm name and its `conceptType` — read that before counting a combination product's ingredients). Every result carries `source` provenance (which system or edge answered) so a chained call (e.g. into openfda with a resolved NDC) uses the right identifier. The `children`, `name_to_rxcui`, and `rxcui_to_ndc` directions can return large sets and paginate: a `nextCursor` in the response is passed back as `cursor` (with an optional `limit` page size) to walk the full set; the point directions ignore both.
medcode_search_codes
Find US medical codes whose official descriptions match a described concept, via full-text search over the bundled index. Every search term must appear — matched first as a token prefix, then as a substring so inflected and compound forms are also found (a "neuropathy" search surfaces "mononeuropathy"/"polyneuropathy" siblings too, not only a standalone "neuropathy" token). Filter by `system` (ICD10CM/ICD10PCS/HCPCS/RXNORM), `billableOnly` to exclude headers/categories, and `chapter`. Use when you have a clinical description and need the code — the reverse of medcode_get_code. Results echo the resolved system per row for chaining, rank exact prefix matches ahead of substring-only matches with a deterministic tie-break, and disclose truncation with a `nextCursor`: pass it back as `cursor` to page through the full ranked set.

Endpoints

URLTransportStateLatencyChecked
https://medical-codes.caseyjhand.com/mcp streamable-http answering 445 ms 4 min ago

Alternatives to Medical Codes MCP Server

same job, measured the same way
Postal Lookup MCP
by lulu-the-narwhal

Free, keyless postal/ZIP code lookup: place name(s), state/region, and coordinates.

1 tools answering
Medical Terminologies MCP
by sidneybissoli

Diagnoses, drugs & lab codes: ICD-11, SNOMED, LOINC, RxNorm, MeSH, ATC, CID-10. 33 tools, MIT.

648 installs/wk 33 tools answering
Icdwise
by qinisolabs

Verified ICD-10-CM code lookup & validation for AI agents — official descriptions, not guesses.

62 installs/wk local only
Icd MCP
by stayce

WHO ICD-10/ICD-11 diagnosis codes. Lookup, search, chapters via official WHO API.

1 tools answering
AI Context
by vibgrate

Local-first MCP server: version-correct library docs, code map, and offline drift for your repo.

2 213 installs/wk local only
Icf MCP
by stayce

WHO ICF codes: lookup, search, hierarchy, qualifiers, and 11 scored clinical assessment instruments.

1 tools answering
Longmem
by marerem

Persistent cross-project memory for Cursor and Claude Code using local semantic search.

49 installs/wk local only
Code Memory
by kapillamba4

Local semantic code search with Git history. Works offline, no API key needed.

264 installs/wk local only

Medical Codes MCP Server — questions

Answers built from our own checks of this server.

What can Medical Codes MCP Server do?
It exposes 6 tools, read directly from the server on our last check. Among them: medcode_browse_hierarchy, medcode_check_code, medcode_get_code, medcode_list_systems, medcode_map_codes, medcode_search_codes. The full list with descriptions is on this page — we take it from the server itself via tools/list, not from a README. How MCP servers expose tools in the first place →
Is Medical Codes MCP Server working right now?
We send a real MCP handshake every 15 minutes. Over the last 24 hours 92 of 92 checks got a reply (100.0%), average response time 351 ms. The bar chart above shows every period we have measured.
How do I connect Medical Codes MCP Server?
Copy the ready config from this page — we generate it for Claude Code, Claude Desktop, Codex, Cursor and VS Code, each with the file path that client actually reads. It is a remote server, so there is nothing to install — the client connects to the address.
Does Medical Codes MCP Server need an API key?
No. Medical Codes MCP Server completed a full MCP handshake with us as an anonymous client and listed its tools without asking for anything. All 6 of them are readable on this page. This is what we observed, not what the docs claim.
How fast is Medical Codes MCP Server?
It answers our handshake in 351 ms on average, which is faster than 44% of all working MCP servers we measure. The comparison comes from our own checks across the whole registry, every 15 minutes.
How many people use Medical Codes MCP Server?
The npm package @cyanheads/medical-codes-mcp-server was installed 200 times in the last week. Week over week that is +242%. We show installs rather than GitHub stars on purpose: a star is a bookmark, an install is someone actually running it.
Is Medical Codes MCP Server open source?
Yes — it is published under the Apache-2.0 licence, written in TypeScript, 2 stars on GitHub and 7 open issues. The source link is on this page, so you can read exactly what it does with your data before you connect it.