A trailing mcp__…__* wildcard in an agent's tools: / a skill's
allowed-tools: does not expand — verified by spawning the companion
agent, which saw zero mcp__ tools despite the parent session having
all 19 connected. Working plugins (cluster) enumerate every MCP tool
by full name; do the same here.
- agents/companion.md, skills/*: tools:/allowed-tools: now list all 19
mcp__plugin_nvim-agentic-companion_neovim__vim_* tools explicitly
- companion.md: drop the stale nvim-mcp-repin.path/.service reference
(re-pin is now the bridge's ExecStartPost); spell out the launch-race
(issue #2) in the unavailability runbook
Fixes#1. Refs #2.
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.
mcp-neovim-server exposes tools named vim_command, vim_buffer,
vim_status, vim_edit, vim_window, vim_file_open, vim_search, etc. —
all with a vim_ prefix and with no eval tool. The agent and skills
previously referenced mcp__neovim__nvim_command and
mcp__neovim__nvim_eval, which do not exist, so every drive/introspect
call would have failed to resolve.
- agents/companion.md: add the full vim_* tool reference table; note
that lua is evaluated via vim_command with :lua print(...)
- skills/editor-introspect: add a 'tools you have' section; correct
the runnable-via line
- skills/editor-act: correct the description's tool references
- agents/companion.md: recognise three surfaces (mcp-neovim-server RPC,
claudecode.nvim IDE-link, declarative NixVim config) and rule for
picking between MCP-RPC vs IDE-link tools (selection/diff/diagnostics
-> IDE link; everything else -> mcp__neovim__*)
- skills/claude-code-handoff: document the full :ClaudeCode* command
surface (SelectModel, Status, TreeAdd, partial-file Add with line
range) and recommend partial-file Add over whole-buffer send
- skills/editor-act: fix markdown lint issues (vim language hint on
code fences, line-length on feedkeys snippet)
- agents/companion.md: expand tools to full editor + filesystem + web set
and grant mcp__neovim__* so the agent can drive nvim directly
- skills/*: each skill's allowed-tools also gains mcp__neovim__*
- .mcp.json: ship the mcp-neovim-server config with the plugin so
installing the plugin auto-wires the editor MCP (uses default socket
/run/user/1000/nvim.sock — adjust if your uid differs)
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