forgejo-mcp/extension/.gitignore
David Turley a6b041617e feat(extension): package as Claude Desktop Extension (.mcpb)
Adds an extension/ directory containing the manifest, build documentation,
and a smoke test for packaging forgejo-mcp as a Claude Desktop Extension.

Users of the Claude Desktop app can install this with a sideload
(drag-and-drop or file picker) rather than hand-editing
claude_desktop_config.json. The server binary itself is unchanged —
this is purely packaging. Existing CLI / mcpServers / `claude mcp add`
usage continues to work identically.

What's added:
  extension/manifest.json    Manifest schema 0.3, full 94-tool inventory,
                             user_config for URL + access token (sensitive).
  extension/test_smoke.py    MCP handshake + tools/list verification.
                             Catches manifest-vs-binary drift, the most
                             likely failure mode when manifest tool lists
                             are hand-maintained alongside an evolving
                             upstream binary. Skips cleanly when
                             FORGEJO_ACCESS_TOKEN is unset (unattended
                             CI with no secrets).
  extension/README.md        Build flow, test usage, future-work hints.
  extension/.gitignore       Ignores build artifacts (bin/, *.mcpb).

Build:
  go build -o extension/bin/forgejo-mcp .
  npx @anthropic-ai/mcpb pack extension/ extension/forgejo-mcp.mcpb

Test:
  FORGEJO_ACCESS_TOKEN=<token> python3 extension/test_smoke.py
  # PASS: manifest and binary agree on 94 tools

The smoke test caught real drift while developing this PR — the README's
tool table was missing 14 tools the binary already exposes (orgs, teams,
PR reviews, attachments). The manifest reflects the binary's actual
tools/list output, so anyone using the extension gets accurate tool
discoverability in Claude Desktop's Extensions UI.

Possible follow-ups documented in extension/README.md (goreleaser hook,
cross-platform binaries, registry submission, signing) — left for the
maintainer's call rather than pre-implemented.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-06 09:56:52 -07:00

3 lines
30 B
Text