superclaude mcp --servers airis-mcp-gateway 失败: 组合 URL 已过期 (404) + 配置文件缺失

作者: peteraba创建于 2026年6月10日更新于 2026年6月10日

Bug 1 — Stale docker_compose_url returns 404 The hardcoded compose URL points at a filename the upstream gateway repo has since renamed:

superclaude/cli/install_mcp.py

"docker_compose_url": "https://raw.githubusercontent.com/agiletec-inc/airis-mcp-gateway/main/Docker-compose.dist.yml", agiletec-inc/airis-mcp-gateway renamed Docker-compose.dist.ymlcompose.yaml (still on the main branch). The old path now 404s: Docker-compose.dist.yml -> 404 compose.yaml -> 200

Observed output

Downloading Docker-compose configuration... ❌ Failed to download Docker-compose file: curl: (22) The requested URL returned error: 404 Failed to install AIRIS MCP Gateway

Fix

superclaude/cli/install_mcp.py

"docker_compose_url": "https://raw.githubusercontent.com/agiletec-inc/airis-mcp-gateway/main/compose.yaml", (The companion mcp_config_urlconfig/mcp-config.template.json is still valid and needs no change.) Bug 2 — Installer does not provision the config files the compose file bind-mounts After fixing Bug 1, the download succeeds but Docker compose up fails at container start: ❌ Failed to start containers: Error response from daemon: failed to create task for container: ... OCI runtime create failed: ... error mounting ".../config/gateway-config.yaml" to rootfs at "/app/config/gateway-config.yaml": ... not a directory: Are you trying to mount a directory onto a file (or vice-versa)?

Root cause

The installer only writes three files into the install dir: compose.yaml (saved as Docker-compose.yml), mcp-config.json, and .env. But the current compose.yaml bind-mounts several additional host files that the installer never creates:

api service

volumes:

  • ./routing-table.json:/app/routing-table.json:ro
  • ./config/gateway-config.yaml:/app/config/gateway-config.yaml:ro
  • ./profiles:/app/profiles:rw

Docker-mcp-gateway service

command:

  • --additional-catalog=/catalogs/airis-catalog.yaml # needs ./catalogs/airis-catalog.yaml When a bind-mount source path does not exist on the host, the Docker daemon (running as root) auto-creates it — and creates it as a directory. So config/gateway-config.yaml and routing-table.json get created as empty, root-owned directories, and mounting a directory onto the container's expected file

内容来源: SuperClaude-Org/SuperClaude_Framework