Considered and declined: renaming the plugin MCP servers to brain-local / gitea-local / infra-local #47

Open
opened 2026-09-15 09:26:12 +00:00 by mathias · 0 comments
Owner

Recording a rejected option so it is not re-proposed. Found 2026-09-15 on the Trucker engagement, after the per-turn MCP auth reminder caused an agent to tell the user twice that a working capability was unavailable.

The problem it was meant to solve

The plugin's .mcp.json declares servers named literally brain, infra, gitea. Separate claude.ai connectors are named claude.ai brain / claude.ai gitea, pointing at a different host for the same logical service:

brain-mcp.d-ma.be   -> 5.150.212.35     public ingress    (claude.ai web/desktop/mobile)
koala.tail30472e…   -> 100.109.2.126    Tailscale CGNAT   (Claude Code on a tailnet host)

Both are necessary — Anthropic's servers cannot route to 100.64/10, so the public ingress is the only path for the non-Code surfaces, and the tailnet path is the only one where traffic never leaves the estate.

The per-turn reminder lists bare brain and gitea alongside claude.ai gitea, which reads as though the plugin servers are down. Proposal was to rename the plugin's servers to brain-local / gitea-local / infra-local so the pair is legible at a glance.

Why it is not worth doing

The tool namespace derives from the server name. mcp__plugin_<plugin>_<server>__<tool>, so renaming the server renames every tool:

mcp__plugin_skills_brain__brain_query  ->  mcp__plugin_skills_brain_local__brain_query

Measured blast radius on one host:

  • 5 permission rules in .claude/settings.local.json name the namespace explicitly (brain_query, brain_read, brain_write, infra__pods_list, infra__pods_list_in_namespace). All would stop matching, so every previously-allowed brain call starts prompting again.
  • Agent memory and estate docs that name the namespace explicitly.
  • Three cached plugin versions on disk here (0.18.1, 0.19.4, 0.19.5), and the same on every other host — a rename means a version bump and a pull everywhere before the names agree.

And the reminder would still be wrong. claude mcp list on 2026-09-15 showed eleven of eleven ✔ Connected, including every server the reminder claimed needed authentication. Renaming does not make a false statement true; it makes it false with clearer names.

What was done instead

The rule, not the name: a reminder describes a configuration expectation, a call describes reality. Before stating a capability is unavailable, call it once, or run claude mcp list. Captured in the brain as wiki/homelab/failures/claude-code-mcp-auth-reminder-is-not-evidence.

If this is revisited

Two things would change the calculus:

  1. If the reminder becomes accurate — then legible names have real value and the rename is worth its migration cost.
  2. If the permission rules move to wildcards (mcp__plugin_skills_brain__*), the largest part of the blast radius disappears and the rename becomes cheap. That is arguably worth doing on its own merits.

Renaming the claude.ai connectors instead is free and carries no blast radius, but does not address the bare brain / gitea in the reminder, because those come from this repo.


Created via git-mcp on behalf of @mathias

Recording a rejected option so it is not re-proposed. Found 2026-09-15 on the Trucker engagement, after the per-turn MCP auth reminder caused an agent to tell the user twice that a working capability was unavailable. ## The problem it was meant to solve The plugin's `.mcp.json` declares servers named literally `brain`, `infra`, `gitea`. Separate claude.ai connectors are named `claude.ai brain` / `claude.ai gitea`, pointing at a different host for the same logical service: ``` brain-mcp.d-ma.be -> 5.150.212.35 public ingress (claude.ai web/desktop/mobile) koala.tail30472e… -> 100.109.2.126 Tailscale CGNAT (Claude Code on a tailnet host) ``` Both are necessary — Anthropic's servers cannot route to `100.64/10`, so the public ingress is the only path for the non-Code surfaces, and the tailnet path is the only one where traffic never leaves the estate. The per-turn reminder lists bare `brain` and `gitea` alongside `claude.ai gitea`, which reads as though the plugin servers are down. Proposal was to rename the plugin's servers to `brain-local` / `gitea-local` / `infra-local` so the pair is legible at a glance. ## Why it is not worth doing **The tool namespace derives from the server name.** `mcp__plugin_<plugin>_<server>__<tool>`, so renaming the server renames every tool: ``` mcp__plugin_skills_brain__brain_query -> mcp__plugin_skills_brain_local__brain_query ``` Measured blast radius on one host: - **5 permission rules** in `.claude/settings.local.json` name the namespace explicitly (`brain_query`, `brain_read`, `brain_write`, `infra__pods_list`, `infra__pods_list_in_namespace`). All would stop matching, so every previously-allowed brain call starts prompting again. - Agent memory and estate docs that name the namespace explicitly. - Three cached plugin versions on disk here (`0.18.1`, `0.19.4`, `0.19.5`), and the same on every other host — a rename means a version bump and a pull everywhere before the names agree. **And the reminder would still be wrong.** `claude mcp list` on 2026-09-15 showed **eleven of eleven ✔ Connected**, including every server the reminder claimed needed authentication. Renaming does not make a false statement true; it makes it false with clearer names. ## What was done instead The rule, not the name: **a reminder describes a configuration expectation, a call describes reality.** Before stating a capability is unavailable, call it once, or run `claude mcp list`. Captured in the brain as `wiki/homelab/failures/claude-code-mcp-auth-reminder-is-not-evidence`. ## If this is revisited Two things would change the calculus: 1. **If the reminder becomes accurate** — then legible names have real value and the rename is worth its migration cost. 2. **If the permission rules move to wildcards** (`mcp__plugin_skills_brain__*`), the largest part of the blast radius disappears and the rename becomes cheap. That is arguably worth doing on its own merits. Renaming the **claude.ai connectors** instead is free and carries no blast radius, but does not address the bare `brain` / `gitea` in the reminder, because those come from this repo. --- _Created via git-mcp on behalf of @mathias_
mathias added the risk/lowsize/xstype/docs labels 2026-09-16 22:21:51 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: mathias/skills#47