MCP server

Drive the installer with tool calls instead of shell. Same engine as the CLI (internal/installer), same validation, receipts, and proof — the transports never diverge.

Install

install.sh already puts gogogo-mcp next to gogogo:

curl -sSfL https://raw.githubusercontent.com/calionauta/gogogo/master/install.sh | sh -s -- --run

Or build from source (needs Go):

cd cmd/gogogo-mcp && go build -o gogogo-mcp .

Check it: gogogo-mcp --help prints the catalog.

Wire it into your client

The server speaks MCP over stdio: no port, no daemon, no deploy. Your agent client spawns the binary per session. Add one block to the client config (adjust the path if you installed elsewhere — default below is where install.sh puts it):

{ "mcpServers": { "gogogo": { "command": "~/.local/bin/gogogo-mcp" } } }

That JSON shape fits Claude Code (.mcp.json per project, or claude mcp add gogogo -- ~/.local/bin/gogogo-mcp for just you). The others need their own format — same binary, same tools:

Use the absolute path (echo $HOME) — most clients spawn without a shell, so ~ may not expand. Cursor, VS Code, BB and other JSON-config clients take the Claude Code block verbatim.

Tools

ToolChanges anything?What it does
advise_stackNoOpinions: which units fit a use-case, off-switches, Go/Zig rule. Optional dir adds the same probe as the CLI's --dir. Answers in one of three scopes — see below. Start here
capabilities_listNoFull capability registry JSON
trim_planNoPreview a scaffold/trim (validates ids, shows consequences)
trim_applyYes (confirm:true)Rename + trim + tidy + build proof
check_treeNoMarker drift verdict per unit
add_unitYes (confirm:true)Restore a unit (dryRun:true previews)

Read-only tools need nothing else. Mutating tools fail closed without confirm:true — preview with trim_plan (or dryRun:true) first, then apply. Formats default to json on this transport.

Generated code follows skills/gogogo-coding-standards (Go rules; advise_stack output cites it).

The three advise_stack scopes

Chosen from need alone. Check the scope field before acting on the rest. The tool knows the template plus its one native exception — never a stack label:

scopeWhenWhat the rest of the document contains
templatea gogogo-shaped need — or anything the vocabulary does not match (full map shown instead of a guess; scaffold first-run withheld when nothing matched)the 24 capabilities + keep/drop presets — act on these
exception-to-gothe need names Zigthe exception-to-go gate + skill pointer; nothing installs under the exception
go-standardsa need that forbids dependencies ("stdlib only", "no deps")the Go-standards pointer only; the capability table is absent, not empty

On go-standards, do not read the absence of capabilities as "no opinion" — the rules say why the template cannot apply and where the Go standards live. For an exception-to-go need, apply the gate (Go baseline + profile first) and read the referenced skill; do not try to install template units.

check_tree needs a gogogo checkout

check_tree verifies the trim manifest against a scaffolded tree. Run it on an unrelated project and it now returns a single CHECK-FAIL (tree) not a gogogo checkout line rather than one failure per missing marker, so a wrong-repo call is distinguishable from a real drift problem.

Pattern

  1. advise_stack with the use-case in plain words (empty need returns the full map).
  2. trim_plan to preview the consequences.
  3. trim_apply with confirm:true to execute.

Full catalog with parameter shapes: cmd/gogogo-mcp. Agent strategies and the scripted CLI equivalent: getting-started.