FastMCP defaults to /mcp but Claude.ai sends requests to /. Add MCP_PATH env var to configure the endpoint path, set to / in docker-compose for the connector subdomain.
61 lines
1.9 KiB
YAML
61 lines
1.9 KiB
YAML
services:
|
|
docs:
|
|
build:
|
|
context: ./docs
|
|
target: ${APP_ENV:-dev}
|
|
args:
|
|
- DOMAIN=${DOMAIN:-mcnoaa-tides.l.warehack.ing}
|
|
restart: unless-stopped
|
|
environment:
|
|
- DOMAIN=${DOMAIN:-mcnoaa-tides.l.warehack.ing}
|
|
- VITE_HMR_HOST=${VITE_HMR_HOST:-}
|
|
- ASTRO_TELEMETRY_DISABLED=1
|
|
volumes:
|
|
# Dev mode: mount source for hot reload
|
|
- ./docs/src:/app/src:ro
|
|
- ./docs/public:/app/public:ro
|
|
- ./docs/astro.config.mjs:/app/astro.config.mjs:ro
|
|
networks:
|
|
- caddy
|
|
labels:
|
|
caddy: ${DOMAIN:-mcnoaa-tides.l.warehack.ing}
|
|
caddy.reverse_proxy: "{{upstreams 4321}}"
|
|
# WebSocket/HMR streaming support
|
|
caddy.reverse_proxy.flush_interval: "-1"
|
|
caddy.reverse_proxy.transport: "http"
|
|
caddy.reverse_proxy.transport.read_timeout: "0"
|
|
caddy.reverse_proxy.transport.write_timeout: "0"
|
|
caddy.reverse_proxy.transport.keepalive: "5m"
|
|
caddy.reverse_proxy.transport.keepalive_idle_conns: "10"
|
|
caddy.reverse_proxy.stream_timeout: "24h"
|
|
caddy.reverse_proxy.stream_close_delay: "5s"
|
|
|
|
mcp:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile.mcp
|
|
restart: unless-stopped
|
|
environment:
|
|
- MCP_TRANSPORT=streamable-http
|
|
- MCP_HOST=0.0.0.0
|
|
- MCP_PORT=8000
|
|
- MCP_PATH=/
|
|
networks:
|
|
- caddy
|
|
labels:
|
|
caddy: mcp.${DOMAIN:-mcnoaa-tides.l.warehack.ing}
|
|
caddy.reverse_proxy: "{{upstreams 8000}}"
|
|
# SSE streaming support for MCP server→client messages
|
|
caddy.reverse_proxy.flush_interval: "-1"
|
|
caddy.reverse_proxy.transport: "http"
|
|
caddy.reverse_proxy.transport.read_timeout: "0"
|
|
caddy.reverse_proxy.transport.write_timeout: "0"
|
|
caddy.reverse_proxy.transport.keepalive: "5m"
|
|
caddy.reverse_proxy.transport.keepalive_idle_conns: "10"
|
|
caddy.reverse_proxy.stream_timeout: "24h"
|
|
caddy.reverse_proxy.stream_close_delay: "5s"
|
|
|
|
networks:
|
|
caddy:
|
|
external: true
|