feat(forge-mcp): forge-neutral MCP namespace (MF-5) #308

Merged
code-lead merged 2 commits from boss/296 into main 2026-04-24 09:12:38 +00:00
Collaborator

Lands MF-5: a forge-neutral mcp__forge__* namespace served by a new packages/forge-mcp/ stdio MCP that routes tool calls through the ForgePort adapter selected by FORGE_TYPE — one surface that works across Forgejo, GitHub, and GitLab once MF-1/MF-2 ship.

Test plan

  • bun x turbo run typecheck — all four packages clean
  • bun x turbo run test — 1110 server tests + 41 forge-mcp tests pass
  • bun x biome check . + bun x biome format . — workspace clean
  • Smoke: bun build packages/forge-mcp/src/main.ts --compile --outfile /tmp/f && echo '{"jsonrpc":"2.0","id":1,"method":"initialize"}' | FORGE_ACCESS_TOKEN=x /tmp/f returns the 16-tool initialize envelope
  • mcp-config.ts tests assert the forge server registers alongside forgejo, with per-tool mcp__forge__* allowlist entries in lockstep with FORGE_TOOLS_ALLOWLIST
  • agent-runner deprecation-warner test: fires exactly once per task for the first mcp__forgejo__* tool, silent for mcp__forge__* / Bash / Read
  • Skill smoke test: breakdown tool sequence (readFile → listRepoLabels → listIssues → createIssue) dispatches cleanly against a fake GitHub ForgePort

Closes #296

Lands MF-5: a forge-neutral `mcp__forge__*` namespace served by a new `packages/forge-mcp/` stdio MCP that routes tool calls through the `ForgePort` adapter selected by `FORGE_TYPE` — one surface that works across Forgejo, GitHub, and GitLab once MF-1/MF-2 ship. ## Test plan - [ ] `bun x turbo run typecheck` — all four packages clean - [ ] `bun x turbo run test` — 1110 server tests + 41 forge-mcp tests pass - [ ] `bun x biome check .` + `bun x biome format .` — workspace clean - [ ] Smoke: `bun build packages/forge-mcp/src/main.ts --compile --outfile /tmp/f && echo '{"jsonrpc":"2.0","id":1,"method":"initialize"}' | FORGE_ACCESS_TOKEN=x /tmp/f` returns the 16-tool `initialize` envelope - [ ] `mcp-config.ts` tests assert the `forge` server registers alongside `forgejo`, with per-tool `mcp__forge__*` allowlist entries in lockstep with `FORGE_TOOLS_ALLOWLIST` - [ ] `agent-runner` deprecation-warner test: fires exactly once per task for the first `mcp__forgejo__*` tool, silent for `mcp__forge__*` / `Bash` / `Read` - [ ] Skill smoke test: `breakdown` tool sequence (`readFile → listRepoLabels → listIssues → createIssue`) dispatches cleanly against a fake GitHub `ForgePort` Closes #296
feat(forge-mcp): forge-neutral MCP namespace (MF-5)
All checks were successful
qa / qa (pull_request) Successful in 5m39s
qa / dockerfile (pull_request) Successful in 6s
d52bd80e07
New packages/forge-mcp/ workspace package exposes a forge-neutral stdio
MCP server (mcp__forge__*) that routes tool calls through the ForgePort
adapter selected by FORGE_TYPE. Registered alongside the legacy
forgejo-mcp for one release; agent-runner logs a once-per-task
deprecation warning the first time an agent touches mcp__forgejo__*.
Skills (breakdown, design-implement, implement, review, implement-delta)
migrate to forge__* where the port backs the tool; PR creation,
review verdicts and merges stay on forgejo-mcp pending MF-7 / MF-8.

Closes #296

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
fix(forge-mcp): address review for MF-5 (#308 follow-up)
All checks were successful
qa / qa (pull_request) Successful in 3m2s
qa / dockerfile (pull_request) Successful in 8s
08a5c9d518
Migrate the five remaining skills (address-review, address-review-delta,
rebase, fix-ci, design-review) to the forge-neutral `mcp__forge__*`
namespace for every call that has a port-backed equivalent. Preserves the
migration-matrix pattern established in implement.md: issue/comment/label
/PR-listing ops go through `mcp__forge__*`; PR creation, review verdicts,
merges, per-file diff and single-workflow-run fetch stay on `mcp__forgejo__*`
pending MF-7/MF-8.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
charles force-pushed boss/296 from 08a5c9d518
All checks were successful
qa / qa (pull_request) Successful in 3m2s
qa / dockerfile (pull_request) Successful in 8s
to c793d1b15d
All checks were successful
qa / qa (pull_request) Successful in 4m22s
qa / dockerfile (pull_request) Successful in 10s
2026-04-24 08:54:50 +00:00
Compare
code-lead deleted branch boss/296 2026-04-24 09:12:38 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
charles/claude-hooks!308
No description provided.