Neovim MCP服务器
使用MCP和官方的Neovim/node客户端JavaScript库将Claude Desktop(或任何模型上下文协议客户端)连接到Neovim。该服务器利用Vim的原生文本编辑命令和工作流(Claude已经理解)来创建轻量级代码或通用AI文本辅助层。
特性
- 例如,如果您公开了一个套接字文件,则连接到您的nvim实例
--listen /tmp/nvim,启动nvim时 - 查看当前缓冲区并管理缓冲区切换
- 获取光标位置、模式、文件名、标记、寄存器和视觉选择
- 通过vim运行vim命令和可选的shell命令
- 可以使用插入、替换或replaceAll模式进行编辑
- 使用正则表达式支持搜索和替换功能
- 具有quickfix集成的项目范围grep搜索
- 全面的窗口管理
- 健康监测和连接诊断
API
资源
nvim://session:当前neovim文本编辑器会话nvim://buffers:当前Neovim会话中所有打开的缓冲区列表,元数据包括修改后的状态、语法和窗口ID
工具
核心工具
-
vim_buffer
-
使用行号获取缓冲区内容(支持文件名参数)
-
输入
filename(字符串,可选)-按文件名获取特定缓冲区 -
返回带有缓冲区内容的编号行
-
vim_命令
-
向VIM发送导航、点编辑和行删除命令
-
输入
command(字符串) -
使用以下命令运行vim命令
nvim.replaceTermcodes.多个命令可用于换行 -
支持的Shell命令
!前缀当ALLOW_SHELL_COMMANDS=true -
在出错时,
'nvim:errmsg'返回内容 -
vim_status
-
获取全面的Neovim状态
-
返回光标位置、模式、文件名、增强检测的视觉选择、窗口布局、当前选项卡、标记、寄存器、工作目录、LSP客户端信息和插件检测
-
增强的视觉选择报告:检测视觉模式类型(字符/行/块),提供准确的选择文本、开始/结束位置和最后一个视觉选择标记
-
vim_edit
-
使用插入、替换或replaceAll模式编辑行
-
输入
startLine(数字),mode("insert"|"replace"|"replaceAll"),lines(字符串) -
插入:在startLine处插入线条
-
replace:替换从startLine开始的行
-
replaceAll:替换整个缓冲区内容
-
vim_indow
-
操纵Neovim窗口(拆分、vsplit、关闭、导航)
-
输入
command(字符串:“split”、“vsplit”、“only”、“close”、“wincmd h/j/k/l”) -
vim_mark
-
在特定位置设置命名标记
-
输入
mark(字符串:a-z),line(数字),column(编号) -
vim_register
-
设置寄存器内容
-
输入
register(字符串:a-z或“”),content(字符串) -
vim_视觉
-
创建视觉模式选择
-
输入
startLine(数字),startColumn(数字),endLine(数字),endColumn(编号)
增强的缓冲区管理
-
vim_buffer_开关
-
按名称或编号在缓冲区之间切换
-
输入
identifier(string | number)-缓冲区名称或编号 -
vim_buffer_save
-
保存当前缓冲区或保存到特定文件名
-
输入
filename(字符串,可选)-保存到特定文件 -
vim_file_open
-
将文件打开到新缓冲区
-
输入
filename(string)-要打开的文件
搜索和替换
-
vim_search
-
使用正则表达式支持在当前缓冲区中搜索
-
输入
pattern(字符串),ignoreCase(布尔值,可选),wholeWord(布尔值,可选) -
vim_search_replace
-
查找并替换为高级选项
-
输入
pattern(字符串),replacement(字符串),global(布尔值,可选),ignoreCase(布尔值,可选),confirm(布尔值,可选) -
vim_grep
-
使用vimgrep和快速修复列表进行项目范围内的搜索
-
输入
pattern(字符串),filePattern(字符串,可选)-要搜索的文件模式
高级工作流工具
-
vim_macro
-
录制、停止和播放Vim宏
-
输入
action(“录制”|“停止”|“播放”),register(字符串a-z),count(数字,可选) -
vim_tab
-
完成标签管理
-
输入
action(“新建”|“关闭”|“下一页”|“上一页”|“第一页”|《最后一页》|“列表”),filename(字符串,可选) -
vim_fold
-
代码折叠操作
-
输入
action(“创建”|“打开”|“关闭”|“切换”|“开”|“关”|“删除”),startLine/endLine(数字,用于创建) -
vim_jump
-
跳转列表导航
-
输入
direction(“后退”|“前进”|“列表”)
系统工具
-
维姆健康
-
检查Neovim连接健康状况和套接字状态
使用这套全面的 19工具,Claude可以查看您的neovim会话,导航缓冲区,执行搜索,进行编辑,录制宏,管理标签和折叠,并使用标准的neovim功能处理您的完整开发工作流程。
鼓励
- neovim工作流:获取常见Neovim工作流的上下文帮助和指导,包括编辑、导航、搜索、缓冲区管理、窗口操作和宏使用。提供使用可用MCP工具完成任务的分步说明。
错误处理
服务器通过自定义错误类和一致的错误响应实现了全面的错误处理:
- Neovim连接错误:套接字连接失败,并显示详细消息
- NeovimCommandError:命令上下文中的命令执行失败
- NeovimValidation错误:输入验证失败
v0.5.2中的新功能:所有工具现在都包含强大的try-catch错误处理,以正确的MCP格式返回有意义的错误消息。功能包括连接健康监控、优雅的错误传播和可操作的错误消息,以帮助诊断问题。
局限性
- 可能无法与复杂的neovim配置或插件良好交互
- 出于安全考虑,默认情况下禁用Shell命令执行
- 需要套接字连接-不适用于标准vim
配置
环境变量
ALLOW_SHELL_COMMANDS:设置为“true”以启用shell命令执行(例如。!ls).为了安全起见,默认为false。NVIM_SOCKET_PATH:设置为Neovim套接字的路径。如果未指定,则默认为“/tmp/nvim”。
安装
选项1:DXT包(推荐)
- 下载最新
.dxt文件来自 发布 - 将文件拖动到Claude Desktop
选项2:手动安装
将此添加到您的 claude_desktop_config.json:
JSON``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15{ “mcpServers”: { “MCP Neovim Server”: { “command”: “npx”, “args”: [ “-y”, “mcp-neovim-server” ], “env”: { “ALLOW_SHELL_COMMANDS”: “true”, “NVIM_SOCKET_PATH”: “/tmp/nvim” } } } }
## 许可证
此MCP服务器根据MIT许可证获得许可。这意味着您可以根据MIT许可证的条款和条件自由使用、修改和分发软件。有关更多详细信息,请参阅项目存储库中的LICENSE文件。