PR Checks / hadolint (pull_request) Successful in 40s
PR Checks / build-test (pull_request) Successful in 3m19s
PR Checks / pytest (pull_request) Successful in 2m47s
Docker Build and Push / test (pull_request) Successful in 3m1s
Docker Build and Push / integration-test (pull_request) Successful in 3m24s
Docker Build and Push / build (pull_request) Successful in 3m4s
Current MCP clients (OpenCode, Claude, ...) only speak Streamable HTTP: they POST JSON-RPC to the configured URL, so a legacy SSE endpoint answers 405 Method Not Allowed and not a single tool can be reached. Run FastMCP's http_app (build_app()) under uvicorn instead of mcp.run(sse): the MCP endpoint is now /mcp, and the custom GET /health route keeps serving the Kubernetes probes. Add transport tests asserting /mcp and /health are exposed and /sse is gone.
32 lines
932 B
YAML
32 lines
932 B
YAML
services:
|
|
qdrant:
|
|
image: docker.io/qdrant/qdrant:latest
|
|
container_name: mcp_maildir_qdrant
|
|
ports:
|
|
- "127.0.0.1:6333:6333" # REST API
|
|
- "127.0.0.1:6334:6334" # gRPC API
|
|
volumes:
|
|
- ./qdrant_storage:/qdrant/storage:z
|
|
restart: unless-stopped
|
|
|
|
mcp-server:
|
|
build:
|
|
context: .
|
|
dockerfile: pkg/Dockerfile
|
|
container_name: mcp_maildir_server
|
|
ports:
|
|
- "127.0.0.1:8000:8000" # Expose the MCP Streamable HTTP server (/mcp)
|
|
env_file:
|
|
- .env
|
|
environment:
|
|
# Override Qdrant URL to point to the docker-compose service
|
|
- QDRANT_URL=http://qdrant:6333
|
|
volumes:
|
|
# Mount the source code for hot-reloading (optional)
|
|
- ./src:/app/src:ro,z
|
|
# Mount the maildir dump as read-only.
|
|
# Ensure you set MAILDIR_PATH in your .env file
|
|
- ${MAILDIR_PATH:-./maildir_dump}:/path/to/your/maildir/dump:ro,z
|
|
depends_on:
|
|
- qdrant
|