---
title: Health Checks
---


## Health checks

Apollo MCP Server provides health check endpoints for monitoring server health and readiness. This feature is useful for load balancers, container orchestrators, and monitoring systems.

### Configuration

Health checks are only available when using the `streamable_http` transport and must be explicitly enabled:

```yaml title="Example health check configuration"
transport:
  type: streamable_http
  address: 127.0.0.1
  port: 8000
health_check:
  enabled: true
  path: /health
  readiness:
    allowed: 50
    interval:
      sampling: 10s
      unready: 30s
```

### Endpoints

The health check provides different responses based on query parameters:

| Endpoint            | Description        | Response                                                         |
| :------------------ | :----------------- | :--------------------------------------------------------------- |
| `GET /health`       | Basic health check | Always returns `{"status": "UP"}`                                |
| `GET /health?live`  | Liveness check     | Returns `{"status": "UP"}` if server is alive                    |
| `GET /health?ready` | Readiness check    | Returns `{"status": "UP"}` if server is ready to handle requests |

### Probes

The server tracks failed requests and automatically marks itself as unready if too many failures occur within a sampling interval:

- **Sampling interval**: How often the server checks the rejection count (default: 5 seconds)
- **Allowed rejections**: Maximum failures allowed before becoming unready (default: 100)
- **Recovery time**: How long to wait before attempting to recover (default: 2x sampling interval)

When the server becomes unready:

- The `/health?ready` endpoint returns HTTP 503 with `{"status": "DOWN"}`
- After the recovery period, the rejection counter resets and the server becomes ready again

This allows external systems to automatically route traffic away from unhealthy servers and back when they recover.
