MCP server for healthcare provider NPI validation using the CMS NPPES Registry API
Server has 8 tools with generally good naming conventions (all start with verbs: search, get, validate, match, clear). Descriptions are present for all tools and range from 50-150 characters, meeting the 10-1024 baseline. However, parameter descriptions are sparse or generic in several tools, and output schemas are completely undocumented. Tools like search_providers have comprehensive input schemas with proper enum constraints and descriptions, but others like match_providers lack clarity on their input structure. No tool documents what it returns, forcing LLMs to infer output structure. Error handling is not visible in tool definitions. The server shows moderate quality, above bare minimum but with clear gaps preventing A-grade status.
Search multiple providers at once
Get detailed information about a specific provider
Search healthcare providers by name, location, specialty, or NPI
Validate an NPI number and get provider details
No output schemas documented for any tool. Tools return results but LLMs cannot determine what fields to expect, forcing parsing of unstructured responses and hindering downstream tool composition.
match_providers tool references undefined input types ('BasicProvider objects', 'SearchParameters object') without formal schema definitions. Per HARD SCORING RULE, inferred tools are capped at 50; this tool's schema is inferred rather than explicitly documented.
Duplicate/overlapping tools reduce clarity. search_providers, search_by_name, and search_by_location all search for providers with overlapping parameter sets. LLMs waste reasoning cycles deciding which to call. Consolidate into single search_providers tool (which already exists and is more complete).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 10 | <=2025-11-25 | v2 |
| 2026-03-09 | D | 55 | - | v1 |
Destructive operation (clear_cache) lacks warning in description and no dry-run or confirmation option. Per pattern:confirmation-request, irreversible operations should support confirmation. Current description (41 chars) does not warn about consequences.
No error handling guidance visible in tool definitions. Tools do not document failure modes, recovery steps, or actionable error messages. Per pattern:recovery-guide, error responses should tell LLMs what to do next (e.g., 'NPI not found, try search_providers() instead').
Parameter constraints are incomplete. Example: search_providers 'limit' parameter says '1-200' in description but not enforced in schema (no minimum/maximum fields visible). validate_npi accepts 'npi_number' as string with no format validation (should enforce 10-digit pattern). Per pattern:constrained-input, enums and formal constraints prevent hallucinated values.
match_providers tool has vague naming ('match' is generic action, not verb-noun specific). Should be 'search_providers_by_fuzzy_matching' or removed as internal implementation detail, not exposed as chat-facing tool.
Pagination support unclear. search_providers includes skip/limit but no total_count or next_cursor documented in return. Per pattern:paginated-result, search tools must return total count to enable LLMs to plan multiple calls. No documentation of maximum result size cap.