# HTTP and Health Checks

> MCP, liveness, and readiness endpoints.

Canonical: https://keta1930.github.io/icml2026-mcp/en/docs/reference/health



| Path            | Method        | Purpose                                                    |
| --------------- | ------------- | ---------------------------------------------------------- |
| `/mcp`          | MCP transport | Streamable HTTP initialization, tools/list, and tools/call |
| `/health/live`  | GET           | Process liveness                                           |
| `/health/ready` | GET           | SQLite, manifest, and Milvus readiness                     |

## Why a browser gets HTTP 406 [#why-a-browser-gets-http-406]

`/mcp` is a Streamable HTTP protocol endpoint, not a web page. A browser GET normally returns HTTP 406 with `Client must accept text/event-stream`. Use an MCP client to connect and the health routes below for manual checks.

## Liveness [#liveness]

```bash
curl -fsS http://127.0.0.1:20441/health/live
```

HTTP 200 with `{"status":"ok"}` means the process is alive.

## Readiness [#readiness]

```bash
curl -fsS http://127.0.0.1:20441/health/ready
```

HTTP 200 with `{"status":"ready"}` means SQLite, the manifest, the corpus snapshot, and the Milvus collection agree. HTTP 503 means they are not ready. This check does not call DashScope.
