Neovim Integration
Summary
This Neovim MCP server, developed by Derek White (bigcodegen), integrates Claude Desktop with Neovim using the Model Context Protocol and the official neovim/node-client library. It leverages Vim's native text editing commands to create a lightweight code assistance layer, allowing AI to interact directly with Neovim sessions. The server connects to a running Nvim instance, providing tools to view and edit buffers, execute Vim commands, and retrieve editor status. By abstracting Neovim's complexities, it enables AI assistants to seamlessly work within the familiar Vim environment. This implementation is particularly useful for developers seeking AI-enhanced coding assistance within their preferred text editor, facilitating tasks such as code review, refactoring, and context-aware suggestions without leaving the Neovim ecosystem.
Available Actions(8)
vim_buffer
Current VIM text editor buffer with line numbers shown. Input: filename (string). Filename is ignored, returns a string of numbered lines with the current active buffer content.
vim_command
Send a command to VIM for navigation, spot editing, and line deletion. Input: command (string). Runs a vim command first passed through nvim.replaceTermcodes. Multiple commands will work if separated by newlines. On error, 'nvim:errmsg' contents are returned.
vim_status
Get the status of the VIM editor. Status contains cursor position, mode, filename, visual selection, window layout, current tab, marks, registers, and working directory.
vim_edit
Edit lines using insert, replace, or replaceAll in the VIM editor. Input: startLine (number), mode ('insert' | 'replace' | 'replaceAll'), lines (string). Insert will insert lines at startLine, replace will replace lines starting at startLine, replaceAll will replace the entire buffer contents.
vim_window
Manipulate Neovim windows (split, vsplit, close, navigate). Input: command (string: 'split', 'vsplit', 'only', 'close', 'wincmd h/j/k/l'). Allows window management operations.
vim_mark
Set a mark at a specific position. Input: mark (string: a-z), line (number), column (number). Sets named marks at specified positions.
vim_register
Set content of a register. Input: register (string: a-z or '), content (string). Manages register contents.
vim_visual
Make a visual selection. Input: startLine (number), startColumn (number), endLine (number), endColumn (number). Creates visual mode selections.
Community Reviews
No reviews yet. Be the first to review!
Sign in to join the conversation