Koskamo

Nursing Home Database MCP

An official MCP server providing access to CMS data for US Medicare-certified skilled nursing facilities. It enables agents to search for facilities by location or ownership, retrieve detailed metrics like nurse hours and inspection scores, compare up to 25 homes, and track data changes over time without requiring authentication.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Nursing Home Database MCP logo, by NursingHomeDatabase.comVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-06Operated by NursingHomeDatabase.com
MCP endpoint (Streamable HTTP)
https://mcp.nursinghomedatabase.com/mcp
Vendor documentation

What its tools do

12 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

12 of 12 have a description · 12 of 12 declare behavior hints · 3 of 10 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to nursinghomedatabase.com ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Search for certified US skilled nursing facilities by name, city, state, or ZIP code
  • Retrieve detailed facility metrics including nurse hours, turnover, and inspection scores
  • Compare up to 25 facilities side-by-side using their CMS CCN identifiers
  • Identify facility ownership and management entities

Source and maintenance

Vendor evidenceRegistry 1.0.1
Maintenance checked

Protocol and capabilities

Server
nhd-mcp 1.4.0
MCP protocol negotiated in check
2025-11-25
Tools
12 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {}
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Nursing Home Database covers every Medicare and Medicaid certified skilled nursing facility in the United States, with a stored monthly history. It answers who operates a home, what else that owner runs, what changed between months in ratings, staffing, turnover, inspections, and fines, and how homes within a straight-line radius compare. A facility is identified by its CMS certification number or the site slug. Results default to the latest monthly file. Earlier months are separate snapshots. An address used for a radius search is geocoded on the server. Figures are informational and are not medical, legal, or placement advice.

Tools

12 advertised

search_facilities — Search facilities
Advertised by the server during the last successful anonymous check.
Advertised read-only

Find certified US skilled nursing facilities near an address or in a city. Filter by ownership type, 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 map links. distance_miles is straight-line miles, not drive time. An address is geocoded on the server.

search_facilities input schema
{
  "type": "object",
  "properties": {
    "q": {
      "type": "string"
    },
    "zip": {
      "type": "string"
    },
    "city": {
      "type": "string"
    },
    "sort": {
      "enum": [
        "overall_rating",
        "survey_rating",
        "quality_rating",
        "staffing_rating",
        "distance",
        "tothrd",
        "total_nurse_hours",
        "totalnursingstaffturnover",
        "nurse_turnover",
        "weighted_all_cycles_score",
        "survey_score"
      ],
      "type": "string",
      "description": "Sort key: overall_rating (default, desc), survey_rating, quality_rating, staffing_rating, distance (asc, straight-line miles), tothrd or total_nurse_hours (desc), totalnursingstaffturnover or nurse_turnover (asc), weighted_all_cycles_score or survey_score (asc). Unknown values fall back to overall_rating."
    },
    "limit": {
      "type": "integer"
    },
    "state": {
      "type": "string"
    },
    "offset": {
      "type": "integer"
    },
    "address": {
      "type": "string",
      "description": "Street address with city and state, or a street and ZIP. Geocoded by the Census Bureau as the distance origin. A city, place name, or ZIP alone will not match."
    },
    "filedate": {
      "type": "string",
      "description": "Optional monthly snapshot (YYYY-MM-DD or YYYY-MM). Defaults to the latest loaded file."
    },
    "ownership": {
      "type": "string",
      "description": "Ownership type from ProviderInfo.ownership. Case-insensitive. Prefixes For profit, Non profit, and Government match that kind. Exact labels look like \"For profit - Limited Liability company\"."
    },
    "sffstatus": {
      "type": "string",
      "description": "When truthy, keep only Special Focus Facility or candidate homes (non-empty sffstatus)."
    },
    "abuse_icon": {
      "type": "string",
      "description": "CMS abuse icon filter. Y/yes/true/1 keeps only flagged homes; other values keep homes without the flag."
    },
    "icon_hi_perf": {
      "type": "string",
      "description": "CMS high-performing icon (Risk-Based Survey eligibility). Y/yes/true/1 keeps only homes with the icon; other values keep homes without it. Point-in-time, not a permanent award."
    },
    "radius_miles": {
      "type": "number"
    },
    "max_overall_rating": {
      "type": "integer",
      "description": "Maximum CMS overall star rating (1-5)."
    },
    "min_overall_rating": {
      "type": "integer",
      "description": "Minimum CMS overall star rating (1-5)."
    }
  }
}
search_facilities annotations
{
  "title": "Search facilities",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
search_facilities_by_ownership — Search nursing homes by ownership type
Advertised by the server during the last successful anonymous check.
Advertised read-only

Find certified US nursing homes by ownership type (ProviderInfo.ownership). The result rows match a facility search. Combine with state, city, ZIP, or address.

search_facilities_by_ownership input schema
{
  "type": "object",
  "required": [
    "ownership"
  ],
  "properties": {
    "q": {
      "type": "string"
    },
    "zip": {
      "type": "string"
    },
    "city": {
      "type": "string"
    },
    "sort": {
      "enum": [
        "overall_rating",
        "survey_rating",
        "quality_rating",
        "staffing_rating",
        "distance",
        "tothrd",
        "total_nurse_hours",
        "totalnursingstaffturnover",
        "nurse_turnover",
        "weighted_all_cycles_score",
        "survey_score"
      ],
      "type": "string"
    },
    "limit": {
      "type": "integer"
    },
    "state": {
      "type": "string"
    },
    "offset": {
      "type": "integer"
    },
    "address": {
      "type": "string",
      "description": "Street address with city and state, or a street and ZIP. Geocoded by the Census Bureau as the distance origin. A city, place name, or ZIP alone will not match."
    },
    "filedate": {
      "type": "string",
      "description": "Optional monthly snapshot (YYYY-MM-DD or YYYY-MM). Defaults to the latest loaded file."
    },
    "ownership": {
      "type": "string",
      "description": "CMS ownership type. Case-insensitive. Prefixes For profit, Non profit, and Government match that kind. Exact values from list_distinct_values field=ownership, e.g. \"For profit - Limited Liability company\"."
    },
    "radius_miles": {
      "type": "number"
    },
    "max_overall_rating": {
      "type": "integer"
    },
    "min_overall_rating": {
      "type": "integer"
    }
  }
}
search_facilities_by_ownership annotations
{
  "title": "Search nursing homes by ownership type",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
summarize_facilities — Summarize nursing home statistics
Advertised by the server during the last successful anonymous check.
Advertised read-only

Aggregate numeric ProviderInfo fields (n, mean, min, max; optional median) across certified nursing homes. Facility-equal means, not bed-weighted. Missing values are excluded per metric. Not causal. A named home still needs a single-facility lookup.

summarize_facilities input schema
{
  "type": "object",
  "required": [
    "metrics"
  ],
  "properties": {
    "zip": {
      "type": "string"
    },
    "city": {
      "type": "string",
      "description": "City filter. Requires state."
    },
    "state": {
      "type": "string"
    },
    "metrics": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 20,
      "minItems": 1,
      "description": "Metric 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 (and documented synonyms)."
    },
    "filedate": {
      "type": "string",
      "description": "Optional monthly snapshot (YYYY-MM-DD or YYYY-MM). Defaults to the latest loaded file."
    },
    "group_by": {
      "enum": [
        "ownership",
        "ownership_kind",
        "state",
        "overall_rating",
        "staffing_rating",
        "survey_rating",
        "quality_rating",
        "sffstatus",
        "abuse_icon",
        "icon_hi_perf"
      ],
      "type": "string",
      "description": "Omit for one national (or filter-scoped) row per metric. ownership_kind is Government | For profit | Non profit."
    },
    "ownership": {
      "type": "string",
      "description": "CMS ownership type. Prefixes For profit, Non profit, and Government match that kind. Applied before aggregation."
    },
    "sffstatus": {
      "type": "string"
    },
    "abuse_icon": {
      "type": "string"
    },
    "icon_hi_perf": {
      "type": "string",
      "description": "CMS high-performing icon. Y keeps homes currently eligible for a Risk-Based Survey."
    },
    "include_median": {
      "type": "boolean",
      "description": "When true, each stats object also includes median. Default false."
    },
    "max_overall_rating": {
      "type": "integer"
    },
    "min_overall_rating": {
      "type": "integer"
    }
  }
}
summarize_facilities annotations
{
  "title": "Summarize nursing home statistics",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
compare_facilities — Compare facilities
Advertised by the server during the last successful anonymous check.
Advertised read-only

Compare up to 25 certified skilled nursing facilities by CMS CCN or web slug. Returns ratings, nurse hours, turnover, inspection score, beds, fines, and map links in one table.

compare_facilities input schema
{
  "type": "object",
  "required": [
    "ids"
  ],
  "properties": {
    "ids": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "CMS CCNs (provnum) or web slugs. Max 25."
    },
    "filedate": {
      "type": "string",
      "description": "Optional monthly snapshot (YYYY-MM-DD or YYYY-MM). Defaults to the latest loaded file."
    }
  }
}
compare_facilities annotations
{
  "title": "Compare facilities",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_facility_changes — Show what changed
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

get_facility_changes input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "CMS CCN (provnum) or web slug"
    },
    "to": {
      "type": "string",
      "description": "Later filedate. Omit to use the latest CMS file."
    },
    "from": {
      "type": "string",
      "description": "Earlier filedate YYYY-MM-DD. Omit to use the snapshot before to."
    }
  }
}
get_facility_changes annotations
{
  "title": "Show what changed",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_facility — Get nursing home details
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

get_facility input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string"
    },
    "filedate": {
      "type": "string",
      "description": "Optional monthly snapshot (YYYY-MM-DD or YYYY-MM). Defaults to the latest loaded file."
    }
  }
}
get_facility annotations
{
  "title": "Get nursing home details",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_facility_ownership — Get nursing home owners
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

get_facility_ownership input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string"
    },
    "filedate": {
      "type": "string",
      "description": "Optional monthly snapshot (YYYY-MM-DD or YYYY-MM). Defaults to the latest loaded file."
    }
  }
}
get_facility_ownership annotations
{
  "title": "Get nursing home owners",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
search_owners — Search nursing home owners
Advertised by the server during the last successful anonymous check.
Advertised read-only

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

search_owners input schema
{
  "type": "object",
  "required": [
    "q"
  ],
  "properties": {
    "q": {
      "type": "string"
    },
    "limit": {
      "type": "integer"
    },
    "offset": {
      "type": "integer"
    },
    "filedate": {
      "type": "string",
      "description": "Optional monthly snapshot (YYYY-MM-DD or YYYY-MM). Defaults to the latest loaded file."
    }
  }
}
search_owners annotations
{
  "title": "Search nursing home owners",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_owner — Get an owner portfolio
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

get_owner input schema
{
  "type": "object",
  "required": [
    "web_owner"
  ],
  "properties": {
    "filedate": {
      "type": "string",
      "description": "Optional monthly snapshot (YYYY-MM-DD or YYYY-MM). Defaults to the latest loaded file."
    },
    "web_owner": {
      "type": "string"
    }
  }
}
get_owner annotations
{
  "title": "Get an owner portfolio",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_file_dates — List snapshot dates
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

list_file_dates input schema
{
  "type": "object",
  "properties": {}
}
list_file_dates annotations
{
  "title": "List snapshot dates",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_distinct_values — List filter values
Advertised by the server during the last successful anonymous check.
Advertised read-only

List distinct ProviderInfo values and counts for a field. Omit field to see the catalog. ownership returns the ownership labels. city requires state.

list_distinct_values input schema
{
  "type": "object",
  "properties": {
    "field": {
      "enum": [
        "ownership",
        "state",
        "city",
        "sffstatus",
        "abuse_icon",
        "icon_hi_perf",
        "certification",
        "inhosp",
        "ccrc_facil",
        "overall_rating",
        "survey_rating",
        "quality_rating",
        "staffing_rating",
        "oldsurvey",
        "chow_last_12mos",
        "chainname",
        "chain_name",
        "chainid",
        "chain_id"
      ],
      "type": "string",
      "description": "ProviderInfo field. Omit to list allowed fields. ownership returns the ownership labels."
    },
    "state": {
      "type": "string",
      "description": "Optional two-letter state. Required when field=city."
    },
    "filedate": {
      "type": "string",
      "description": "Optional monthly snapshot (YYYY-MM-DD or YYYY-MM). Defaults to the latest loaded file."
    }
  }
}
list_distinct_values annotations
{
  "title": "List filter values",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_data_freshness — Check data freshness
Advertised by the server during the last successful anonymous check.
Advertised read-only

Latest source dataset dates and row counts for the nursing-home files.

get_data_freshness input schema
{
  "type": "object",
  "properties": {}
}
get_data_freshness annotations
{
  "title": "Check data freshness",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (1 of 1 answered).

  1. 2026-11-07: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
418 ms
95th percentile latency
418 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 418 ms · metadata changed · 12 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http nursing-home-database-mcp https://mcp.nursinghomedatabase.com/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add nursing-home-database-mcp --url https://mcp.nursinghomedatabase.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable nursing-home-database-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "nursing-home-database-mcp": {
      "url": "https://mcp.nursinghomedatabase.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "nursing-home-database-mcp": {
      "type": "streamableHttp",
      "url": "https://mcp.nursinghomedatabase.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start nursing-home-database-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "nursing-home-database-mcp": {
      "type": "http",
      "url": "https://mcp.nursinghomedatabase.com/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http nursing-home-database-mcp https://mcp.nursinghomedatabase.com/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://mcp.nursinghomedatabase.com/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "nursing-home-database-mcp": {
      "serverUrl": "https://mcp.nursinghomedatabase.com/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Nursing Home Database MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run Nursing Home Database MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing