- Add N8N_MODE environment variable for n8n-specific behavior - Implement HTTP Streamable transport with multiple session support - Add protocol version endpoint (GET /mcp) for n8n compatibility - Support multiple initialize requests for stateless n8n clients - Add Docker configuration for n8n deployment - Add test script with persistent volume support - Add comprehensive unit tests for n8n mode - Fix session management to handle per-request transport pattern BREAKING CHANGE: Server now creates new transport for each initialize request when running in n8n mode to support n8n's stateless client architecture 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
71 lines
1.8 KiB
YAML
71 lines
1.8 KiB
YAML
version: '3.8'
|
|
|
|
services:
|
|
# n8n workflow automation
|
|
n8n:
|
|
image: n8nio/n8n:latest
|
|
container_name: n8n
|
|
restart: unless-stopped
|
|
ports:
|
|
- "${N8N_PORT:-5678}:5678"
|
|
environment:
|
|
- N8N_BASIC_AUTH_ACTIVE=${N8N_BASIC_AUTH_ACTIVE:-true}
|
|
- N8N_BASIC_AUTH_USER=${N8N_BASIC_AUTH_USER:-admin}
|
|
- N8N_BASIC_AUTH_PASSWORD=${N8N_BASIC_AUTH_PASSWORD:-password}
|
|
- N8N_HOST=${N8N_HOST:-localhost}
|
|
- N8N_PORT=5678
|
|
- N8N_PROTOCOL=${N8N_PROTOCOL:-http}
|
|
- WEBHOOK_URL=${N8N_WEBHOOK_URL:-http://localhost:5678/}
|
|
- N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
|
|
volumes:
|
|
- n8n_data:/home/node/.n8n
|
|
networks:
|
|
- n8n-network
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:5678/healthz"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 30s
|
|
|
|
# n8n-mcp server for AI assistance
|
|
n8n-mcp:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile.n8n
|
|
image: ghcr.io/${GITHUB_REPOSITORY:-czlonkowski/n8n-mcp}/n8n-mcp:${VERSION:-latest}
|
|
container_name: n8n-mcp
|
|
restart: unless-stopped
|
|
ports:
|
|
- "${MCP_PORT:-3000}:3000"
|
|
environment:
|
|
- NODE_ENV=production
|
|
- N8N_MODE=true
|
|
- N8N_API_URL=http://n8n:5678
|
|
- N8N_API_KEY=${N8N_API_KEY}
|
|
- MCP_AUTH_TOKEN=${MCP_AUTH_TOKEN}
|
|
- LOG_LEVEL=${LOG_LEVEL:-info}
|
|
volumes:
|
|
- ./data:/app/data:ro
|
|
- mcp_logs:/app/logs
|
|
networks:
|
|
- n8n-network
|
|
depends_on:
|
|
n8n:
|
|
condition: service_healthy
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 40s
|
|
|
|
volumes:
|
|
n8n_data:
|
|
driver: local
|
|
mcp_logs:
|
|
driver: local
|
|
|
|
networks:
|
|
n8n-network:
|
|
driver: bridge |