Skip to content

Remove the GitHub MCP server; make gh CLI the canonical GitHub surface #275

Closed

Description

@JohnStrunk

Problem

The devbox gives agents two GitHub surfaces: the gh CLI and the pinned local
GitHub MCP server (github/github-mcp-server v1.12.2) behind the
response-bounding proxy. The MCP server cannot read or write GitHub issue
dependencies
("Blocked by" / "blocking" relationships), which this repository
relies on for triage and planning:

Verified 2026-09-28:

Decision (John, 2026-09-28): remove the GitHub MCP server and make gh the
canonical GitHub surface.

Proposed improvement

1. Remove the integration

  • devbox launcher (~lines 610–641): drop the mcp.servers.github config
    fragment. Keep the GH_TOKEN/GITHUB_TOKEN passthrough and
    gh auth setup-git — the gh CLI still needs them.
  • container/github_mcp_server_proxy.py: delete, along with its Dockerfile
    install block (~lines 419–422).
  • container/tool-versions.json: remove the github_mcp_server entry
    (version, checksums, provenance); remove the Dockerfile install block
    (~lines 133–141).
  • Tests: delete tests/unit/test_github_mcp_server_proxy.py; rework the
    GitHub-MCP parts of tests/unit/test_devbox_params.py,
    tests/container/test_opencode_config.py (the config-shape test and the
    "GitHub search" guidance needles), and tests/container/test_image_binaries.py.

2. Rework agent guidance gh-first

  • container/agent-skills/devbox-tools/SKILL.md "GitHub search" entry:
    gh-first rewrite. The proxy enforced output bounds structurally (forced
    field projection, perPage <= 20, 64 KiB result cap — issue Bound GitHub search responses and honor requested fields #187); that
    discipline must now live in the guidance and be pinned by tests:
    • Always pass an explicit --json field list (gh issue/gh pr/
      gh search) or a --jq projection (gh api); never print full API
      objects.
    • Enumerate with bounded pages (--limit, small per_page=) instead of
      unbounded --paginate unless paired with a projection.
    • Do not fetch bodies/comments during enumeration; read them with a
      targeted gh issue view <n> after shortlisting.
    • Keep dependency-aware selection in one call: gh api 'repos/<o>/<r>/issues?state=open&per_page=…' returns labels, assignees,
      and issue_dependencies_summary per item.
    • Document the dependency operations: gh issue view --json blockedBy,blocking, gh issue edit --add-blocked-by/--remove-blocking,
      gh search issues 'has:blocked-by' — and warn that is:blocked is
      ambiguous in this repo because of the legacy blocked label.
  • .agents/skills/issue-to-pr/SKILL.md: remove the "or the GitHub MCP
    server" routing clauses (intro and Guardrails) and the list_issues aside
    in step 1; the gh api enumeration is already the primary path.
  • README.md: update the credential-passthrough bullet (~line 62) and the
    GitHub-MCP-proxy paragraph (~line 360).
  • Context win: removal drops 43 MCP tool definitions plus the server's
    instructions from every session.

3. Continuity

  • Existing containers need devbox --recreate (generated config and image
    contents change; the launcher self-hash/fingerprint reports staleness).
  • Port the OpenCode runtime integration and do-one-issue to the VM #272 (port the OpenCode runtime integration to the Lima VM) must not carry
    the GitHub MCP forward — gh is the canonical surface there too.

Acceptance criteria

  • After devbox --recreate, a fresh OpenCode session has no github MCP
    server configured (asserted by the container config test), and
    github-mcp-server/github-mcp-server-proxy are absent from the image
    (asserted by the image binary test).
  • container/tool-versions.json contains no github_mcp_server entry;
    tool-version validation and provenance verification pass.
  • No repo guidance references the GitHub MCP: the devbox-tools skill, the
    issue-to-pr skill, and the README are gh-first, including the
    output-bounding discipline and the dependency read/write/search commands
    above.
  • Needle/behavioral tests pin the new gh-first guidance, replacing the
    current MCP guidance needles.
  • Full CI passes (CI Workflow - Success); Mergify lands the PR.

Activity

  1. added
    readyUnblocked, actionable, acceptance criteria provable; default selection pool
    value:mediumImpact tier: selection rank 2
    confidence:highCriteria provable, no open questions; safe to select from list alone
    on Sep 28, 2026
  2. self-assigned this
    on Oct 1, 2026
  3. JohnStrunk commented on Oct 1, 2026

    @JohnStrunk
    OwnerAuthor

    Verification and plan:

    Plan:

    1. Keep the existing gh-first/output-bounded/dependency guidance, but replace the negative MCP wording with positive gh-only wording in the devbox-tools skill.
    2. Remove the stale MCP references from lima/README.md, retaining its positive gh CLI guidance.
    3. Add a unit regression test covering the root README, Lima README, devbox-tools skill, and issue-to-PR skill so those guidance files cannot reintroduce the reference.
    4. Run the focused tests and the sanitized fast-check suite; if clean, open a small PR for the final acceptance cleanup.

    No questions so far; the config, manifest, and issue-to-PR skill checks already cover the other relevant surfaces.

  4. added a commit that references this issue on Oct 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

confidence:highCriteria provable, no open questions; safe to select from list alonereadyUnblocked, actionable, acceptance criteria provable; default selection poolvalue:mediumImpact tier: selection rank 2

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions