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

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.