duckduckgo-mcp/docker-compose.yml
Jarian Cottingham 6aed7974ba Initial commit: DuckDuckGo MCP server
Carved out from the google-mcp monorepo. MCP server exposing
DuckDuckGo search over SearXNG, with the shared search library.
2026-08-21 18:38:20 +00:00

57 lines
1.4 KiB
YAML

services:
searxng:
image: searxng/searxng:latest
container_name: searxng
expose:
- "8080"
volumes:
- ./searxng-settings.yml:/etc/searxng/settings.yml:ro
environment:
- SEARXNG_BASE_URL=http://localhost:8080/
- SEARXNG_SECRET=${SEARXNG_SECRET:-}
- UWSGI_WORKERS=4
- UWSGI_THREADS=4
restart: unless-stopped
stop_grace_period: 5s
networks:
- mcp-internal
healthcheck:
test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8080/healthz')"]
interval: 30s
timeout: 10s
retries: 3
start_period: 15s
duckduckgo-search:
build:
context: .
dockerfile: duckduckgo-mcp/Dockerfile
container_name: duckduckgo-mcp
ports:
- "3002:3002"
environment:
- RATE_LIMIT_SECONDS=3
- MCP_PORT=3002
- SEARXNG_URL=http://searxng:8080
- PYTHONUNBUFFERED=1
depends_on:
searxng:
condition: service_healthy
restart: unless-stopped
stop_grace_period: 5s
networks:
- mcp-internal
- mcp-external
healthcheck:
test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:3002/health')"]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
networks:
mcp-internal:
internal: true
mcp-external:
driver: bridge