Skip to main content
GET
The health endpoint returns the runtime state of GetMCP and its dependencies. It’s public — no API key, nonce, or login required — so you can wire it into UptimeRobot, Pingdom, status pages, Kubernetes liveness probes, or whatever monitoring tool you use. It’s rate-limited to 60 requests per minute per IP to discourage abuse, and emits Cache-Control: no-store so monitors always read fresh state.

Authentication

None. The endpoint deliberately exposes only non-sensitive runtime data — no license keys, no API tokens, no server credentials.

Response Body

string
Overall health: ok, degraded, or fail. Aggregated from the per-check statuses below.
string
GetMCP plugin version (matches getmcp.php header).
string
Internal schema version. Bumped on each migration.
object
Per-dependency status. Each check has its own status (ok | warn | fail) plus check-specific extras like latency_ms or count.
integer
Seconds since the plugin was first activated on this site (or since the install was first observed by the health endpoint, whichever is earlier).
string
ISO 8601 timestamp when the response was generated.

Status Aggregation

The top-level status rolls up from the per-check statuses: Pick the right HTTP-status interpretation based on your monitor:
  • Strict probes (Kubernetes, AWS ALB) — treat 200 as healthy, anything else as down. degraded will still show as up, which is usually correct because the API works but something deserves attention.
  • Status pages (Statuspage, Better Uptime) — parse the JSON body and surface status directly so you can show “degraded” without flipping to red.

Status Codes


Built-in Checks


Rate Limiting

60 requests per minute per IP, evaluated against a sliding-window transient. Exceeded requests get:
The IP is resolved in this order:
  1. CF-Connecting-IP (set by Cloudflare)
  2. X-Forwarded-For (set by reverse proxies)
  3. X-Real-IP
  4. REMOTE_ADDR
If none of these resolve to a valid IP the rate limit fails open (the request is allowed) so requests behind aggressive proxies aren’t blackholed.

This endpoint is intentionally lightweight — it does not run the deeper “is every active server’s MCP endpoint reachable” probe that lives behind POST /wp-json/getmcp/v1/settings/health-check (which is admin-only and runs parallel pings). Use health for liveness / external monitoring, and settings/health-check from the admin UI for an in-depth diagnostic.