# Standalone docker-compose for ag-bids-mcp. # # This file is the ENTIRE compose project — it does NOT belong inside # zerto-docs-rag's compose. Put it in /home/justin/ag-bids-mcp/ on the # MetaMCP host (192.168.0.2) alongside a .env file with three secrets: # AG_BIDS_API_KEY — copy from ag-monitor's .env (BRIEF_API_KEY) on .0.126 # AG_BIDS_MCP_USER — username MetaMCP will send in Basic auth # AG_BIDS_MCP_PASS — password MetaMCP will send in Basic auth # # Joins the EXISTING `mcp-servers_mcp` network (created by the MetaMCP # compose project at /home/justin/mcp-servers/) as external, so MetaMCP # can reach this container by DNS name `ag-bids-mcp`. services: ag-bids-mcp: container_name: ag-bids-mcp image: git.jpaul.io/justin/ag-bids-mcp:latest pull_policy: always restart: unless-stopped env_file: .env environment: MCP_TRANSPORT: streamable-http MCP_HOST: 0.0.0.0 MCP_PORT: "8000" # Behind a Docker DNS name, FastMCP's localhost-only rebinding-protection # would 421 every call from MetaMCP. Disable it; the mcp network is private. MCP_DISABLE_DNS_REBINDING_PROTECTION: "1" USAGE_LOG_DIR: /app/var/logs USAGE_LOG_KEEP_DAYS: "90" volumes: # Survive container recreates (Watchtower rolls this every ~5 min). - ./ag-bids-mcp-logs:/app/var/logs networks: [mcp] labels: # Watchtower (on the same daemon) auto-pulls new images for any container # with this label set to "true". com.centurylinklabs.watchtower.enable: "true" networks: mcp: external: true # Confirmed on 192.168.0.2 — joined by metamcp, metamcp-pg, zerto-docs-mcp, # jina-rerank. Created by the compose project rooted at ~/mcp-servers/. name: mcp-servers_mcp