Nursing Home Database

com.nursinghomedatabasePublished by nursinghomedatabase.comOfficial publisherv1.0.1Updated Oct 25, 2026

MCP server for US nursing facility search and ownership lookup (NursingHomeDatabase).

VerifiedStreamable HTTPWeb executableLocation & LifestyleData & Analytics

Overview

AI-generated overview

A public remote MCP server that lets an assistant search, compare and summarize US certified skilled nursing facilities and their CMS ownership data.

What you can do
Search and filter certified nursing facilities by address, city, state, ZIP, ownership type, star rating, abuse flag or Special Focus status, with sorting and paging, and open one facility's full CMS detail record by provider number or slug. Compare up to 25 facilities side by side and compute national or grouped statistics (mean, min, max, optional median) for nurse hours, turnover, ratings, beds and fines. Look up who owns or manages a facility, search owners by name and open an owner's portfolio of facilities. Track field-level changes for one facility between two CMS monthly snapshots. List available CMS monthly snapshot dates and report data freshness, and list distinct CMS field values
When to use it
Useful when comparing or shortlisting nursing homes for a location, checking staffing hours, turnover, inspection scores, fines or abuse flags, researching ownership and chains, or tracking month-to-month changes in a facility's CMS data.
Requirements
A remote Streamable HTTP endpoint; no authentication, API keys or environment variables are declared. Network access to the endpoint is needed. Data comes from CMS monthly snapshots, and the server notes a limit of 60 requests per minute.
Before you install
Read-only lookups; the tools do not appear to write, send or delete data. Queries include addresses, cities and owner names, which are sent to the third-party service. Results are CMS-derived and the README warns that 0% or 100% turnover and near-zero nurse hours can be reporting artifacts, that means are facility-equal rather than bed-weighted, and that a facility missing from a snapshot is not evidence of closure.

Installation

In SourceWeft

  1. Open Nursing Home Database in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/com.nursinghomedatabase%2Fmcp/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "nursing-home-database": {
      "type": "http",
      "url": "https://mcp.nursinghomedatabase.com/mcp"
    }
  }
}

README

Nursing Home Database — MCP

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

MCP endpoint

TransportStreamable HTTP (JSON-RPC 2.0 over HTTPS)
URLhttps://mcp.nursinghomedatabase.com/mcp
AuthNone required (public access)
Server namenhd-mcp
Version1.4.0

Send a standard MCP session: initialize → notifications/initialized (optional; may receive HTTP 204) → tools/list → tools/call as needed.

Tools

ToolPurpose
search_facilitiesFinds 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_ownershipSame search, with CMS ownership type required (For profit / Non profit / Government, or an exact value from list_distinct_values)
summarize_facilitiesNational or grouped stats (n, mean, min, max; optional median) for nurse hours, turnover, ratings, beds, fines. Prefer this over paging search_facilities
get_facilityOpens one home by CMS provider number or site slug, with the same hours, turnover, inspection, beds, and penalty fields as search
compare_facilitiesSame schema for up to 25 CCNs/slugs — prefer this over looping get_facility (MCP is 60 req/min)
get_facility_changesField-level diff of one home across two CMS monthly files. Defaults to the latest file versus the prior snapshot. Not owner names
get_facility_ownershipLists who owns a home and in what role
search_ownersFinds nursing-home owners by name
get_ownerOpens an owner’s portfolio of certified SNFs
list_file_datesLists CMS monthly snapshot dates in the database so you can look at a prior month
list_distinct_valuesLists distinct CMS values and counts for a ProviderInfo field (ownership, state, sffstatus, chainname, …)
get_data_freshnessReports when the latest CMS file was published and how many rows it contains

Exact inputSchema objects are returned in tools/list.

Historical months (filedate)

By default every lookup uses the latest CMS monthly file. To retrieve a prior month:

  1. Call list_file_dates (returns current, filedates newest first, and known_gaps for unpublished months).
  2. Pass one of those dates as 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_facilities

Finds 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.

ParameterTypeDescription
qstringFree-text facility name
addressstringOrigin address for distance search (e.g. 150 Corporate Woods Drive, Magnolia, TX 77354)
citystringCity filter
statestringState filter
zipstringZIP code filter
radius_milesnumberStraight-line radius in miles; defaults to 25 when address is provided
min_overall_ratingintegerMinimum CMS overall star rating (already on REST; also on this MCP tool)
max_overall_ratingintegerMaximum CMS overall star rating (already on REST; also on this MCP tool)
abuse_iconstringFilter by CMS abuse icon (Y / N, true / false) (already on REST; also on this MCP tool)
sffstatusstringWhen set, keep homes that have a CMS Special Focus Facility (or candidate) status (already on REST; also on this MCP tool)
ownershipstringCMS 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
sortstringSort key (see Sort keys below)
limitintegerMax results
offsetintegerPagination offset
filedatestringOptional 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.

Facility payload (search and detail)

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:

KeyMeaning
tothrdTotal nurse hours per resident per day (HPRD)
rnhrdRN hours per resident per day
totalnumberofnursestaffhoursperresidentperdayontheweekendWeekend total nurse HPRD
registerednursehoursperresidentperdayontheweekendWeekend RN HPRD
totalnursingstaffturnoverNursing staff turnover
registerednurseturnoverRN turnover
numberofadministratorswhohaveleftthenursinghomeAdministrators who have left the nursing home
weighted_all_cycles_scoreWeighted health-inspection score (all cycles)
bedcertCertified beds
restotResidents in certified beds
occupancyOccupancy (residents / certified beds)
fine_totTotal fines (dollars)
fine_cntNumber of fines
abuse_iconCMS abuse icon
sffstatusSpecial Focus Facility status
chain_idChain identifier
chain_nameChain name
ownershipCMS ownership type (e.g. For profit - Corporation)
oldsurveyFlag (Y/N): most recent standard health inspection is more than two years old
cycle_1_survey_dateDate of the most recent standard health inspection

Distance (straight-line miles, not driving minutes)

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.

Sort keys

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 valueAliasOrder
overall_ratingStars descending (higher better)
survey_ratingStars descending
quality_ratingStars descending
staffing_ratingStars descending
distanceMiles ascending (nearest first)
tothrdtotal_nurse_hoursHours descending (higher better)
totalnursingstaffturnovernurse_turnoverTurnover ascending (lower better)
weighted_all_cycles_scoresurvey_scoreInspection score ascending (lower better)

search_facilities_by_ownership

Same 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.

ParameterTypeRequiredDescription
ownershipstringyesCMS ownership type (prefix or exact value)
statestringnoTwo-letter state
citystringnoCity filter
zipstringnoZIP filter
addressstringnoOrigin address for distance search
filedatestringnoCMS monthly snapshot from list_file_dates

summarize_facilities

Aggregate 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.

ParameterTypeRequiredDescription
metricsarray of stringsyes1–20 keys: tothrd, rnhrd, weekend_tothrd, weekend_rnhrd, totalnursingstaffturnover, registerednurseturnover, weighted_all_cycles_score, overall_rating, survey_rating, staffing_rating, quality_rating, bedcert, restot, fine_tot, fine_cnt, occupancy. Synonyms: total_nurse_hours, nurse_turnover, rn_turnover, survey_score
group_bystringnoownership, ownership_kind (Government / For profit / Non profit), state, overall_rating, staffing_rating, survey_rating, quality_rating, sffstatus, abuse_icon. Omit for one national (or filter-scoped) row
ownershipstringnoSame prefix/exact filter as search_facilities
statestringnoTwo-letter state
citystringnoRequires state
zipstringnoZIP filter
abuse_iconstringnoSame as search_facilities
sffstatusstringnoSame as search_facilities
min_overall_ratingintegerno1–5
max_overall_ratingintegerno1–5
include_medianbooleannoDefault false. When true, each stats object includes median
filedatestringnoCMS monthly snapshot from list_file_dates

REST: GET /api/v1/nh/facilities/summary?metrics=tothrd,rnhrd&group_by=ownership_kind&include_median=true

Response groups[] each have group_key, group_label, facilities_in_group, and stats keyed by canonical metric (n, mean, min, max, optional median, unit). facilities_in_scope is the filter-matched count; per-metric n is the non-null count in that group. Unknown metric keys return invalid_metric with the allowed list.

0% / 100% turnover and near-zero HPRD can be reporting artifacts.

list_distinct_values

Lists distinct CMS ProviderInfo values and row counts for a field in the active monthly snapshot. Omit field to see the allowed field catalog. field=city requires state.

ParameterTypeRequiredDescription
fieldstringnoownership, state, sffstatus, abuse_icon, certification, chainname, overall_rating, …
statestringnoTwo-letter state (required for city)
filedatestringnoCMS monthly snapshot from list_file_dates

compare_facilities

Same decision fields as search_facilities, for up to 25 CMS provider numbers or web slugs, on one snapshot. Ids past 25 are dropped. This is not a month-to-month diff; use get_facility_changes for that.

ParameterTypeRequiredDescription
idsarray of stringsyesCMS provider numbers or web slugs. Maximum 25
filedatestringnoCMS monthly snapshot from list_file_dates

get_facility

Opens one home by CMS provider number (provnum) or site slug. The facility object matches a search_facilities row (hours, turnover, inspection, beds, penalties, maps links).

ParameterTypeRequiredDescription
idstringyesProvider number or web slug
filedatestringnoCMS monthly snapshot from list_file_dates

get_facility_changes

Diff one home across two CMS monthly snapshots. Omit from and to to compare the latest file with the previous snapshot. changes is field-level: stars, nurse hours, turnover, weighted inspection score, the CMS abuse icon, Special Focus status, ownership type (for-profit / nonprofit / government, not the owner’s name), fines, beds, residents, and occupancy. A home missing from one of the two files is found.from or found.to false. That is not a closure.

ParameterTypeRequiredDescription
idstringyesCMS provider number or web slug
fromstringnoEarlier filedate (YYYY-MM-DD or YYYY-MM). Omit to use the snapshot before to
tostringnoLater filedate. Omit to use the latest CMS file

get_facility_ownership

Lists who owns a home and in what role.

ParameterTypeRequiredDescription
idstringyesProvider number or web slug
filedatestringnoCMS monthly snapshot from list_file_dates

search_owners

Finds nursing-home owners by name.

ParameterTypeRequiredDescription
qstringyesOwner name search term
limitintegernoMax results
offsetintegernoPagination offset
filedatestringnoCMS monthly snapshot from list_file_dates

get_owner

Opens an owner’s portfolio of certified SNFs by web_owner slug.

ParameterTypeRequiredDescription
web_ownerstringyesOwner slug identifier
filedatestringnoCMS monthly snapshot from list_file_dates

list_file_dates

Lists CMS monthly snapshot dates available in the database. No parameters. Returns current, filedates (newest first), and known_gaps for unpublished months.

get_data_freshness

Reports latest CMS source dataset dates and row counts. No parameters. For a prior month, call list_file_dates and pass filedate to the other tools.

MCP Registry

Listed in the official MCP Registry as com.nursinghomedatabase/mcp.

  • Registry manifest: server.json
  • Search: https://registry.modelcontextprotocol.io/v0.1/servers?search=com.nursinghomedatabase

REST API (same backend)

JSON discovery APIs are also available under the main site:

  • GET https://www.nursinghomedatabase.com/api/v1/nh/capabilities
  • GET https://www.nursinghomedatabase.com/api/v1/nh/file-dates
  • GET https://www.nursinghomedatabase.com/api/v1/nh/facilities?address=150+Corporate+Woods+Drive,+Magnolia,+TX+77354
  • GET https://www.nursinghomedatabase.com/api/v1/nh/facilities?address=150+Corporate+Woods+Drive,+Magnolia,+TX+77354&radius_miles=10&sort=distance
  • GET https://www.nursinghomedatabase.com/api/v1/nh/facilities?state=TX&min_overall_rating=4&sort=tothrd
  • GET https://www.nursinghomedatabase.com/api/v1/nh/facilities?state=TX&filedate=2026-07-01
  • GET https://www.nursinghomedatabase.com/api/v1/nh/field-values?field=ownership
  • GET https://www.nursinghomedatabase.com/api/v1/nh/facilities?state=TX&ownership=Non+profit
  • GET https://www.nursinghomedatabase.com/api/v1/nh/facilities/summary?metrics=tothrd,rnhrd,totalnursingstaffturnover&group_by=ownership_kind

REST callers can pass filedate=YYYY-MM-DD (or YYYY-MM) on facilities and owners endpoints the same way MCP tools do. min_overall_rating, max_overall_rating, abuse_icon, sffstatus, and ownership are query parameters on GET /api/v1/nh/facilities.

MCP and REST share the same underlying data layer.

Example: Cursor / IDE config

json
{  "mcpServers": {    "nursing-home-database": {      "type": "streamableHttp",      "url": "https://mcp.nursinghomedatabase.com/mcp"    }  }}

License and data

Data is derived from public CMS and related sources. Use is subject to the terms published on nursinghomedatabase.com.

Source: README.md at commit a391893

Tools

12

search_facilities

Find certified US skilled nursing facilities near an address or in a city. Filter by CMS ownership type (call list_distinct_values field=ownership first), star rating, abuse flag, high-performing icon, or Special Focus status. Returns ownership, ratings, nurse hours (HPRD), nurse/RN turnover, weighted inspection score, beds, fines, straight-line distance_miles, and maps deep-links. distance_miles is crow-flies, not drive time — use maps.google_dir / a mapping service for minutes.

Parametersqzipcitysortlimitstateoffsetaddressfiledateownershipsffstatusabuse_icon+4 more

search_facilities_by_ownership

Find certified US SNFs by CMS ownership type (ProviderInfo.ownership). Call list_distinct_values with field=ownership first. Same result schema as search_facilities; combine with state, city, ZIP, or address.

Parametersqzipcitysortlimitstateoffsetaddressfiledateownershiprequiredradius_milesmax_overall_rating+1 more

summarize_facilities

Aggregate numeric CMS ProviderInfo fields (n, mean, min, max; optional median) across certified SNFs. Prefer this over paging search_facilities for national or grouped stats. Call list_distinct_values for ownership catalogs; call list_file_dates for filedate. Facility-equal means — not bed-weighted. Missing values excluded per metric. Not causal. Not a substitute for get_facility on a named home. Rate limit 60 requests/minute.

Parameterszipcitystatemetricsrequiredfiledategroup_byownershipsffstatusabuse_iconicon_hi_perfinclude_medianmax_overall_rating+1 more

compare_facilities

Compare up to 25 certified skilled nursing facilities by CMS CCN or web slug. Returns the same decision fields as search_facilities (ratings, nurse hours, turnover, inspection score, beds, fines, maps) as a table. Prefer this over looping get_facility against the 60 requests/minute limit.

Parametersidsrequiredfiledate

get_facility_changes

Monitor one skilled nursing facility across two CMS monthly files. Defaults to latest vs the prior snapshot. Returns field-level diffs for stars, nurse hours, turnover, inspection score, abuse icon, high-performing icon, fines, and occupancy. Care Compare shows this month only — rerun after the next file.

Parametersidrequiredtofrom

get_facility

Get one certified skilled nursing facility by CMS CCN (provnum) or web slug. Returns the same decision fields as search_facilities: ratings, nurse hours (HPRD), nurse/RN turnover, weighted inspection score, beds, fines, abuse/SFF flags, and maps deep-links. Use data_as_of as the CMS vintage; do not invent ratings or hours that are missing. Defaults to the latest monthly snapshot; pass filedate from list_file_dates for a prior month.

Parametersidrequiredfiledate

get_facility_ownership

Get CMS ownership records for one facility — who owns or manages the building. Defaults to the latest CMS monthly snapshot; pass filedate from list_file_dates to query a prior month.

Parametersidrequiredfiledate

search_owners

Search nursing-home owners by name. Defaults to the latest CMS monthly snapshot; pass filedate from list_file_dates to query a prior month.

Parametersqrequiredlimitoffsetfiledate

get_owner

Get an owner portfolio by web_owner slug, including facility names, locations, and overall stars. Defaults to the latest CMS monthly snapshot; pass filedate from list_file_dates to query a prior month.

Parametersfiledateweb_ownerrequired

list_file_dates

List CMS monthly snapshot dates available in the database (newest first), plus the current filedate and known unpublished months. Use a returned date as filedate on other tools to retrieve a prior month instead of the latest data.

Takes no parameters.

list_distinct_values

List distinct CMS ProviderInfo values and counts for a field. Omit field to see the catalog. Use field=ownership before search_facilities to get the 13 ownership types. city requires state.

Parametersfieldstatefiledate

get_data_freshness

Get latest source dataset dates and row counts. For prior months, call list_file_dates and pass filedate to other tools.

Takes no parameters.

Version history

1
  1. v1.0.1LatestSep 16, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.