list_nvim_buffers
View all open Neovim buffers in the current directory to manage editing sessions and track active files.
Instructions
List all open buffers in Neovim instances running in the current directory
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- lib/nvim-operations.js:95-122 (handler)Core implementation of listing open buffers: connects to Neovim instances in current dir, fetches listed buffers with path, bufnr, cwd.export async function listOpenBuffers() { const instances = await getNvimInstancesInCwd(); const allBuffers = []; for (const { nvim, cwd } of instances) { try { const buffers = await nvim.buffers; for (const buf of buffers) { const listed = await nvim.call("buflisted", [buf.id]); if (listed) { const name = await buf.name; if (name) { allBuffers.push({ path: name, bufnr: buf.id, cwd, }); } } } } catch (error) { console.error("Error listing buffers:", error.message); } } return allBuffers; }
- index.js:215-225 (handler)MCP CallToolRequestSchema handler: invokes listOpenBuffers() and returns JSON-formatted buffer list as text content.if (name === "list_nvim_buffers") { const buffers = await listOpenBuffers(); return { content: [ { type: "text", text: JSON.stringify(buffers, null, 2), }, ], }; }
- index.js:114-122 (registration)Tool registration in ListToolsRequestSchema response, including name, description, and empty input schema.{ name: "list_nvim_buffers", description: "List all open buffers in Neovim instances running in the current directory", inputSchema: { type: "object", properties: {}, }, },
- index.js:118-121 (schema)Input schema definition for the list_nvim_buffers tool (no parameters required).inputSchema: { type: "object", properties: {}, },
- lib/nvim-operations.js:36-62 (helper)Helper function to find and connect to Neovim instances running in the current working directory, used by listOpenBuffers.export async function getNvimInstancesInCwd() { const cwd = process.cwd(); const sockets = await findNvimSockets(); const instances = []; for (const socketPath of sockets) { try { const nvim = attach({ socket: socketPath }); const instanceCwd = await nvim.call("getcwd", []); // Check if this nvim instance is in our current directory if (instanceCwd === cwd || instanceCwd.startsWith(cwd + "/")) { instances.push({ socket: socketPath, cwd: instanceCwd, nvim, }); } // Note: We don't quit non-matching instances, just skip them } catch (error) { // Failed to connect to this socket, skip it continue; } } return instances; }