From 71c6ca70cc6143bce5d180ab9bd39fda5a919b8d Mon Sep 17 00:00:00 2001 From: DevContainer User Date: Sun, 22 Feb 2026 19:30:56 +0000 Subject: [PATCH] fix: resolve MCP sidecar image failures (issue #40) Three fixes for broken MCP sidecars: 1. Remove GitHub MCP sidecar entirely - the upstream image (ghcr.io/modelcontextprotocol/servers/github) is discontinued. GitHub MCP is now accessed via Copilot API instead. 2. Fix Playwright MCP image - changed from non-existent microsoft/playwright-mcp to mcr.microsoft.com/playwright/mcp (the official Microsoft Container Registry image). 3. Fix pgtuner MCP startup command - changed --transport to --mode and added --host 0.0.0.0 to match the current pgtuner_mcp CLI. Bumps chart version to 0.3.3. Closes #40 Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude Co-Authored-By: Happy --- CLAUDE.md | 51 +++++++++++++++------------------ README.md | 10 +++---- chart/Chart.yaml | 2 +- chart/templates/deployment.yaml | 34 +--------------------- chart/values.schema.json | 3 -- chart/values.yaml | 17 +---------- 6 files changed, 31 insertions(+), 86 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index ce80628..15a7e0d 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -77,7 +77,7 @@ Container start | `chart/templates/pvc.yaml` | PersistentVolumeClaim for user home | | `chart/templates/service.yaml` | ClusterIP Service (VNC + optional SSH) | | `chart/values.yaml` | Default Helm values | -| `.mcp.json` | MCP server connection config (Kubernetes, Flux, GitHub, Home Assistant, Playwright) | +| `.mcp.json` | MCP server connection config (GitHub Copilot, Kubernetes, Flux, Playwright, pgtuner) | | `Makefile` | Build/deploy automation | ### MCP Sidecars @@ -88,15 +88,14 @@ MCP (Model Context Protocol) servers run as sidecar containers in the pod, enabl |---------|-------|---------|------|----------|---------| | `kubernetes-mcp` | `quay.io/containers/kubernetes_mcp_server` | v0.0.57 | 8080 | `http://localhost:8080/sse` | Enabled | | `flux-mcp` | `ghcr.io/controlplaneio-fluxcd/flux-operator-mcp` | v0.41.1 | 8081 | `http://localhost:8081/sse` | Enabled | -| `github-mcp` | `ghcr.io/modelcontextprotocol/servers/github` | latest | 8088 | `http://localhost:8088/sse` | Disabled | | `homeassistant-mcp` | `ghcr.io/homeassistant-ai/ha-mcp` | stable | 8087 | `http://localhost:8087/sse` | Disabled | | `pgtuner-mcp` | `dog830228/pgtuner_mcp` | latest | 8085 | `http://localhost:8085/sse` | Disabled | -| `playwright-mcp` | `microsoft/playwright-mcp` | latest | 8086 | `http://localhost:8086/sse` | Enabled | +| `playwright-mcp` | `mcr.microsoft.com/playwright/mcp` | latest | 8086 | `http://localhost:8086/sse` | Enabled | **Note:** +- GitHub MCP is accessed via the Copilot API (`https://api.githubcopilot.com/mcp/`), not as a sidecar - Kubernetes and Flux sidecars require `clusterAccess` != `none` to be deployed (they need RBAC permissions) - Kubernetes and Flux sidecars inherit the pod's ServiceAccount RBAC permissions -- GitHub sidecar uses `GITHUB_TOKEN` from the env secret (same token used for repo cloning) - Home Assistant sidecar requires `HOMEASSISTANT_URL` and `HOMEASSISTANT_TOKEN` in the env secret - PostgreSQL tuner sidecar requires `DATABASE_URI` in the env secret (PostgreSQL connection string) - Playwright sidecar provides browser automation and web testing capabilities @@ -109,34 +108,30 @@ To control MCP sidecars, set the `enabled` flag in your values override: # Disable all MCP sidecars mcp: sidecars: - kubernetes: - enabled: false - flux: - enabled: false - github: - enabled: false - homeassistant: - enabled: false - pgtuner: - enabled: false - playwright: - enabled: false + kubernetes: + enabled: false + flux: + enabled: false + homeassistant: + enabled: false + pgtuner: + enabled: false + playwright: + enabled: false # Or selectively enable/disable mcp: sidecars: - kubernetes: - enabled: true # Keep Kubernetes MCP enabled - flux: - enabled: false # Disable Flux MCP - github: - enabled: true # Keep GitHub MCP enabled (uses GITHUB_TOKEN) - homeassistant: - enabled: true # Enable Home Assistant MCP (requires secrets) - pgtuner: - enabled: true # Enable PostgreSQL tuner MCP (requires DATABASE_URI) - playwright: - enabled: true # Enable Playwright MCP for browser automation + kubernetes: + enabled: true # Keep Kubernetes MCP enabled + flux: + enabled: false # Disable Flux MCP + homeassistant: + enabled: true # Enable Home Assistant MCP (requires secrets) + pgtuner: + enabled: true # Enable PostgreSQL tuner MCP (requires DATABASE_URI) + playwright: + enabled: true # Enable Playwright MCP for browser automation ``` When deploying via Helm: diff --git a/README.md b/README.md index 235278e..11931a3 100644 --- a/README.md +++ b/README.md @@ -50,7 +50,7 @@ The secret is picked up automatically via `envFrom`. Keys recognised: | `SSH_AUTHORIZED_KEYS` | Public key(s) for SSH access (required when `ssh: true`) | | `HOMEASSISTANT_URL` | Home Assistant URL (required when `mcpSidecars.homeassistant.enabled: true`) | | `HOMEASSISTANT_TOKEN` | Home Assistant long-lived access token (required when `mcpSidecars.homeassistant.enabled: true`) | -| `DATABASE_URI` | PostgreSQL connection string (required when `mcpSidecars.pgtuner.enabled: true`) | +| `DATABASE_URI` | PostgreSQL connection string (required when `mcp.sidecars.pgtuner.enabled: true`) | | `PGTUNER_EXCLUDE_USERIDS` | Comma-separated PostgreSQL user OIDs to exclude from monitoring (optional) | ```bash @@ -200,16 +200,16 @@ The devcontainer includes MCP (Model Context Protocol) servers as sidecar contai |---------|---------|---------| | `mcp.sidecars.kubernetes.enabled` | `true` | Kubernetes API access via MCP | | `mcp.sidecars.flux.enabled` | `true` | Flux GitOps operations via MCP | -| `mcp.sidecars.github.enabled` | `false` | GitHub API access via MCP (DISABLED: archived image) | | `mcp.sidecars.homeassistant.enabled` | `false` | Home Assistant smart home control via MCP | | `mcp.sidecars.pgtuner.enabled` | `false` | PostgreSQL performance tuning and analysis via MCP | | `mcp.sidecars.playwright.enabled` | `true` | Browser automation and web testing via MCP | **Notes:** +- GitHub MCP is accessed via the Copilot API (`https://api.githubcopilot.com/mcp/`), not as a sidecar - Kubernetes and Flux sidecars require `clusterAccess` != `none` to be deployed (automatically disabled when no cluster access) - Kubernetes and Flux sidecars inherit the pod's ServiceAccount RBAC permissions (controlled by `clusterAccess`) -- Home Assistant sidecar requires `homeassistant-url` and `homeassistant-token` in the env secret -- PostgreSQL tuner sidecar requires `database-uri` in the env secret (PostgreSQL connection string) +- Home Assistant sidecar requires `HOMEASSISTANT_URL` and `HOMEASSISTANT_TOKEN` in the env secret +- PostgreSQL tuner sidecar requires `DATABASE_URI` in the env secret (PostgreSQL connection string) - Playwright sidecar provides browser automation and web testing capabilities **Disable MCP sidecars:** @@ -309,7 +309,7 @@ mcp: playwright: enabled: true image: - repository: microsoft/playwright-mcp + repository: mcr.microsoft.com/playwright/mcp tag: latest port: 8086 resources: diff --git a/chart/Chart.yaml b/chart/Chart.yaml index c11325e..90f3467 100644 --- a/chart/Chart.yaml +++ b/chart/Chart.yaml @@ -2,5 +2,5 @@ apiVersion: v2 name: devcontainer description: Antigravity Dev Container with Happy Coder AI assistant type: application -version: 0.3.2 +version: 0.3.3 appVersion: "latest" diff --git a/chart/templates/deployment.yaml b/chart/templates/deployment.yaml index 95d50f3..e1a926e 100644 --- a/chart/templates/deployment.yaml +++ b/chart/templates/deployment.yaml @@ -200,43 +200,11 @@ spec: resources: {{- toYaml .Values.mcp.sidecars.homeassistant.resources | nindent 12 }} {{- end }} - {{- if .Values.mcp.sidecars.github.enabled }} - - name: github-mcp - image: "{{ .Values.mcp.sidecars.github.image.repository }}:{{ .Values.mcp.sidecars.github.image.tag }}" - imagePullPolicy: Always - args: - - --sse - - --port={{ .Values.mcp.sidecars.github.port }} - ports: - - name: github - containerPort: {{ .Values.mcp.sidecars.github.port }} - env: - - name: GITHUB_PERSONAL_ACCESS_TOKEN - valueFrom: - secretKeyRef: - name: {{ include "antigravity.envSecretName" . }} - key: GITHUB_TOKEN - optional: true - livenessProbe: - httpGet: - path: /health - port: {{ .Values.mcp.sidecars.github.port }} - initialDelaySeconds: 10 - periodSeconds: 10 - readinessProbe: - httpGet: - path: /health - port: {{ .Values.mcp.sidecars.github.port }} - initialDelaySeconds: 5 - periodSeconds: 5 - resources: - {{- toYaml .Values.mcp.sidecars.github.resources | nindent 12 }} - {{- end }} {{- if .Values.mcp.sidecars.pgtuner.enabled }} - name: pgtuner-mcp image: "{{ .Values.mcp.sidecars.pgtuner.image.repository }}:{{ .Values.mcp.sidecars.pgtuner.image.tag }}" imagePullPolicy: Always - command: ["python", "-m", "pgtuner_mcp", "--transport", "sse", "--port", "{{ .Values.mcp.sidecars.pgtuner.port }}"] + command: ["python", "-m", "pgtuner_mcp", "--mode", "sse", "--host", "0.0.0.0", "--port", "{{ .Values.mcp.sidecars.pgtuner.port }}"] ports: - name: pgtuner containerPort: {{ .Values.mcp.sidecars.pgtuner.port }} diff --git a/chart/values.schema.json b/chart/values.schema.json index 7d3837e..d000919 100644 --- a/chart/values.schema.json +++ b/chart/values.schema.json @@ -177,9 +177,6 @@ "homeassistant": { "$ref": "#/$defs/mcpSidecar" }, - "github": { - "$ref": "#/$defs/mcpSidecar" - }, "pgtuner": { "$ref": "#/$defs/mcpSidecar" }, diff --git a/chart/values.yaml b/chart/values.yaml index 42cbb0e..24eb164 100644 --- a/chart/values.yaml +++ b/chart/values.yaml @@ -123,21 +123,6 @@ mcp: memory: "256Mi" cpu: "500m" - # GitHub API access (DISABLED: archived image) - github: - enabled: false - image: - repository: ghcr.io/modelcontextprotocol/servers/github - tag: latest - port: 8088 - resources: - requests: - memory: "64Mi" - cpu: "50m" - limits: - memory: "256Mi" - cpu: "500m" - # PostgreSQL performance tuning pgtuner: enabled: false # Requires DATABASE_URI in secrets @@ -157,7 +142,7 @@ mcp: playwright: enabled: true image: - repository: microsoft/playwright-mcp + repository: mcr.microsoft.com/playwright/mcp tag: latest port: 8086 resources: