mcp-servers/docker-compose.yml

269 lines
7.6 KiB
YAML
Raw Normal View History

2026-03-31 15:33:22 -04:00
networks:
mcpnet:
driver: bridge
services:
gateway:
build:
context: ./gateway-proxy
dockerfile: Dockerfile
container_name: mcp-gateway
restart: unless-stopped
ports:
- "${GATEWAY_PORT:-4444}:4444"
volumes:
- gateway-data:/data
environment:
- PORT=4444
- OAUTH_ISSUER_URL=${OAUTH_ISSUER_URL}
- OAUTH_PASSWORD=${OAUTH_PASSWORD}
- OAUTH_ACCESS_TOKEN_TTL=${OAUTH_ACCESS_TOKEN_TTL:-3600}
- OAUTH_REFRESH_TOKEN_TTL=${OAUTH_REFRESH_TOKEN_TTL:-2592000}
- MCP_BACKEND_ERPNEXT=http://mcp-erpnext:32802/mcp
- MCP_BACKEND_TRUENAS=http://mcp-truenas:8100/mcp
- MCP_BACKEND_HOMEASSISTANT=http://mcp-homeassistant:8200/mcp
- MCP_BACKEND_WAVE=http://mcp-wave:8300/mcp
- MCP_BACKEND_LINKEDIN=http://mcp-linkedin:8500/mcp
- MCP_BACKEND_FORGEJO=http://mcp-forgejo:8400/mcp
- MCP_BACKEND_SSH=http://mcp-ssh:8600/mcp
- MCP_BACKEND_MEMORY_BANK=http://mcp-memory-bank:8700/mcp
- MCP_BACKEND_PUPPETEER=http://mcp-puppeteer:8800/mcp
- MCP_BACKEND_SEQUENTIAL_THINKING=http://mcp-sequential-thinking:8900/mcp
- MCP_BACKEND_DOCKER=http://mcp-docker:9000/mcp
2026-03-31 15:33:22 -04:00
- GATEWAY_STATIC_API_KEY=${GATEWAY_STATIC_API_KEY}
depends_on:
- erpnext-mcp
- truenas-mcp
- homeassistant-mcp
- wave-mcp
- linkedin-mcp
- forgejo-mcp
- ssh-mcp
- memory-bank-mcp
- puppeteer-mcp
- sequential-thinking-mcp
- docker-mcp
2026-03-31 15:33:22 -04:00
networks: [mcpnet]
healthcheck:
test: ["CMD", "python3", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:4444/health', timeout=5)"]
interval: 15s
timeout: 5s
start_period: 15s
retries: 3
erpnext-mcp:
build:
context: ./erpnext-mcp
dockerfile: Dockerfile
container_name: mcp-erpnext
restart: unless-stopped
environment:
- TRANSPORT=http
- PORT=32802
- ERPNEXT_URL=${ERPNEXT_URL}
- ERPNEXT_API_KEY=${ERPNEXT_API_KEY}
- ERPNEXT_API_SECRET=${ERPNEXT_API_SECRET}
networks: [mcpnet]
healthcheck:
test: ["CMD", "wget", "-qO-", "http://localhost:32802/health"]
interval: 30s
timeout: 5s
start_period: 15s
retries: 3
truenas-mcp:
build:
context: ./truenas-mcp
dockerfile: Dockerfile
container_name: mcp-truenas
restart: unless-stopped
environment:
- TRUENAS_URL=${TRUENAS_URL}
- TRUENAS_API_KEY=${TRUENAS_API_KEY}
- PORT=8100
networks: [mcpnet]
healthcheck:
test: ["CMD", "python3", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8100/mcp', timeout=5)"]
interval: 30s
timeout: 5s
start_period: 15s
retries: 3
homeassistant-mcp:
build:
context: ./homeassistant-mcp
dockerfile: Dockerfile
container_name: mcp-homeassistant
restart: unless-stopped
environment:
- HASS_URL=${HASS_URL}
- HASS_TOKEN=${HASS_TOKEN}
- PORT=8200
networks: [mcpnet]
healthcheck:
test: ["CMD", "python3", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8200/mcp', timeout=5)"]
interval: 30s
timeout: 5s
start_period: 15s
retries: 3
wave-mcp:
build:
context: ./wave-mcp
dockerfile: Dockerfile
container_name: mcp-wave
restart: unless-stopped
environment:
- TRANSPORT=http
- PORT=8300
- WAVE_ACCESS_TOKEN=${WAVE_ACCESS_TOKEN}
networks: [mcpnet]
healthcheck:
test: ["CMD", "wget", "-qO-", "http://localhost:8300/health"]
interval: 30s
timeout: 5s
start_period: 15s
retries: 3
linkedin-mcp:
build:
context: ./linkedin-mcp
dockerfile: Dockerfile
container_name: mcp-linkedin
restart: unless-stopped
environment:
- PORT=8500
- LINKEDIN_CLIENT_ID=${LINKEDIN_CLIENT_ID}
- LINKEDIN_CLIENT_SECRET=${LINKEDIN_CLIENT_SECRET}
- LINKEDIN_REDIRECT_URI=${LINKEDIN_REDIRECT_URI}
volumes:
- linkedin-data:/data
networks: [mcpnet]
healthcheck:
test: ["CMD", "python3", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8500/health', timeout=5)"]
interval: 30s
timeout: 5s
start_period: 10s
retries: 3
forgejo-mcp:
build:
context: ./forgejo-mcp
dockerfile: Dockerfile
container_name: mcp-forgejo
restart: unless-stopped
environment:
- TRANSPORT=http
- PORT=8400
- FORGEJO_URL=${FORGEJO_URL:-https://forge.wilddragon.net}
- FORGEJO_ACCESS_TOKEN=${FORGEJO_ACCESS_TOKEN:-9b80e9ea5e1d1955585fab22fb86e740951940b4}
networks: [mcpnet]
healthcheck:
test: ["CMD", "python3", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8400/mcp', timeout=5)"]
interval: 30s
timeout: 5s
start_period: 15s
retries: 3
ssh-mcp:
build:
context: ./ssh-mcp
dockerfile: Dockerfile
container_name: mcp-ssh
restart: unless-stopped
environment:
- PORT=8600
- SSH_HOST=${SSH_HOST}
- SSH_PORT=${SSH_PORT:-22}
- SSH_USER=${SSH_USER:-root}
- SSH_PASSWORD=${SSH_PASSWORD:-}
- SSH_KEY_PATH=${SSH_KEY_PATH:-}
- SSH_PASSPHRASE=${SSH_PASSPHRASE:-}
networks: [mcpnet]
healthcheck:
test: ["CMD", "python3", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8600/mcp', timeout=5)"]
interval: 30s
timeout: 5s
start_period: 15s
retries: 3
memory-bank-mcp:
build:
context: ./memory-bank-mcp
dockerfile: Dockerfile
container_name: mcp-memory-bank
restart: unless-stopped
environment:
- PORT=8700
- MEMORY_DIR=/data/memories
- MAX_MEMORIES=${MAX_MEMORIES:-10000}
volumes:
- memory-bank-data:/data
networks: [mcpnet]
healthcheck:
test: ["CMD", "python3", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8700/mcp', timeout=5)"]
interval: 30s
timeout: 5s
start_period: 15s
retries: 3
puppeteer-mcp:
build:
context: ./puppeteer-mcp
dockerfile: Dockerfile
container_name: mcp-puppeteer
restart: unless-stopped
environment:
- PORT=8800
- VIEWPORT_WIDTH=${PUPPETEER_VIEWPORT_WIDTH:-1280}
- VIEWPORT_HEIGHT=${PUPPETEER_VIEWPORT_HEIGHT:-720}
- PAGE_TIMEOUT=${PUPPETEER_PAGE_TIMEOUT:-30000}
networks: [mcpnet]
healthcheck:
test: ["CMD", "python3", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8800/mcp', timeout=5)"]
interval: 30s
timeout: 5s
start_period: 20s
retries: 3
sequential-thinking-mcp:
build:
context: ./sequential-thinking-mcp
dockerfile: Dockerfile
container_name: mcp-sequential-thinking
restart: unless-stopped
environment:
- PORT=8900
networks: [mcpnet]
healthcheck:
test: ["CMD", "python3", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8900/mcp', timeout=5)"]
interval: 30s
timeout: 5s
start_period: 15s
retries: 3
docker-mcp:
build:
context: ./docker-mcp
dockerfile: Dockerfile
container_name: mcp-docker
restart: unless-stopped
environment:
- PORT=9000
- DOCKER_HOST=${DOCKER_HOST:-unix:///var/run/docker.sock}
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks: [mcpnet]
healthcheck:
test: ["CMD", "python3", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:9000/mcp', timeout=5)"]
interval: 30s
timeout: 5s
start_period: 15s
retries: 3
2026-03-31 15:33:22 -04:00
volumes:
gateway-data:
linkedin-data:
memory-bank-data: