MCP Server Change and Health Monitor
Last updated November 6, 2026
Watch MCP servers: one row per server saying whether it answered, how fast, what tools it exposes now, and what changed since the last run, with breaking changes marked. Takes HTTP endpoints, npm packages, or registry search terms.
Features
- HTTP endpoints, npm packages, or official MCP Registry search terms.
- Status, answer time, and server version per server.
- Tools added, removed, or changed since the last run, marked breaking, warning, or info.
- Saved snapshots, so a scheduled run computes changes with no extra input.
- Pay per event: Server check at $0.005.
Input
server_urlsarrayoptionalHTTP endpoints of MCP servers. Streamable HTTP is tried first, then the older HTTP plus SSE transport.
npm_packagesarrayoptionalnpm package names, optionally with a version, such as @modelcontextprotocol/server-everything. Each is installed and started inside your run. The code in a package you list runs in your run, so list only packages you trust. No environment variables are passed to it.
registry_searcharrayoptionalSearch terms for the official MCP Registry. The HTTP endpoints of matching servers are checked. Packages found this way are listed but never run, because running code picked by a keyword is not safe.
max_serversstringoptionalMost servers to check per registry search term, up to 200. Default 25.
snapshot_keystringoptionalName of the memory that holds the last run's results, so a scheduled run finds changes on its own. Use a different name per list. Default default.
previous_snapshotstringoptionalOptional. The JSON of a SNAPSHOT record from an earlier run, or an https link to that record. It takes the place of the saved snapshot for this run.
timeout_secondsstringoptionalHow long one request to a server may take before it counts as no answer, 3 to 60. Default 20. A package gets 60 more seconds to install.
include_resources_promptsstringoptionalAlso list the server's resources and prompts and report what changed in them. Default true.
auth_headersstringoptionalOptional, for servers you are allowed to check. JSON keyed by site, for example {"https://mcp.example.com":{"Authorization":"Bearer abc"}}. Each header goes only to its own site. Encrypted by Apify, never logged, never saved in a snapshot.
max_charge_usdstringoptionalOptional. The run stops before a charge that would pass this amount. Free rows are always returned.
Output schema
{
"row_type": "string",
"server": "string",
"source": "string",
"registry_name": "string",
"status": "string",
"change_status": "string",
"transport": "string",
"latency_ms": "integer",
"list_latency_ms": "integer",
"http_status": "integer",
"server_name": "string",
"server_version": "string",
"protocol_version": "string",
"tool_count": "integer",
"resource_count": "integer",
"prompt_count": "integer",
"catalog_hash": "string",
"tools": "array",
"changes": "array",
"change_count": "integer",
"breaking_count": "integer",
"previous_checked_at": "string",
"last_up_at": "string",
"down_since": "string",
"server_count": "integer",
"skipped_packages": "array",
"checked_at": "string",
"row_status": "string",
"error_reason": "string",
"billable_events_json": "string",
"scraped_at": "string"
}Pricing
| Event | Free plan price |
|---|---|
| Server check | $0.005 |
| Package check | $0.02 |
| Actor Start | $0.002 |
Pay per event on the Apify platform. Paid Apify plans pay less per event. No subscription, no seat license.
On the Apify free plan the actor stops at $1.50 of charges a month, about 300 server checks. Any paid Apify plan removes the cap.
Limits
- The first run sets the baseline. Changes appear from the second run.
- It lists what a server exposes. It does not call tools, so it cannot tell whether a tool works.
- A server that shows a different catalog to each visitor, or changes its text per session, shows as changed. Read changes to see what moved.
- A package cannot receive environment variables or arguments in this version, so one that needs a key or a path to start reads as down.
- The older HTTP plus SSE transport was tested on fixtures only; no public server using it answered during the build.
- Up to 500 URLs, 25 packages, and 10 registry terms per run, with up to 200 servers per term. A list of more than 8 MB of snapshot keeps hashes only, so changes name the tool but not the old text.
- Answer time is measured from Apify's network in one place, so it is not a global uptime reading.