Zovo NPI Lookup MCP
An MCP server that allows agents to verify National Provider Identifier (NPI) numbers against live registry records. It supports checking provider names, practice states, and taxonomy codes, searching by name and state, and downloading multi-sheet Excel rosters and CSV files. It performs local check-digit verification and caches results for short periods.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://npi-lookup.zovo.one/mcpWhat you can do with it
- Verify NPI number practice state and taxonomy code
- Search NPI registry by last name, first name, and state
- Download multi-sheet Excel roster and CSV files
- Compare expected names, states and taxonomy codes
Source and maintenance
Protocol and capabilities
- Server
- npi-lookup 1.0.0
- MCP protocol
- 2025-06-18
- Tools
- 2 advertised
- Resources
- 1 advertised
- Resource templates
- 1 advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": true
},
"resources": {
"listChanged": true
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
2 advertised
verify_npi_numbers — Verify NPI numbers
Use this when the user wants an npi lookup, verify npi number, bulk npi lookup or npi taxonomy code lookup for credentialing. Reads live public registry records, checks optional expected names, states and taxonomies, and returns Excel and CSV downloads. Up to 40 NPIs per call; check digits cannot prove issuance. Do not use for patient records or proof of licensure.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"providers"
],
"properties": {
"providers": {
"type": "array",
"items": {
"type": "object",
"required": [
"npi"
],
"properties": {
"npi": {
"type": "string",
"maxLength": 120,
"description": "NPI identifier, e.g. 1245319599; spaces and hyphens are removed."
},
"expected_name": {
"type": "string",
"maxLength": 120,
"minLength": 1,
"description": "Optional expected provider or organization name, e.g. Jane Doe or Example Health Clinic."
},
"expected_state": {
"type": "string",
"maxLength": 20,
"description": "Expected US practice state, e.g. VA."
},
"expected_taxonomy": {
"type": "string",
"maxLength": 120,
"description": "Expected taxonomy code, e.g. 207Q00000X."
}
}
},
"description": "Roster of 1 to 40 providers, e.g. [{\"npi\":\"1245319599\",\"expected_state\":\"VA\"}]."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"summary",
"providers",
"searches",
"truncated",
"source",
"downloads"
],
"properties": {
"source": {
"type": "string"
},
"summary": {
"type": "object",
"required": [
"total",
"ok",
"mismatch",
"not_found",
"invalid",
"errors"
],
"properties": {
"ok": {
"type": "number"
},
"total": {
"type": "number"
},
"errors": {
"type": "number"
},
"invalid": {
"type": "number"
},
"mismatch": {
"type": "number"
},
"not_found": {
"type": "number"
}
},
"additionalProperties": false
},
"searches": {
"type": "array",
"items": {
"type": "object",
"required": [
"query",
"match_count",
"more_matches",
"error",
"matches"
],
"properties": {
"error": {
"type": "string"
},
"query": {
"type": "string"
},
"matches": {
"type": "array",
"items": {
"type": "object",
"required": [
"npi",
"entity_type",
"name",
"primary_taxonomy",
"city",
"state"
],
"properties": {
"npi": {
"type": "string"
},
"city": {
"type": "string"
},
"name": {
"type": "string"
},
"state": {
"type": "string"
},
"entity_type": {
"type": "string"
},
"primary_taxonomy": {
"type": "string"
}
},
"additionalProperties": false
}
},
"match_count": {
"type": "number"
},
"more_matches": {
"type": "boolean"
}
},
"additionalProperties": false
}
},
"downloads": {
"type": "object",
"required": [
"xlsx",
"csv"
],
"properties": {
"csv": {
"type": "string"
},
"xlsx": {
"type": "string"
}
},
"additionalProperties": false
},
"providers": {
"type": "array",
"items": {
"type": "object",
"required": [
"npi",
"check_digit",
"found",
"entity_type",
"name",
"status",
"primary_taxonomy_code",
"primary_taxonomy",
"practice_city",
"practice_state",
"last_updated",
"name_check",
"state_check",
"taxonomy_check",
"check_result",
"error",
"row"
],
"properties": {
"npi": {
"type": "string"
},
"row": {
"type": "number"
},
"name": {
"type": "string"
},
"error": {
"type": "string"
},
"found": {
"type": "string"
},
"status": {
"type": "string"
},
"name_check": {
"type": "string"
},
"check_digit": {
"type": "string"
},
"entity_type": {
"type": "string"
},
"state_check": {
"type": "string"
},
"check_result": {
"type": "string"
},
"last_updated": {
"type": "string"
},
"practice_city": {
"type": "string"
},
"practice_state": {
"type": "string"
},
"taxonomy_check": {
"type": "string"
},
"primary_taxonomy": {
"type": "string"
},
"primary_taxonomy_code": {
"type": "string"
}
},
"additionalProperties": false
}
},
"truncated": {
"type": "boolean"
}
},
"additionalProperties": false
}{
"title": "Verify NPI numbers",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}search_npi_providers — Search NPI providers
Use this when the user wants an npi registry search, npi search or provider npi lookup by name and state. Reads live public registry records and returns Excel and CSV downloads. Up to 10 searches per call, with at most 10 matches each; give a last name or organization name and a US state. Do not use for insurance acceptance or patient records.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"searches"
],
"properties": {
"searches": {
"type": "array",
"items": {
"type": "object",
"required": [
"state"
],
"properties": {
"city": {
"type": "string",
"maxLength": 120,
"description": "Practice city, e.g. Boston."
},
"state": {
"type": "string",
"maxLength": 20,
"description": "Required US state code, e.g. MA."
},
"last_name": {
"type": "string",
"maxLength": 120,
"description": "Last name, e.g. Smith; a trailing wildcard needs two leading permitted characters."
},
"first_name": {
"type": "string",
"maxLength": 120,
"description": "First name, e.g. Jane."
},
"entity_type": {
"enum": [
"individual",
"organization"
],
"type": "string",
"description": "Entity type, e.g. individual."
},
"postal_code": {
"type": "string",
"maxLength": 20,
"description": "Five-digit ZIP as text, e.g. 02189."
},
"organization_name": {
"type": "string",
"maxLength": 120,
"description": "Organization name, e.g. Example Health Clinic."
},
"taxonomy_description": {
"type": "string",
"maxLength": 120,
"description": "Taxonomy description, e.g. Family Medicine."
}
}
},
"description": "One to ten name and state searches, e.g. [{\"last_name\":\"Smith\",\"first_name\":\"John\",\"state\":\"MA\"}]."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"summary",
"providers",
"searches",
"truncated",
"source",
"downloads"
],
"properties": {
"source": {
"type": "string"
},
"summary": {
"type": "object",
"required": [
"total",
"ok",
"mismatch",
"not_found",
"invalid",
"errors"
],
"properties": {
"ok": {
"type": "number"
},
"total": {
"type": "number"
},
"errors": {
"type": "number"
},
"invalid": {
"type": "number"
},
"mismatch": {
"type": "number"
},
"not_found": {
"type": "number"
}
},
"additionalProperties": false
},
"searches": {
"type": "array",
"items": {
"type": "object",
"required": [
"query",
"match_count",
"more_matches",
"error",
"matches"
],
"properties": {
"error": {
"type": "string"
},
"query": {
"type": "string"
},
"matches": {
"type": "array",
"items": {
"type": "object",
"required": [
"npi",
"entity_type",
"name",
"primary_taxonomy",
"city",
"state"
],
"properties": {
"npi": {
"type": "string"
},
"city": {
"type": "string"
},
"name": {
"type": "string"
},
"state": {
"type": "string"
},
"entity_type": {
"type": "string"
},
"primary_taxonomy": {
"type": "string"
}
},
"additionalProperties": false
}
},
"match_count": {
"type": "number"
},
"more_matches": {
"type": "boolean"
}
},
"additionalProperties": false
}
},
"downloads": {
"type": "object",
"required": [
"xlsx",
"csv"
],
"properties": {
"csv": {
"type": "string"
},
"xlsx": {
"type": "string"
}
},
"additionalProperties": false
},
"providers": {
"type": "array",
"items": {
"type": "object",
"required": [
"npi",
"check_digit",
"found",
"entity_type",
"name",
"status",
"primary_taxonomy_code",
"primary_taxonomy",
"practice_city",
"practice_state",
"last_updated",
"name_check",
"state_check",
"taxonomy_check",
"check_result",
"error",
"row"
],
"properties": {
"npi": {
"type": "string"
},
"row": {
"type": "number"
},
"name": {
"type": "string"
},
"error": {
"type": "string"
},
"found": {
"type": "string"
},
"status": {
"type": "string"
},
"name_check": {
"type": "string"
},
"check_digit": {
"type": "string"
},
"entity_type": {
"type": "string"
},
"state_check": {
"type": "string"
},
"check_result": {
"type": "string"
},
"last_updated": {
"type": "string"
},
"practice_city": {
"type": "string"
},
"practice_state": {
"type": "string"
},
"taxonomy_check": {
"type": "string"
},
"primary_taxonomy": {
"type": "string"
},
"primary_taxonomy_code": {
"type": "string"
}
},
"additionalProperties": false
}
},
"truncated": {
"type": "boolean"
}
},
"additionalProperties": false
}{
"title": "Search NPI providers",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
1 advertised
npi-lookup-widget — Zovo NPI Lookup view
Interactive view for Zovo NPI Lookup.
ui://widget/npi-lookup-v5-npi-1.0.0-5756c07da5e38da02d319b54794a1fd03fe4edbde1415af7f416fba23621d6da.htmlnpi-lookup-widget-legacy — Zovo NPI Lookup view (previous versions)
ui://widget/npi-lookup-{version}.html30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 560 ms
- 95th percentile latency
- 560 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 560 ms · metadata changed · 2 tool(s), 1 resource(s), 1 resource template(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http zovo-npi-lookup-mcp https://npi-lookup.zovo.one/mcpCodex
codex mcp add zovo-npi-lookup-mcp --url https://npi-lookup.zovo.one/mcpCursor
{
"mcpServers": {
"zovo-npi-lookup-mcp": {
"url": "https://npi-lookup.zovo.one/mcp"
}
}
}Cline
{
"mcpServers": {
"zovo-npi-lookup-mcp": {
"type": "streamableHttp",
"url": "https://npi-lookup.zovo.one/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"zovo-npi-lookup-mcp": {
"type": "http",
"url": "https://npi-lookup.zovo.one/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http zovo-npi-lookup-mcp https://npi-lookup.zovo.one/mcpClaude Desktop
{
"mcpServers": {
"zovo-npi-lookup-mcp": {
"url": "https://npi-lookup.zovo.one/mcp"
}
}
}Windsurf
{
"mcpServers": {
"zovo-npi-lookup-mcp": {
"serverUrl": "https://npi-lookup.zovo.one/mcp"
}
}
}Let your agent find its tools
Find servers like Zovo NPI Lookup MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.