Skip to main content
Glama

vim_register

Manage and update text content in Neovim registers. Specify a register name and content to store, enhancing workflow efficiency in the mcp-neovim-server environment.

Instructions

Manage Neovim register contents

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
contentYesThe text content to store in the specified register
registerYesRegister name - a lowercase letter [a-z] or double-quote ["] for the unnamed register

Implementation Reference

  • Core handler function that validates the register name and uses Neovim's setreg API to store the provided content in the specified register.
    public async setRegister(register: string, content: string): Promise<string> { const validRegisters = [...'abcdefghijklmnopqrstuvwxyz"']; if (!validRegisters.includes(register)) { return 'Invalid register name'; } try { const nvim = await this.connect(); await nvim.eval(`setreg('${register}', '${content.replace(/'/g, "''")}')`); return `Register ${register} set`; } catch (error) { console.error('Error setting register:', error); return 'Error setting register'; } }
  • src/index.ts:243-268 (registration)
    MCP server.tool registration for 'vim_register', including Zod input schema validation and thin async handler wrapper that delegates to NeovimManager.setRegister.
    server.tool( "vim_register", "Manage Neovim register contents", { register: z.string().regex(/^[a-z"]$/).describe("Register name - a lowercase letter [a-z] or double-quote [\"] for the unnamed register"), content: z.string().describe("The text content to store in the specified register") }, async ({ register, content }) => { try { const result = await neovimManager.setRegister(register, content); return { content: [{ type: "text", text: result }] }; } catch (error) { return { content: [{ type: "text", text: error instanceof Error ? error.message : 'Error setting register' }] }; } } );
  • Zod schema defining the input parameters: register (a-z or ") and content (string).
    { register: z.string().regex(/^[a-z"]$/).describe("Register name - a lowercase letter [a-z] or double-quote [\"] for the unnamed register"), content: z.string().describe("The text content to store in the specified register") },
  • Helper code in getNeovimStatus that reads current register contents using getreg for status reporting.
    const registers: { [key: string]: string } = {}; const registerNames = [...'abcdefghijklmnopqrstuvwxyz', '"', ...Array(10).keys()]; for (const reg of registerNames) { try { const content = String(await nvim.eval(`getreg('${reg}')`)); // Only include registers that have content if (content && content.trim().length > 0) { registers[String(reg)] = content; } } catch (e) { // Register empty or error } }

Other Tools

Related Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/bigcodegen/mcp-neovim-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server