Public healthcare data MCP servers for local agents and controlled gateways. Provides tools for healthcare market intelligence, facility data, ownership, quality, claims, workforce, research, and compliance screening.
Healthcare Data MCP has 11 tools with generally strong descriptions (most 150-400 chars, well above the 34-char p10 baseline) and clear parameter documentation. However, critical gaps exist: (1) output schemas are completely undocumented, no tool declares what fields it returns, forcing LLMs to guess downstream field names; (2) parameter types are present in JSON Schema but descriptions lack format/constraint details (e.g., 'ccn' lacks '6-digit' clarification visible in some tools but not others); (3) error handling is absent, no tool describes failure modes or recovery paths; (4) no tool declares idempotency, retryability, or side effects; (5) tool 8 (get_cache_job) has a minimal 8-word description, well below the 34-char minimum. Cache management tools (1-7) are well-described with discovery/usage guidance, but data access tools (9-11) lack consistency. Naming is strong (verb_noun pattern throughout). Composition is sound, tools are single-purpose and chainable.
Poll a cache refresh/import/validation job.
Return bounded lineage for one dataset's cache runs and promoted artifacts. Discovery: Shows recent run records and the current promoted artifact. When to use: Use to explain how a cache moved from acquisition to report-ready use. Parameters: dataset_id must be registered. Returns: Current artifact ID, manifest, recent runs, and downstream workflow references. Do / Don't: Do use lineage for recovery; don't expose raw payloads in audit reports. Examples: {"dataset_id":"cms_hospital_quality"} traces quality-cache promotion. Common mistakes: Ignoring previous-good rollback evidence after a corrupt refresh.
Return the latest promoted artifact manifest for one dataset without raw data. Discovery: Reads the bounded promoted manifest for a dataset. When to use: Use when report evidence needs checksum, source period, or validation status. Parameters: dataset_id must be registered. Returns: Manifest metadata or a missing-manifest status. Do / Don't: Do cite manifest metadata; don't request raw source rows from this tool. Examples: {"dataset_id":"cms_hospital_general_info"} returns the current promoted artifact receipt. Common mistakes: Treating a missing manifest as proof the public source has no data.
Get facility master data from CMS Hospital General Information.
No tool documents its output schema. LLMs cannot infer what fields are returned, forcing guesswork on downstream field names and types. This violates the core pattern:tool-description requirement and breaks tool chaining.
get_cache_job has only 8-word description ('Poll a cache refresh/import/validation job.'), far below the 34-char p10 baseline. Insufficient context for LLM selection or understanding when to call it.
get_facility description is only 40 chars ('Get facility master data from CMS Hospital General Information.'), lacks usage guidance, prerequisites, or when-to-call context.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Get inpatient discharge volumes by DRG and service line for a hospital. Uses CMS Medicare Inpatient Hospitals PUF (by Provider and Service). Args: ccn: CMS Certification Number (6-digit, e.g. "390223"). drg_code: Filter to a specific MS-DRG code (e.g. "470"). service_line: Filter to a service line (e.g. "Cardiovascular", "Orthopedics"). year: Discharge year ("2021", "2022", "2023"). Default: latest available. Discovery --------- - Inspect this server's healthcare-data://server/.../capabilities resource for datasets, cache needs, and capability clusters. - Use discovery workflow plans when you need cross-server call order, source caveats, or identity handoffs. When to use ----------- - Use this tool only for its named public healthcare data task. - Prefer exact identifiers when available; use search tools first when you only have names or partial context. - NOT for: patient-level data, PHI, legal clearance, or substituting adjacent public sources for exact source-backed facts. Parameters ---------- See the function signature and parameter descriptions above. Preserve exact public identifiers such as CCN, NPI, ZCTA, state, dataset_id, workflow_id, or source-specific IDs. Returns ------- dict Structured JSON-compatible payload. Preserve evidence, source_metadata, identity, and identity_map fields when present. Do / Don't ---------- Do: - Preserve source evidence and identity fields with cited facts. - Follow returned next_step or next_actions hints before making source claims. Don't: - Treat candidate search rows as exact matches without exact identifiers. - Pass placeholders like <ccn> or YOUR_VALUE as real arguments.
Return dataset readiness, blockers, and next actions for one workflow. Discovery: Resolves workflow source aliases into canonical dataset IDs. When to use: Use as the cache preflight for report workflows. Parameters: workflow_id plus optional concrete inputs such as ccn and measure. Returns: Workflow readiness, step checks, ordered cache plan, blockers, and next actions. Do / Don't: Do preserve blockers in the final plan; don't substitute adjacent sources for exact measure rows. Examples: {"workflow_id":"hospital_competitive_profile","inputs":{"ccn":"390223","measure":"clabsi_sir"}}. Common mistakes: Treating optional unavailable context as evidence against a hospital.
Inspect one registered dataset's cache contract, status, manifest, and lineage. Discovery: Shows the executable cache contract for a dataset_id. When to use: Use before citing or refreshing a specific source. Parameters: dataset_id must be a registered dataset such as cms_hospital_quality. Returns: Spec fields, current readiness, latest manifest, and lineage summary. Do / Don't: Do use exact dataset IDs; don't pass arbitrary URLs or paths. Examples: {"dataset_id":"cms_hospital_quality"} inspects exact CMS quality measure readiness. Common mistakes: Joining facts on names or addresses instead of exact identifiers from the spec.
List registered public healthcare cache sources and readiness. Discovery: Enumerates registry-backed cache contracts and current manifest-backed readiness. When to use: Use before a workflow to see which public sources are ready, blocked, stale, or import-only. Parameters: Optional server, workflow, status, source_system, and acquisition_mode filters. Returns: Bounded source summaries with validation status, source period, report eligibility, and next actions. Do / Don't: Do filter by exact dataset/workflow IDs; don't treat missing cache data as a negative factual claim. Examples: {"workflow":"hospital_competitive_profile"} lists the flagship workflow's cache inputs. Common mistakes: Assuming file existence equals validated readiness; using state-limited sources as national coverage.
List CDC PLACES community-health measures available for a geography. Args: geography_type: County, place, tract, or ZCTA. Common aliases such as "zip" are accepted. state: Optional two-letter state filter for data-backed measure discovery. search: Optional measure/category text filter. limit: Maximum source rows to inspect when reading from Socrata or a fixture. Discovery --------- - Inspect this server's healthcare-data://server/.../capabilities resource for datasets, cache needs, and capability clusters. - Use discovery workflow plans when you need cross-server call order, source caveats, or identity handoffs. When to use ----------- - Use this tool only for its named public healthcare data task. - Prefer exact identifiers when available; use search tools first when you only have names or partial context. - NOT for: patient-level data, PHI, legal clearance, or substituting adjacent public sources for exact source-backed facts. Parameters ---------- See the function signature and parameter descriptions above. Preserve exact public identifiers such as CCN, NPI, ZCTA, state, dataset_id, workflow_id, or source-specific IDs. Returns ------- dict Structured JSON-compatible payload. Preserve evidence, source_metadata, identity, and identity_map fields when present. Do / Don't ---------- Do: - Preserve source evidence and identity fields with cited facts. - Follow returned next_step or next_actions hints before making source claims. Don't: - Treat candidate search rows as exact matches without exact identifiers. - Pass placeholders like <ccn> or YOUR_VALUE as real arguments.
Dry-run an ordered cache refresh plan without downloading or writing. Discovery: Produces the acquisition sequence from registered cache specs. When to use: Use before any mutating refresh or import. Parameters: dataset_ids, workflow_id, force, and max_bytes. Returns: Ordered plan rows with validation gates, missing env, blockers, and source caveats. Do / Don't: Do review max_bytes and acquisition_mode; don't call refresh without an explicit dataset list or workflow. Examples: {"workflow_id":"hospital_competitive_profile"} plans the flagship bundle. Common mistakes: Refreshing licensed/manual imports as if they were public downloads.
Start a bounded refresh for registered dataset IDs only. Discovery: Starts or dry-runs guarded acquisition jobs for allowlisted datasets. When to use: Use after plan_cache_refresh identifies a needed public refresh. Parameters: dataset_ids, dry_run, force, max_bytes, and allow_stale_fallback. Returns: Run IDs, job records, validation summaries, manifests, or recovery hints. Do / Don't: Do keep dry_run true until approved; don't pass arbitrary URLs, broad paths, or large unbounded downloads. Examples: {"dataset_ids":["cms_hospital_quality"],"dry_run":true} creates a no-write plan record. Common mistakes: Expecting licensed imports or state manual files to download automatically.
No tool declares error handling, recovery paths, or failure modes. Descriptions lack guidance on retryability, side effects, or what to do if a call fails. Violates pattern:recovery-guide.
Parameter descriptions lack format constraints. E.g., 'ccn' is described as 'CMS Certification Number' but format (6-digit) is buried in examples, not in the description text. LLMs cannot parse examples reliably.