feat: dogfood the Image as this repo's Forgejo MCP server (#31) #34
No reviewers
Labels
No labels
bug
enhancement
needs-info
needs-triage
ready-for-agent
ready-for-human
wayfinder:grilling
wayfinder:map
wayfinder:prototype
wayfinder:research
wayfinder:task
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
vicoli-oss/docker-forgejo-mcp!34
Loading…
Reference in a new issue
No description provided.
Delete branch "piscis/forgejo-mcp-server-dogfood"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #31
Summary
The repo's
.mcp.jsongets aforgejoserver that runs the Image over stdio. Every session in this repo now uses the same config a Consumer copies. The change only adds lines, and context7 isn't touched.The args follow the same order as the README's Claude Code snippet (
run -i --rm, URL, token, image). There are two deliberate differences:--pull=always, and theFORGEJO_URLdefault.forgejosits beforecontext7, so context7 doesn't need a trailing comma and the diff contains only+lines.Evidence
1. Valid JSON, context7 untouched
2. Handshake with the token. This runs the exact configured command, with
${FORGEJO_URL:-…}expanded by hand and the token mapped withFORGEJO_ACCESS_TOKEN=$FORGEJO_TOKEN. The input isinitialize→notifications/initialized→tools/list:The same result through Claude Code itself:
claude -p --mcp-config .mcp.json --strict-mcp-config, reading theinitevent, withFORGEJO_URLunset:That run also shows the
${FORGEJO_URL:-https://code.vicoli.de}default is applied. The Image run with an empty URL exits 1 (FATAL Missing required configuration {"missing": "url"}), so if the default weren't applied, forgejo would have failed. Overriding the URL is honoured too, and a failure stays inside forgejo:3. Without the token. Caveat: the server does not fail at startup:
Upstream's startup check (
Connection verification) doesn't need authentication, so a tokenless server comes up withtoken_configured: false, and the failure shows up on each tool call instead. That failure stays inside forgejo, and context7 is unaffected, which is what the criterion needs. But it isn't the "refuses to start" behaviour the issue text implies. (claude mcp listdidn't help here: in a fresh worktree both servers only show⏸ Pending approval, so I used--mcp-config.)4. No secret in the committed file
Both hits are variable names, not values.
README follow-ups (not changed here)
--pull=always, so a Consumer on:3stays on whatever they pulled first and never follows the major line. The dogfood config reads better here, and the README probably should add it.claude mcp list/claude mcp getdisplay the arg asFORGEJO_URL=${FORGEJO_URL}and drop the:-default. That's only how they print it, since the default is applied at spawn (see 2), but a reader could find it confusing.Merge Danger
Door: two-way
Reverting one commit removes the server.
Blast Radius: contributors
Only sessions opened in this repo are affected. The first time, they're asked to approve
forgejo. After that, each session pulls the Image (--pull=always), so starting offline means forgejo fails while context7 keeps working. If the token isn't exported, forgejo still connects, but every tool call returnstoken is required. Consumers and the published Image are not affected.