Neovim MCP 服务器
这是 Claude Desktop(或任何客户端)与 Neovim 之间使用模型上下文协议 (MCP) 和官方 neovim/node-client JavaScript 库进行概念验证集成的成果。该服务器利用 Vim 原生的文本编辑命令和工作流程(Claude 已理解这些命令和工作流程),创建轻量级代码或通用的 AI 文本辅助层。
特征
- 如果您在启动 nvim 时公开套接字文件(例如
--listen /tmp/nvim
),则连接到您的 nvim 实例 - 查看当前缓冲区
- 获取光标位置、模式、文件名
- 通过 vim 运行 vim 命令和可选的 shell 命令
- 可以使用插入或替换进行编辑
API
资源
nvim://session
:当前 neovim 文本编辑器会话nvim://buffers
:当前 Neovim 会话中所有打开的缓冲区的列表,其中包含修改状态、语法和窗口 ID 等元数据
工具
- vim_buffer
- 显示当前 VIM 文本编辑器缓冲区的行号
- 输入
filename
(字符串) - 忽略文件名,返回包含当前活动缓冲区内容的编号行字符串
- vim命令
- 向 VIM 发送命令以进行导航、点编辑和行删除
- 输入
command
(字符串) - 运行首先通过
nvim.replaceTermcodes
传递的 vim 命令。多个命令之间用换行符分隔即可运行。 - 发生错误时,返回
'nvim:errmsg'
内容
- vim_status
- 获取 VIM 编辑器的状态
- 状态包含光标位置、模式、文件名、视觉选择、窗口布局、当前选项卡、标记、寄存器和工作目录
- vim_edit
- 在 VIM 编辑器中使用 insert、replace 或 replaceAll 编辑行
- 输入
startLine
(数字), mode
( "insert"
| "replace"
| "replaceAll"
), lines
(字符串) - 插入将在 startLine 处插入行
- replace 将替换从 startLine 开始的行
- replaceAll 将替换整个缓冲区内容
- vim_window
- 操作 Neovim 窗口(拆分、vsplit、关闭、导航)
- 输入
command
(字符串:“split”、“vsplit”、“only”、“close”、“wincmd h/j/k/l”) - 允许窗口管理操作
- vim_mark
- 在特定位置设置标记
- 输入
mark
(字符串:az)、 line
(数字)、 column
(数字) - 在指定位置设置命名标记
- vim_register
- 设置寄存器的内容
- 输入
register
(字符串:az或“), content
(字符串) - 管理寄存器内容
- vim_visual
- 进行视觉选择
- 输入
startLine
(数字)、 startColumn
(数字)、 endLine
(数字)、 endColumn
(数字) - 创建视觉模式选择
使用这套简单的工具,Claude 可以窥视您的 neovim 会话来回答问题以及对缓冲区进行编辑。
限制
- 这是对模型上下文协议进行快速概念验证的实验。使用风险自负。
- 可能无法与自定义 neovim 配置很好地交互!
- 错误处理可能会更好。
- 有时 Claude 无法正确输入 vim 命令。
配置
环境变量
ALLOW_SHELL_COMMANDS
:设置为 true 以允许执行 shell 命令(例如!ls
)。出于安全考虑,默认为 false 。NVIM_SOCKET_PATH
:设置为 Neovim 套接字的路径。如果未指定,则默认为 '/tmp/nvim'。
与 Claude Desktop 一起使用
将其添加到您的claude_desktop_config.json
中:
{
"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 文件。