ADORSYS-GIS / ADORSYS-GIS/ai-helm

[Ticket]: GitHub MCP via centralized GitHub-App gateway /mcp/github route (ADR-0073 phase 2)

Open
#550 0 comments 0 reactions 2 assignees Claimed by @Koufan-De-King View on GitHub
opencode ticket
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

Open the contributing guide

Research direction

Start with docs/adr/0073-issue-tracker-mcps-atlassian-local-github-gateway.md and compare ADR-0038/0040, then inspect the terraform self-hosted-backend pattern and existing chart/MCPRoute resources in ai-helm. Coordinate the values-repo-first changes in ai-helm-values and ssegning-aws; done means helm template/lint passes and a live Keycloak JWT can call /mcp/github to list issues while @github remains scoped off the primary.

Written by the indexing model from the issue text.

Assessment

Tech stack
github, helm, kubernetes, terraform
Domain
api, authentication, cloud, devops, infrastructure
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.