Add mcp-gateway/docker-compose.yml
This commit is contained in:
parent
a5fc42f842
commit
53938c469b
1 changed files with 161 additions and 0 deletions
161
mcp-gateway/docker-compose.yml
Normal file
161
mcp-gateway/docker-compose.yml
Normal file
|
|
@ -0,0 +1,161 @@
|
|||
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:
|
||||
Loading…
Reference in a new issue