ADORSYS-GIS / ADORSYS-GIS/ai-helm
[Ticket]: GitHub MCP via centralized GitHub-App gateway /mcp/github route (ADR-0073 phase 2)
- Dominant language
- Go Template
- Stars
- 3
- Forks
- 1
- Avg merge
- 19h 24m
- Merged PRs (30d)
- 80
Description
Part of #549
## Type
Feature
## Summary
Add **GitHub** to the opencode catalog via a **centralized GitHub-App gateway `/mcp/github` route** (ADR-0073 phase 2). GitHub has no usable npx server (the official `@modelcontextprotocol/server-github` npm package is deprecated; the replacement is a Go binary / remote), so unlike Jira/Confluence it cannot be a local server — it must be self-hosted in-cluster and exposed through the gateway.
## Intent
Give devs/POs GitHub issues/PRs/projects from opencode without per-user tokens — users authenticate to the gateway with their normal Keycloak JWT; the service authenticates to GitHub as one org GitHub App.
## Source of truth (links)
- ADR-0073 (`docs/adr/0073-issue-tracker-mcps-atlassian-local-github-gateway.md`), phase 2
- Pattern: ADR-0038 (MCP OAuth route) + ADR-0040 (external-MCP in-cluster proxy/self-host)
- Server: https://github.com/github/github-mcp-server
## Current Behavior
No GitHub MCP. `@vcs` covers only LOCAL git on the working tree; there is no issues/PRs/projects access.
## Expected Behavior
A `github` remote in the well-known (behind a `@github` subagent) routes to an in-cluster `github/github-mcp-server` via AIEG `MCPRoute` `/mcp/github` with route-level `SecurityPolicy.oauth` (Keycloak), authenticating to GitHub as an org-installed GitHub App.
## Acceptance Criteria
- [ ] Org GitHub App created + installed with fine-grained repo/issues/projects scopes.
- [ ] App credential provisioned in `ssegning-aws`; ExternalSecret in `ai-helm-values` deps overlay (values-repo-first).
- [ ] In-cluster server chart + AIEG MCPRoute `/mcp/github` + SecurityPolicy added in `ai-helm`.
- [ ] `github` remote + `@github` subagent added to the well-known (deny-baseline + allow).
- [ ] Installation-token expiry (hourly) handled (refresher sidecar or PAT-style token).
- [ ] Verified live: a user can list issues/PRs through the gateway with their Keycloak JWT.
## Out of Scope
- Per-user GitHub identity (shared App identity by decision; read-first).
## Technical Context
Cross-repo: chart + route in `ai-helm`; deps/values in `ai-helm-values`; secret out-of-band in `ssegning-aws`. Reuses the `terraform` self-hosted-backend pattern.
## Risks
- Hourly App-token expiry; shared write attribution; cross-repo cutover ordering (values-repo-first).
## Test Plan
- `helm template`/`lint` the new chart + route; live: mint a Keycloak JWT, call `/mcp/github`, list issues; confirm `@github` is scoped and off the primary.
## Human accountable owner
@stephane-segning
## AI Usage Declaration
AI drafted this ticket from ADR-0073; human owns intent + verification.
Contributor guide
Assessment
This issue has not been assessed yet.