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
      }
    }
Install Server

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