feat: add /health endpoint and switch to Streamable HTTP transport
All checks were successful
Build and Push Komodo MCP Docker Image / build (push) Successful in 14s

- Switch from legacy SSE transport (sse_app) to Streamable HTTP (http_app)
  - Fixes 405 Method Not Allowed for MCP clients like Gemini CLI
  - MCP endpoint now at /mcp (POST) instead of /sse (GET)

- Add /health endpoint that bypasses MCP_ALLOWED_HOSTS validation
  - Returns {"status": "ok"} (200) or {"status": "degraded"} (503)
  - Enables Docker health checks without exposing to external hosts

- Add curl to Docker image for health checks
- Add healthcheck config to docker-compose files
- Add test-health and test-mcp Makefile targets
- Update documentation
This commit is contained in:
Ben
2025-12-20 22:30:56 +00:00
parent 0ecf6880a1
commit bf80ae577e
7 changed files with 76 additions and 12 deletions

View File

@@ -45,14 +45,22 @@ services:
- KOMODO_URL=https://komodo.example.com
- KOMODO_API_KEY=your-key
- KOMODO_API_SECRET=your-secret
- MCP_ALLOWED_HOSTS=komodo-mcp.example.io,localhost:*
- MCP_ALLOWED_HOSTS=komodo-mcp.example.io
ports:
- "8000:8000"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
interval: 30s
timeout: 10s
retries: 3
```
### Connect MCP Client
### Endpoints
SSE endpoint: `https://your-host/sse`
| Endpoint | Method | Description |
|----------|--------|-------------|
| `/mcp` | POST | MCP protocol endpoint |
| `/health` | GET | Health check (bypasses `MCP_ALLOWED_HOSTS`) |
## Local Development
@@ -67,12 +75,12 @@ make dev
# Test
make logs
make test-sse
make test-mcp
make stop
```
## Tech Stack
- Python 3.11+ / FastMCP / httpx
- SSE transport / uvicorn
- Streamable HTTP transport / uvicorn
- Docker with multi-stage build