Hardcoding mcp__neovim__vim_* in the agent/skill prose was wrong on
two counts: (1) the prefix was flat-out incorrect — a plugin-shipped
.mcp.json server is namespaced mcp__plugin_<plugin>_<key>__, not
mcp__<key>__; (2) hardcoding any fully-qualified MCP tool name in
prose is fragile — it depends on registration method and topology
(metamcp aggregation injected/removed a segment).
- frontmatter tools:/allowed-tools: use the correct prefix wildcard
mcp__plugin_nvim-agentic-companion_neovim__* (the allowlist needs a
real pattern; one place; stable with plugin name + .mcp.json key)
- all prose now names tools by leaf (vim_command, vim_health, …) and
tells the agent to match those against its actual runtime toolset
rather than assume a prefix
MetaMCP never re-dials a restarted upstream — proven for both STDIO
and STREAMABLE_HTTP upstreams — so it cannot front an ephemeral,
editor-bound MCP. The pool now fronts the nvim-mcp-bridge directly:
Claude Code -> mcp-session-pool /p/neovim -> nvim-mcp-bridge -> nvim
The pool re-establishes on its own (_ensure_pinned re-runs initialize),
so an event-driven /repin (fired by the socket-appearance systemd.path
oneshot) actually heals the chain.
- tool names revert to two-segment mcp__neovim__vim_* (no MetaMCP
aggregation prefix)
- agents/companion.md + skills + README: surface description and
troubleshooting runbook rewritten for the pool->bridge->nvim chain
mcp-neovim-server no longer runs as a per-session npx stdio child.
It is now a MetaMCP namespace upstream on emmett (one persistent
process), reached over Streamable-HTTP via the mcp-session-pool:
Claude Code -> pool.localhost:12010/p/neovim/mcp
-> MetaMCP neovim namespace -> mcp-neovim-server -> nvim socket
- .mcp.json: stdio npx server -> streamable-http pool endpoint
- agents/companion.md + skills: tool names are now 3-segment
(mcp__neovim__neovim__vim_*) — the MetaMCP aggregation shape; the
surface description and unavailability runbook updated for the
three-link path (nvim socket / MetaMCP / session)
- README: connection-path diagram
Host side (servers/emmett, deployed separately): neovim added to
services.mcp-session-pool.upstreams; metamcp.nix seeds the neovim
mcp_servers row + mapping and adds nodejs to the unit PATH.
Adds a Claude Code agent and three skills for collaborating with the
user's running Neovim instance via mcp-neovim-server and the official
coder/claudecode.nvim plugin:
- agents/companion.md — the nvim companion identity, prefers runtime
introspection over training-data guessing
- skills/editor-introspect — read-only queries against the live editor
- skills/editor-act — safe driving (open, jump, toggle, run); no buffer edits
- skills/claude-code-handoff — delegate buffer edits to the in-editor
Claude Code session so users get a diff to accept or reject