Skip to content

MCP proxy Phase 0: compliance & compatibility spike (hosted endpoint contract, App tokens) #22

Description

@chaodu-agent

Part of #15 (Revision 2 added this phase from community review). Blocks the Phase 2 gate (#17).

Goal

De-risk the two external dependencies before building Phase 2: the hosted MCP endpoint's contract, and GitHub App installation tokens as the credential backend.

Tasks

  • Resolve PAT-pooling compliance concern → decision: GitHub App installation token as primary credential (RFC Revision 2, Credential Architecture section)
  • Verify hosted MCP endpoint contract (api.githubcopilot.com/mcp/):
    • GitHub App installation token accepted for auth? → YES (see findings comment)
    • Tool configuration timing → honored per-request; bonus: X-MCP-Tools exact per-tool allowlist exists (see findings)
    • Session lifecycle (partial) → upstream DELETE is a no-op (session reusable after 204!); unknown session → 400 upstream. ghpool's local pin cache is the real session authority. SSE resumption + server-side expiry still unprobed
    • Rate-limit headers → none; x-github-request-id present
    • Invalid toolset names → silently ignored, fail-open (full tool set!) — ghpool must use exact X-MCP-Tools allowlists
    • Timeouts, mid-stream disconnects, and credential-expiry-mid-session behavior
    • Protocol-version compatibility → 2024-11-05 accepted and negotiated
  • Build automated contract test suite (extend scripts/e2e-mcp.sh / e2e workflow into scheduled runs — upstream is outside our release control)
  • Define rollback/fallback path if upstream changes (self-hosted github-mcp-server container evaluation)

Deliverable

A findings doc (comment on this issue) + contract tests merged. #17 implementation starts only after the installation-token and session-lifecycle questions are answered.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions