MCP Servers

A collection of Model Context Protocol servers, templates, tools and more.

H
Healthcare Data MCP

13 MCP servers with 68 tools for healthcare data analytics — CMS facilities, quality metrics, claims, workforce, price transparency, and more

Created 4/9/2026
Updated about 10 hours ago
Repository documentation and setup instructions

Healthcare Data MCP

13 MCP servers exposing 69 tools for healthcare facility analytics, quality metrics, financial intelligence, and market research -- all backed by public government data.

Python 3.11+ MCP 1.0 Servers Tools License: MIT

Disclaimer: This software is for research and informational purposes only. It is not a medical device, is not intended for clinical decision-making, and must not be used as a substitute for professional medical judgment. All data is sourced from public government datasets -- accuracy is not guaranteed and may lag behind real-time conditions.

What is this

The Model Context Protocol (MCP) lets AI assistants call structured tools the same way a developer calls an API. This project packages 13 MCP servers that pull live data from CMS, Census, BLS, SEC, HRSA, and other public sources so an AI can answer questions like:

  • "What's the case mix index at Jefferson Hospital?"
  • "Show me 30-minute drive-time competitors for this facility."
  • "Compare readmission rates across these five hospitals."
  • "Who are the top employers of registered nurses in Philadelphia?"

Every tool returns structured JSON. Most servers work without API keys, optional keys unlock deeper features like Census demographics, isochrone generation, and web intelligence, and the financial-intelligence server requires a real SEC_USER_AGENT header for SEC fair-access compliance.

The web-intelligence server now uses an in-process Google CSE quota guard with query caching and session caps, and the price-transparency server refuses oversized MRF downloads before they can fill the cache volume.

Architecture

MCP Client (Claude Code, VS Code, Cursor, etc.)
    |
    |  stdio / streamable-http
    |
    v
+-----------------------------------------------------+
|                   13 MCP Servers                     |
|                                                      |
|  cms-facility ---- hospital-quality ---- claims      |
|  service-area ---- geo-demographics ---- drive-time  |
|  health-system --- physician-network --- financial   |
|  price-transparency -- workforce ------- public-rec  |
|  web-intelligence                                    |
+-----------------------------------------------------+
    |                     |
    v                     v
+------------------+  +------------------+
|  Shared Layer    |  |  Cache Layer     |
|  cms_client.py   |  |  ~/.healthcare-  |
|  utils/          |  |   data-mcp/cache |
+------------------+  +------------------+
    |
    v
+--------------------------------------------------+
|          Public Data Sources                      |
|  CMS Provider Data  |  Census ACS  |  SEC EDGAR  |
|  NPPES NPI Registry |  BLS OES     |  HRSA HPSA  |
|  AHRQ Compendium    |  Dartmouth   |  OSRM       |
|  USAspending.gov    |  SAM.gov     |  ProPublica  |
|  NLRB Elections     |  HUD USPS    |  ORS         |
+--------------------------------------------------+

Server Catalog

| # | Server | Tools | Data Sources | API Key | |---|--------|-------|-------------|---------| | 1 | cms-facility | search_facilities, get_facility, search_npi, get_facility_financials, get_hospital_info (5) | CMS Hospital General Info, NPPES NPI Registry, CMS Cost Report PUF | None | | 2 | service-area | compute_service_area, get_market_share, get_hsa_hrr_mapping, compare_to_dartmouth (4) | CMS Hospital Service Area File, Dartmouth Atlas | None | | 3 | geo-demographics | get_zcta_demographics, get_zcta_demographics_batch, get_zcta_adjacency, get_medicare_enrollment, get_geographic_variation, crosswalk_zip (6) | Census ACS 5-Year, TIGER/Line Shapefiles, CMS Geographic Variation PUF, HUD USPS Crosswalk | CENSUS_API_KEY, HUD_API_TOKEN | | 4 | drive-time | compute_drive_time, compute_drive_time_matrix, generate_isochrone, find_competing_facilities, compute_accessibility_score (5) | OSRM routing engine, OpenRouteService, CMS Hospital General Info, Census Gazetteer | ORS_API_KEY (isochrones only) | | 5 | hospital-quality | get_quality_scores, get_readmission_data, get_safety_scores, get_patient_experience, get_financial_profile, compare_hospitals (6) | CMS Hospital General Info, HRRP, HAC Reduction Program, HCAHPS, Cost Report PUF | None | | 6 | health-system-profiler | search_health_systems, get_system_profile, get_system_facilities (3) | AHRQ Compendium, CMS Provider of Services, NPPES | None | | 7 | financial-intelligence | search_form990, get_form990_details, search_sec_filings, get_sec_filing, search_muni_bonds, get_muni_bond_details (6) | IRS Form 990 via ProPublica, SEC EDGAR XBRL, Municipal Bond Official Statements | SEC_USER_AGENT | | 8 | price-transparency | search_mrf_index, get_negotiated_rates, compute_rate_dispersion, compare_rates_system, benchmark_rates (5) | Hospital MRF files, CMS Physician Fee Schedule, Medicare Utilization | None | | 9 | physician-referral-network | search_physicians, get_physician_profile, load_docgraph_cache, map_referral_network, analyze_physician_mix, detect_leakage (6) | NPPES, CMS Physician Compare, Medicare Utilization, DocGraph | None | | 10 | workforce-analytics | get_bls_employment, get_hrsa_workforce, get_gme_profile, get_residency_programs, search_union_activity, get_staffing_benchmarks, get_cost_report_staffing (7) | BLS OES, HRSA HPSA, CMS HCRIS, ACGME, NLRB Elections, CMS PBJ | BLS_API_KEY, optional ACGME_PROGRAMS_CSV | | 11 | claims-analytics | get_inpatient_volumes, get_outpatient_volumes, trend_service_lines, compute_case_mix, analyze_market_volumes (5) | CMS Medicare Inpatient/Outpatient PUF | None | | 12 | public-records | search_usaspending, search_sam_gov, get_340b_status, get_breach_history, get_accreditation, get_interop_status (6) | USAspending.gov, SAM.gov, HRSA 340B OPAIS, HHS OCR Breach Portal, CMS POS, CMS Promoting Interoperability | SAM_GOV_API_KEY, CHPL_API_KEY | | 13 | web-intelligence | scrape_system_profile, detect_ehr_vendor, get_executive_profiles, monitor_newsroom, detect_gpo_affiliation (5) | Google Custom Search, CMS Promoting Interoperability, Proxycurl, Google News RSS | GOOGLE_CSE_API_KEY, GOOGLE_CSE_ID, PROXYCURL_API_KEY |

Quick Start

Option A: pip install (single server, stdio)

git clone https://github.com/ajhcs/healthcare-data-mcp.git
cd healthcare-data-mcp
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"

# Run a single server
python -m servers.cms_facility.server

Option B: Docker Compose (all servers, HTTP)

git clone https://github.com/ajhcs/healthcare-data-mcp.git
cd healthcare-data-mcp
cp .env.example .env          # edit to add API keys
docker compose up -d

All servers start on ports 8002-8014 with streamable-http transport.

To run only the servers that need no external keys, use:

docker compose -f docker-compose.zero-config.yml up -d

That profile starts 7 servers. financial-intelligence is excluded because the SEC requires a real SEC_USER_AGENT.

Option C: Interactive setup

git clone https://github.com/ajhcs/healthcare-data-mcp.git
cd healthcare-data-mcp
bash scripts/setup.sh

The setup script checks prerequisites, configures API keys interactively, and reports which servers will run at full capacity.

Configuration

Copy .env.example to .env and fill in the keys you have. Most keys are optional. SEC_USER_AGENT is required only if you want to run the financial-intelligence server, and the remaining keyed servers degrade gracefully when their credentials are missing. get_residency_programs also supports an optional local ACGME_PROGRAMS_CSV path if you want to point the workforce server at a normalized ACGME Program Search export, and load_docgraph_cache can use an optional DOCGRAPH_CSV_PATH if you want the physician referral server to import a downloaded CareSet DocGraph file without passing a path argument each time.

cp .env.example .env

API Key Registration

| Key | Required By | Free? | Registration Link | |-----|------------|-------|------------------| | CENSUS_API_KEY | geo-demographics | Yes | api.census.gov/data/key_signup.html | | HUD_API_TOKEN | geo-demographics (crosswalk) | Yes | huduser.gov/portal/dataset/uspszip-api.html | | ORS_API_KEY | drive-time (isochrones) | Yes (2,000 req/day) | openrouteservice.org/dev/#/signup | | SEC_USER_AGENT | financial-intelligence | N/A (just a header) | Set to "YourApp your@email.com" | | BLS_API_KEY | workforce-analytics | Yes (v2, 500 req/day) | bls.gov/developers/home.htm | | ACGME_PROGRAMS_CSV | workforce-analytics | No | Optional path to a normalized ACGME Program Search export imported with python3 scripts/import_acgme_programs.py /path/to/export.csv | | SAM_GOV_API_KEY | public-records (SAM.gov) | Yes | sam.gov/content/entity-registration | | CHPL_API_KEY | public-records (interop) | Yes | chpl.healthit.gov/#/resources/api | | GOOGLE_CSE_API_KEY | web-intelligence | Yes (100 queries/day) | developers.google.com/custom-search | | GOOGLE_CSE_ID | web-intelligence | Yes | Created alongside CSE API key | | PROXYCURL_API_KEY | web-intelligence (LinkedIn) | Paid | proxycurl.com |

Environment Variables

| Variable | Default | Purpose | |----------|---------|---------| | MCP_TRANSPORT | stdio | Transport mode: stdio, sse, or streamable-http | | MCP_PORT | per-server | HTTP port when using non-stdio transport | | OSRM_BASE_URL | http://router.project-osrm.org | OSRM routing backend (self-host for production) | | DOCGRAPH_CSV_PATH | unset | Optional local path used by load_docgraph_cache() for CareSet DocGraph imports | | GOOGLE_CSE_SESSION_LIMIT | 40 | Max live Google CSE calls per server process (0 disables the guard) | | GOOGLE_CSE_CACHE_TTL_SECONDS | 21600 | In-memory TTL for identical Google CSE queries | | MRF_MAX_DOWNLOAD_BYTES | 10737418240 | Abort raw MRF downloads above this size (10 GiB default) | | MRF_MIN_FREE_BYTES | 2147483648 | Minimum disk headroom preserved during MRF downloads (2 GiB default) |

MCP Client Setup

Claude Code

Add to your project's .mcp.json:

{
  "mcpServers": {
    "cms-facility": {
      "command": "python",
      "args": ["-m", "servers.cms_facility.server"],
      "cwd": "/path/to/healthcare-data-mcp"
    },
    "hospital-quality": {
      "command": "python",
      "args": ["-m", "servers.hospital_quality.server"],
      "cwd": "/path/to/healthcare-data-mcp"
    }
  }
}

Or with Docker (streamable-http):

{
  "mcpServers": {
    "cms-facility": {
      "type": "streamable-http",
      "url": "http://localhost:8006/mcp"
    },
    "hospital-quality": {
      "type": "streamable-http",
      "url": "http://localhost:8005/mcp"
    }
  }
}

VS Code (Copilot MCP)

Add to .vscode/settings.json:

{
  "mcp.servers": {
    "cms-facility": {
      "command": "python",
      "args": ["-m", "servers.cms_facility.server"],
      "cwd": "/path/to/healthcare-data-mcp"
    }
  }
}

Cursor

Add to .cursor/mcp.json:

{
  "mcpServers": {
    "cms-facility": {
      "command": "python",
      "args": ["-m", "servers.cms_facility.server"],
      "cwd": "/path/to/healthcare-data-mcp"
    }
  }
}

OpenCode / Codex

Set MCP_TRANSPORT=streamable-http and point your client to the Docker URLs:

http://localhost:8006/mcp   # cms-facility
http://localhost:8002/mcp   # service-area
http://localhost:8003/mcp   # geo-demographics
http://localhost:8004/mcp   # drive-time
http://localhost:8005/mcp   # hospital-quality
http://localhost:8007/mcp   # health-system-profiler
http://localhost:8008/mcp   # financial-intelligence
http://localhost:8009/mcp   # price-transparency
http://localhost:8010/mcp   # physician-referral-network
http://localhost:8011/mcp   # workforce-analytics
http://localhost:8012/mcp   # claims-analytics
http://localhost:8013/mcp   # public-records
http://localhost:8014/mcp   # web-intelligence

Development

Project structure

healthcare-data-mcp/
  servers/
    cms-facility/          # Server package
      __init__.py
      server.py            # MCP tool definitions
      data_loaders.py      # Data download + cache logic
      models.py            # Pydantic response models
    service-area/
    ...                    # 13 server packages total
  shared/
    utils/
      cms_client.py        # Shared CMS data access
  tests/
  scripts/
  docker-compose.yml
  pyproject.toml

Adding a new server

  1. Create servers/your-server/ with __init__.py, server.py, models.py, and data_loaders.py.
  2. In server.py, create a FastMCP instance and register tools with @mcp.tool().
  3. Add a service entry in docker-compose.yml with a unique port (8015+).
  4. Add any new API keys to .env.example.
  5. Write tests in tests/servers/your_server/.

Running tests

python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
pytest tests/ -v

Code style

ruff check .
ruff format .

Running a single server in development

# stdio mode (default, for MCP clients)
python -m servers.cms_facility.server

# HTTP mode (for browser testing or Docker)
MCP_TRANSPORT=streamable-http MCP_PORT=8006 python -m servers.cms_facility.server

Data Sources

All data comes from publicly available US government sources. No PHI, no HIPAA-covered data, no proprietary datasets.

| Source | Agency | URL | |--------|--------|-----| | Hospital General Information | CMS | data.cms.gov | | Hospital Service Area File | CMS | data.cms.gov | | Provider of Services | CMS | data.cms.gov | | Hospital Cost Reports (HCRIS) | CMS | data.cms.gov | | Medicare Inpatient/Outpatient PUF | CMS | data.cms.gov | | Geographic Variation PUF | CMS | data.cms.gov | | HRRP Readmissions | CMS | data.cms.gov | | HAC Reduction Program | CMS | data.cms.gov | | HCAHPS Patient Experience | CMS | data.cms.gov | | Promoting Interoperability | CMS | data.cms.gov | | NPPES NPI Registry | CMS | npiregistry.cms.hhs.gov | | Physician Compare | CMS | data.cms.gov | | Medicare Physician Utilization | CMS | data.cms.gov | | Physician Fee Schedule RVUs | CMS | cms.gov/medicare/payment/fee-schedules | | Payroll-Based Journal (PBJ) | CMS | data.cms.gov | | AHRQ Compendium of US Health Systems | AHRQ | ahrq.gov | | American Community Survey (ACS) | Census | census.gov | | TIGER/Line Shapefiles | Census | census.gov | | Census Gazetteer | Census | census.gov | | Dartmouth Atlas | Dartmouth | dartmouthatlas.org | | OSRM (Open Source Routing Machine) | OSM community | project-osrm.org | | OpenRouteService | HeiGIT | openrouteservice.org | | OES Employment Statistics | BLS | bls.gov/oes | | NLRB Union Elections | NLRB | nlrb.gov | | BLS Work Stoppages | BLS | bls.gov/wsp | | HPSA Shortage Areas | HRSA | data.hrsa.gov | | ACGME Data Resource Book | ACGME | acgme.org | | IRS Form 990 (via ProPublica) | IRS / ProPublica | projects.propublica.org/nonprofits | | SEC EDGAR | SEC | sec.gov/edgar | | USAspending.gov | Treasury | usaspending.gov | | SAM.gov Opportunities | GSA | sam.gov | | 340B Drug Pricing Program | HRSA | 340bopais.hrsa.gov | | HIPAA Breach Portal | HHS OCR | ocrportal.hhs.gov | | ONC CHPL | ONC | chpl.healthit.gov | | HUD USPS Crosswalk | HUD | huduser.gov |

Pair with Healthcare Agents

These MCP servers give your AI data access. For domain expertise, pair them with Healthcare Agents -- 51 specialized AI agents covering revenue cycle, compliance, quality improvement, clinical ops, payer relations, and more.

Together, you get agents that know what to ask backed by servers that know where to find the answer:

Healthcare Agents (expertise)     Healthcare Data MCP (data)
================================  ================================
Revenue Cycle Specialist     -->  claims-analytics, price-transparency
Compliance Officer           -->  public-records, cms-facility
Quality Improvement Lead     -->  hospital-quality, claims-analytics
Workforce Planner            -->  workforce-analytics, geo-demographics
Market Analyst               -->  service-area, drive-time, financial-intelligence
Health System Strategist     -->  health-system-profiler, physician-referral-network

Install both:

# Data (this repo)
pip install -e .

# Agents
curl -fsSL https://raw.githubusercontent.com/ajhcs/healthcare-agents/main/install.sh | bash

License

MIT. See LICENSE.

Project Docs

Quick Setup
Installation guide for this server

Install Package (if required)

uvx healthcare-data-mcp

Cursor configuration (mcp.json)

{ "mcpServers": { "ajhcs-healthcare-data-mcp": { "command": "uvx", "args": [ "healthcare-data-mcp" ] } } }