161 lines
4.5 KiB
YAML
161 lines
4.5 KiB
YAML
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
|
|
- GATEWAY_STATIC_API_KEY=${GATEWAY_STATIC_API_KEY}
|
|
depends_on:
|
|
- erpnext-mcp
|
|
- truenas-mcp
|
|
- homeassistant-mcp
|
|
- wave-mcp
|
|
- linkedin-mcp
|
|
- forgejo-mcp
|
|
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
|
|
|
|
volumes:
|
|
gateway-data:
|
|
linkedin-data:
|