Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.github.cyanheads/npi-providers-mcp-server

REMOTE · NPI-PROVIDERS.CASEYJHAND.COM · 2 COMPONENTS

Search NPPES providers and resolve NUCC specialty codes via MCP over STDIO or Streamable HTTP.

0 this week 86 Trust /100

Last scanned (8 hours ago)

Scores higher than 93% of remote servers

Reachable. Last reached 5 Nov 2026.

Category Health and Science

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security83
Transport & Reachability100
Schema Quality & AI Usability73
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 1775 tokens (~443/item across 4 items; 3 tools + 1 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management83
  • Stability check failed: schema churn in the 30 days we've observed: 0 tool removals, 1 breaking changes, 0 auth/transport breaks, 0 additions. See how to fix → Fail
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 3 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 5 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 26 Oct 26 0
    • Stability: pass → fail ▼ security
    • Tool “npi_get_provider” rewrote its description, which is the text the model reads security
    • Tool “npi_lookup_taxonomy” rewrote its description, which is the text the model reads security
    • Schema quality: 1426 → 1775 ▼ functional
    • “npi_lookup_taxonomy” added a required parameter “mode”, so existing callers break ▼ functional
    • Schema quality: unverified → 100 ▲ functional
    • New resource “npi-providers-guide” functional
    • Server version: 0.4.1 → 0.5.0 functional
    • “npi_lookup_taxonomy” added an optional parameter “limit” cosmetic
    • “npi_search_providers” added an optional parameter “use_first_name_alias” cosmetic
    • “npi_lookup_taxonomy” added an optional parameter “skip” cosmetic
    • “npi_lookup_taxonomy” added an optional parameter “section” cosmetic
    • “npi_lookup_taxonomy” added an optional parameter “query” cosmetic
    • “npi_lookup_taxonomy” added an optional parameter “code” cosmetic
    • “npi_lookup_taxonomy” added an optional parameter “grouping” cosmetic
    • “npi_search_providers” reworded the description of “limit” cosmetic
    • “npi_get_provider” reworded the description of “npis” cosmetic
  • 10 Oct 26 0
    • Server version: 0.4.0 → 0.4.1 functional
  • 28 Sept 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 25 Sept 26 0
    • The server rewrote its instructions, which are the text every model session reads security
    • Tool “npi_search_providers” rewrote its description, which is the text the model reads security
    • Schema quality: 413 → 475 ▼ functional
    • Server version: 0.3.0 → 0.4.0 functional
    • “npi_search_providers” reworded the description of “postal_code” cosmetic
    • “npi_search_providers” reworded the description of “skip” cosmetic
    • “npi_search_providers” reworded the description of “provider_type” cosmetic
    • “npi_search_providers” reworded the description of “organization_name” cosmetic
    • “npi_search_providers” reworded the description of “city” cosmetic
  • 24 Sept 26 0
    • Stability: fail → pass ▲ security
    • The server rewrote its instructions, which are the text every model session reads security
    • Tool “npi_search_providers” rewrote its description, which is the text the model reads security
    • Tool “npi_get_provider” rewrote its description, which is the text the model reads security
    • Schema quality: 358 → 395 ▼ functional
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
    • Server version: 0.1.9 → 0.2.0 functional
    • “npi_get_provider” reworded the description of “npis” cosmetic
  • 20 Sept 26 0
    • Server version: 0.1.8 → 0.1.9 functional
  • 26 Aug 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 25 Aug 26 0
    • Stability: 0.97 → fail ▼ security
    • Stability: 0.97 → pass security
    • Tool “npi_search_providers” rewrote its description, which is the text the model reads security
    • Tool “npi_lookup_taxonomy” rewrote its description, which is the text the model reads security
    • “npi_lookup_taxonomy” dropped the required parameter “mode” ▼ functional
    • Schema quality: 441 → 358 ▲ functional
    • MCP protocol: Implements a current MCP spec version (2026-07-28). functional
    • MCP protocol version: 2025-11-25 → 2026-07-28 functional
    • Server version: 0.1.7 → 0.1.8 functional
    • “npi_search_providers” reworded the description of “name_search” cosmetic
    • “npi_search_providers” reworded the description of “state” cosmetic
    • “npi_lookup_taxonomy” dropped the optional parameter “code” cosmetic
    • “npi_lookup_taxonomy” dropped the optional parameter “grouping” cosmetic
    • “npi_lookup_taxonomy” dropped the optional parameter “limit” cosmetic
    • “npi_lookup_taxonomy” dropped the optional parameter “query” cosmetic
    • “npi_lookup_taxonomy” dropped the optional parameter “section” cosmetic
    • “npi_lookup_taxonomy” dropped the optional parameter “skip” cosmetic
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Probed https://npi-providers.caseyjhand.com/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=caseyjhand.com CN=WE1,O=Google Trust Services,C=US 2 Nov 2026 31 Jan 2027 ECDSA 256 ECDSA-SHA256 995a30681ab772540e934241ca1d576c
SANs: caseyjhand.com, *.caseyjhand.com
CN=WE1,O=Google Trust Services,C=US (CA) CN=GTS Root R4,O=Google Trust Services LLC,C=US 13 Dec 2023 20 Feb 2029 ECDSA 256 ECDSA-SHA384 7ff31977972c224a76155d13b6d685e3
CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE 15 Nov 2023 28 Jan 2028 ECDSA 384 SHA256-RSA 7fe530bf331343bedd821610493d8a1b

Background: What to check on a remote MCP endpoint →

DNSSEC secure

Validation of npi-providers.caseyjhand.com. — Secure

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
com. present 19718 13 Verified
caseyjhand.com. present 2371 13 Verified
npi-providers.caseyjhand.com. Verified address RRset verified with the apex keys
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200
Header Value
strict-transport-security max-age=63072000; includeSubDomains; preload
x-content-type-options nosniff

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://npi-providers.caseyjhand.com/mcp Verified 200
http (plaintext) http://npi-providers.caseyjhand.com/mcp HTTPS enforced 301 https://npi-providers.caseyjhand.com/mcp
MCP tools · 3 exposed · ~1,559 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
npi_get_provider ~328

Fetch NPPES records from up to 100 raw NPI entries per call. Deduplicate in input order, validate check digits, and look up the first 10 distinct valid NPIs; remaining valid NPIs are listed in unprocessed and are never looked up. Decodes an NPI from a claim, prescription, or another health data source into the provider's professional-practice profile: every taxonomy with its primary flag, license number and state; practice addresses with phone and fax (only LOCATION rows are kept for individual providers, so their mailing address is withheld; organizations also carry their mailing address); credential, sex, sole-proprietor flag; enumeration and last-updated dates; active/deactivated status; secondary identifiers (Medicaid, etc.); and FHIR/Direct endpoints. Each NPI must be 10 digits with a valid check digit (its last digit); every NPI failing the check digit lands in invalid and is never looked up. Reports partial success: valid NPIs with no registry record (deactivated or never enumerated) land in notFound, while NPIs whose lookup hit an upstream error (registry unavailable, timeout) land in errored — kept distinct from confirmed misses — rather than failing the whole call.

NameTypeReqDescription
npis–yesA single 10-digit NPI, or an array of up to 100. Entries are deduplicated in order, then check digits are validated; the first 10 distinct valid NPIs are looked up and any remaining valid NPIs are li…
NameTypeReqDescription
errorobject–Present when the call failed. Absent on success.
erroredarray–NPIs whose lookups failed with an upstream/transport error (service unavailable, timeout) — distinct from a confirmed miss in notFound. These are unresolved, not absent; retry them.
foundarray–Decoded records for NPIs that resolved.
invalidarray–NPIs that failed the NPI check digit — not valid NPIs, usually a typo. They were never looked up, so they are neither confirmed misses nor upstream failures.
notFoundarray–NPIs with a valid check digit that returned no record (deactivated or never enumerated). A confirmed absence, not a failure.
noticestring–Guidance when some NPIs failed the check digit, returned no record, or hit an upstream error.
totalCountnumber–Number of provider records that resolved from the requested NPIs.
unprocessedarray–Distinct valid NPIs beyond the first 10, in input order; not looked up. Present only when the lookup limit is exceeded.

No examples provided.

npi_lookup_taxonomy ~390

Resolve and browse the NUCC Healthcare Provider Taxonomy — the specialty code set NPPES uses — fully offline (bundled). Mode `resolve` turns a plain-language specialty (e.g. "cardiologist", "heart doctor") into matching active taxonomy entries, excluding codes NUCC marks inactive; mode `get` returns the full entry for an exact code, including NUCC's Notes; mode `browse` walks the hierarchy (grouping → classification → specialization), optionally filtered by grouping and NUCC section. Individual includes Group codes; section does not determine NPI entity type, which comes from NPPES enumeration_type. Every entry carries its status, and an inactive code names its replacement when NUCC gives one; `get` and `browse` still return inactive codes. A resolved entry's specialization, or its classification when specialization is absent, maps directly to npi_search_providers.taxonomy_description.

NameTypeReqDescription
codestring–For get only: exact NUCC taxonomy code, e.g. "207RC0000X".
groupingstring–Filter to a top-level grouping by case-insensitive substring, e.g. "physicians".
limitinteger–Maximum entries for resolve/browse; defaults to 20. Positive integers above 50 are clamped to 50 unless NPI_CLAMP_LIMITS is disabled.
modestringyesresolve: plain-language specialty to codes; get: exact code; browse: hierarchy.
querystring–The plain-language specialty term to resolve, e.g. "pediatric cardiologist".
sectionstring–For browse only: NUCC section, independent of NPI entity type. Individual includes Group codes.
skipinteger–Entries to skip before the page (0–1000). Keep the same query and limit, then raise skip by limit each call.
NameTypeReqDescription
capnumber–The limit that was applied.
errorobject–Present when the call failed. Absent on success.
matchesarray–Matching taxonomy entries. For mode "get" this is the single requested entry; for "resolve"/"browse" it is the ranked/sorted matches up to limit.
noticestring–Guidance — how to page a truncated result with skip, or how to broaden when nothing matched.
shownnumber–Number of entries returned.
truncatedboolean–True when the list was capped at `limit` (more entries may match).

No examples provided.

npi_search_providers ~841

Search the NPPES NPI registry for individual practitioners and healthcare organizations by name, organization name, location, provider type, and specialty. Plain-language specialty terms (e.g. "cardiologist", "pediatric cardiologist") resolve through the bundled NUCC taxonomy; the top match's specialization or classification becomes taxonomy_description, and all resolved candidates are returned in metadata. Location belongs in the dedicated city/state/postal_code inputs, not inside specialty. Each provider row includes the NPI, name, primary specialty, city/state/ZIP, type, and active/deactivated status; the NPI is the input for npi_get_provider when the full record is needed. At least one search criterion is required, and the registry rejects state-only searches. When city/state/postal_code are given, only practice addresses are searched, never mailing addresses: a provider is returned only when its primary practice location or one of its other practice locations matches all of them. A provider kept on another practice location names it in matchedLocation. Name searches also match former and other names, sorted by current name; such a row names the matching name in matchedOtherName. The registry never reports a true match total, and one search reaches only its first 1200 matches: a full page names the next in nextPage, and the terminal window (skip 1000, limit 200) returns continuationPostalCodes, postal_code prefixes that continue the search.

NameTypeReqDescription
citystring–Practice-location city, case-insensitive. A trailing "*" after at least 2 characters matches every city starting with them (e.g. "SAN F*").
first_namestring–Individual first name. Trailing wildcard "*" allowed with at least 2 leading characters.
last_namestring–Individual last name. Trailing wildcard "*" allowed with at least 2 leading characters.
limitinteger–Maximum providers to return (default 10). Values above 200 are clamped to the registry cap of 200 with a notice.
name_searchstring–One person's name. The first token becomes first_name and the last token becomes last_name; use first_name/last_name when middle names or multi-part surnames matter.
organization_namestring–Organization name (implies provider_type organization; cannot be combined with first_name, last_name, or name_search). Trailing wildcard "*" allowed with at least 2 leading characters.
postal_codestring–Practice-location ZIP code: 5 digits (also matching the ZIP+4 codes that extend it), 9 digits, or a 2–9 digit prefix with one trailing "*" (e.g. "98*", "981*"). A ZIP+4 prefix (6+ digits) never match…
provider_typestring–Restrict to individuals (NPI-1) or organizations (NPI-2). Omit to search both; when set, it must match the name fields ("individual" for first_name/last_name/name_search, "organization" for organizat…
skipinteger–Results to skip for pagination (0–1000). A full page names the next in nextPage.
specialtystring–Plain-language specialty (e.g. "pediatric cardiologist"), resolved through the bundled NUCC taxonomy to exact descriptions before searching. Codes NUCC marks inactive are never resolved. The matched…
state––2-letter state code (e.g. "WA"). The registry rejects state-only searches, so another criterion is required. A blank value is treated as omitted.
taxonomy_descriptionstring–Exact NUCC taxonomy description for direct passthrough — use when the taxonomy description is already known. Mutually exclusive with specialty.
use_first_name_aliasboolean–Include first-name variants (default true upstream). False requests exact first-name matching. Applies to the resolved first_name, including name_search, only without a wildcard; other-name matching…
NameTypeReqDescription
appliedFirstNameAliasboolean–Effective first-name alias expansion for a resolved non-wildcard first name, including the upstream default true. Absent when no first name exists or it contains a wildcard.
appliedTaxonomyDescriptionstring–The exact NUCC specialization or classification used as the specialty filter.
capnumber–The limit that was applied.
continuationPostalCodesarray–Present only at the terminal window (a full page at skip 1000, limit 200): postal_code prefixes that continue the same search, each re-run from skip 0 with the same arguments — the notice gives the f…
errorobject–Present when the call failed. Absent on success.
nextPageobject–The next page: re-run the same arguments with this skip and limit. Present after a full page while rows remain reachable. When skip + limit passes 1000 it is skip 1000, limit 200, whose leading rows…
noticestring–Guidance — the page-size-not-total caveat, the next page or terminal-window continuation procedure, other-name and location-filter counts, or how to broaden an empty result.
providersarray–Matching provider rows (up to limit).
resolvedTaxonomiesarray–Taxonomy candidates ranked for the specialty term. The first candidate supplies appliedTaxonomyDescription; a different candidate can be selected through taxonomy_description.
shownnumber–Number of providers returned.
truncatedboolean–True when the NPPES page contained at least cap providers before location constraints were applied; more may match even when shown is below cap.

No examples provided.

Install

How do I install the io.github.cyanheads/npi-providers-mcp-server server?

io.github.cyanheads/npi-providers-mcp-server is a hosted endpoint at https://npi-providers.caseyjhand.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · npi-providers.caseyjhand.com

# add to Claude Code
claude mcp add --transport http cyanheads-npi-providers-mcp-server 'https://npi-providers.caseyjhand.com/mcp'
Common questions

What is the io.github.cyanheads/npi-providers-mcp-server server?

io.github.cyanheads/npi-providers-mcp-server is listed in the public MCP registry as io.github.cyanheads/npi-providers-mcp-server. Search NPPES providers and resolve NUCC specialty codes via MCP over STDIO or Streamable HTTP. This page covers its hosted endpoint (https://npi-providers.caseyjhand.com/mcp).

Is the io.github.cyanheads/npi-providers-mcp-server server safe to use?

io.github.cyanheads/npi-providers-mcp-server scores 86 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the io.github.cyanheads/npi-providers-mcp-server server expose?

io.github.cyanheads/npi-providers-mcp-server exposes 3 tools: npi_search_providers, npi_get_provider, npi_lookup_taxonomy. Their descriptions and schemas cost roughly 1,559 tokens of context every time the server is loaded.

Does the io.github.cyanheads/npi-providers-mcp-server server require authentication?

No. We connected to io.github.cyanheads/npi-providers-mcp-server without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

Is the io.github.cyanheads/npi-providers-mcp-server server still maintained?

io.github.cyanheads/npi-providers-mcp-server is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.