# Health probes

Source: https://dbmcp.haymon.ai/features/health-probes/

Liveness and readiness endpoints of the HTTP transport

The `http` transport serves two `GET` endpoints for Kubernetes probes, load balancers, and gateways. The MCP spec defines no health method, so they live outside the protocol:

| Path | Checks | Response |
|------|--------|----------|
| `/healthz` | The process serves HTTP requests (liveness) | `200 ok` |
| `/readyz` | The default database answers `SELECT 1` within 2 seconds (readiness) | `200 ok`, or `503 unavailable` |

Both skip the bearer token and the `Origin`/`Host` allowlists, so probes need no credentials. Bodies never carry error details. Under stdio neither endpoint exists.

`/readyz` caps its database load: concurrent probes share one check, and its result answers every probe for one second. It returns `503` once shutdown starts. The default database is `database.name`; on PostgreSQL without a name it is the database named after `database.user`, so set `database.name` if that database does not exist. While every pooled connection is busy serving queries, the database counts as ready. Point Kubernetes `livenessProbe` and `readinessProbe` `httpGet` checks at these paths on the HTTP port.