MCP server for US nursing facility search and ownership lookup (NursingHomeDatabase).
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Inspect callable tools, capabilities, and parameters exposed to AI agents by Nursing Home Database.
search_facilitiesSearch facilities by name, geography, filters, or distance from a free-form address
get_facilityGet one facility by CMS provider number or site slug
get_facility_ownershipOwnership records for a facility
search_ownersSearch owners by name
get_ownerOwner portfolio by `web_owner` slug
get_data_freshnessDataset freshness metadata
Public documentation for the Nursing Home Database Model Context Protocol server. It exposes US skilled nursing facility search, detail, ownership, and owner portfolio data β including CMS nurse hours, turnover, and inspection scores β to AI assistants and other MCP clients.
Website: nursinghomedatabase.com
Contact: Contact page
| Transport | Streamable HTTP (JSON-RPC 2.0 over HTTPS) |
| URL | https://mcp.nursinghomedatabase.com/mcp |
| Auth | None required (public access) |
| Server name | nhd-mcp |
| Version | 1.4.0 |
Send a standard MCP session: initialize β notifications/initialized (optional; may receive HTTP 204) β tools/list β tools/call as needed.
| Tool | Purpose |
|---|---|
search_facilities | Finds certified SNFs near an address (or by name/city/state/ownership type) so you can shortlist more than three homes using hours, turnover, and inspection scores |
search_facilities_by_ownership | Same search, with CMS ownership type required (For profit / Non profit / Government, or an exact value from list_distinct_values) |
summarize_facilities | National or grouped stats (n, mean, min, max; optional median) for nurse hours, turnover, ratings, beds, fines. Prefer this over paging search_facilities |
get_facility | Opens one home by CMS provider number or site slug, with the same hours, turnover, inspection, beds, and penalty fields as search |
compare_facilities | Same schema for up to 25 CCNs/slugs β prefer this over looping get_facility (MCP is 60 req/min) |
get_facility_changes | Field-level diff of one home across two CMS monthly files. Defaults to the latest file versus the prior snapshot. Not owner names |
get_facility_ownership | Lists who owns a home and in what role |
search_owners | Finds nursing-home owners by name |
get_owner | Opens an ownerβs portfolio of certified SNFs |
list_file_dates | Lists CMS monthly snapshot dates in the database so you can look at a prior month |
list_distinct_values | Lists distinct CMS values and counts for a ProviderInfo field (ownership, state, sffstatus, chainname, β¦) |
get_data_freshness | Reports when the latest CMS file was published and how many rows it contains |
Exact inputSchema objects are returned in tools/list.
filedate)By default every lookup uses the latest CMS monthly file. To retrieve a prior month:
list_file_dates (returns current, filedates newest first, and known_gaps for unpublished months).filedate (YYYY-MM-DD or YYYY-MM) on search_facilities, search_facilities_by_ownership, summarize_facilities, compare_facilities, get_facility, get_facility_ownership, search_owners, get_owner, or list_distinct_values. get_facility_changes does not take filedate; pass from and to.CMS snapshots are stored as the first of the month (YYYY-MM-01). A value like 2026-07 or 2026-07-15 is normalized to 2026-07-01. Unknown dates return a validation error β call list_file_dates rather than guessing.
search_facilitiesFinds certified SNFs near an address so you can shortlist more than three homes using hours, turnover, and inspection scores. You can also search by name, city, state, or ZIP.
| Parameter | Type | Description |
|---|---|---|
q | string | Free-text facility name |
address | string | Origin address for distance search (e.g. 150 Corporate Woods Drive, Magnolia, TX 77354) |
city | string | City filter |
state | string | State filter |
zip | string | ZIP code filter |
radius_miles | number | Straight-line radius in miles; defaults to 25 when address is provided |
min_overall_rating | integer | Minimum CMS overall star rating (already on REST; also on this MCP tool) |
max_overall_rating | integer | Maximum CMS overall star rating (already on REST; also on this MCP tool) |
abuse_icon | string | Filter by CMS abuse icon (Y / N, true / false) (already on REST; also on this MCP tool) |
sffstatus | string | When set, keep homes that have a CMS Special Focus Facility (or candidate) status (already on REST; also on this MCP tool) |
ownership | string | CMS ownership type (ProviderInfo.ownership). Case-insensitive. Prefixes For profit, Non profit, and Government match that kind. Call list_distinct_values with field=ownership for the 13 exact values |
sort | string | Sort key (see Sort keys below) |
limit | integer | Max results |
offset | integer | Pagination offset |
filedate | string | Optional CMS monthly snapshot from list_file_dates (defaults to the latest month) |
If the supplied address cannot be resolved, the API returns an address-specific validation error.
search_facilities (each items[] row) and get_facility (facility) return the same richer object, so a shortlist does not require a detail call per home.
Identity, location, and CMS star ratings are included (provnum, web, provname, lbn, address, city, state, zip, latitude, longitude, phone, overall_rating, survey_rating, quality_rating, staffing_rating, public urls). Decision fields use CMS keys:
| Key | Meaning |
|---|---|
tothrd | Total nurse hours per resident per day (HPRD) |
rnhrd | RN hours per resident per day |
totalnumberofnursestaffhoursperresidentperdayontheweekend | Weekend total nurse HPRD |
registerednursehoursperresidentperdayontheweekend | Weekend RN HPRD |
totalnursingstaffturnover | Nursing staff turnover |
registerednurseturnover | RN turnover |
numberofadministratorswhohaveleftthenursinghome | Administrators who have left the nursing home |
weighted_all_cycles_score | Weighted health-inspection score (all cycles) |
bedcert | Certified beds |
restot | Residents in certified beds |
occupancy | Occupancy (residents / certified beds) |
fine_tot | Total fines (dollars) |
fine_cnt | Number of fines |
abuse_icon | CMS abuse icon |
sffstatus | Special Focus Facility status |
chain_id | Chain identifier |
chain_name | Chain name |
ownership | CMS ownership type (e.g. For profit - Corporation) |
oldsurvey | Flag (Y/N): most recent standard health inspection is more than two years old |
cycle_1_survey_date | Date of the most recent standard health inspection |
When search_facilities is called with address:
distance_miles is straight-line Haversine miles from that origin to the facility.distance is kept as an alias of the same number.These values are not driving minutes or road miles. For driving minutes, use maps.google_dir / maps.apple_dir on the row, or pass the coordinates to a mapping tool.
Pass sort on search_facilities (and on GET /api/v1/nh/facilities). Default is overall_rating (stars, descending) when sort is omitted. Use sort=distance for nearest-first when searching from an address.
sort value | Alias | Order |
|---|---|---|
overall_rating | Stars descending (higher better) | |
survey_rating | Stars descending | |
quality_rating | Stars descending | |
staffing_rating | Stars descending | |
distance | Miles ascending (nearest first) | |
tothrd | total_nurse_hours | Hours descending (higher better) |
totalnursingstaffturnover | nurse_turnover | Turnover ascending (lower better) |
weighted_all_cycles_score | survey_score | Inspection score ascending (lower better) |
search_facilities_by_ownershipSame result schema as search_facilities, with ownership required. Use this when the question is βfind government / nonprofit / for-profit homes in β¦β. Combine with state, city, zip, or address. Call list_distinct_values with field=ownership first for the exact CMS strings.
| Parameter | Type | Required | Description |
|---|---|---|---|
ownership | string | yes | CMS ownership type (prefix or exact value) |
state | string | no | Two-letter state |
city | string | no | City filter |
zip | string | no | ZIP filter |
address | string | no | Origin address for distance search |
filedate | string | no | CMS monthly snapshot from list_file_dates |
summarize_facilitiesAggregate numeric CMS ProviderInfo fields across certified SNFs. Prefer this over paging search_facilities for national or grouped stats (government vs private hours, state means, etc.). Means are facility-equal (not bed-weighted). Facilities missing a metric are excluded from that metricβs n/mean/min/max only β values are not imputed. Not causal. Not a substitute for get_facility on a named home.
Factual signals from GitHub, npm, and our automated checks β not a rating.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/nursing-home-database-2)<a href="https://allmcps.com/mcp/nursing-home-database-2"><img src="https://allmcps.com/api/badge/nursing-home-database-2?style=directory" alt="Nursing Home Database on AllMCPs" /></a>