关于 Vim MCP Server
Vim MCP Server 在 Vim 内运行,让 MCP 客户端(包括编码 Agent)查看和修改缓冲区,并控制编辑器导航。它还提供 Vim 差异视图、消息历史及 quickfix 和 location 列表;部分写入和命令工具需显式启用。
主要功能
- 01读取和编辑缓冲区
- 02打开和关闭文件
- 03移动光标并读取选区
- 04管理 quickfix 与 location 列表
- 05显示文件和 Git 差异
- 06读取 Vim 消息历史
适用场景
- 01向编码 Agent 展示变更文件和行
- 02分享缓冲区选区以获取代码建议
- 03跳转到多个代码位置
- 04在 Vim 中查看文件或 Git 差异
MCP 相关
它是在 Vim 内运行的 HTTP MCP 服务,向 MCP 客户端提供编辑器工具。缓冲区保存、编辑和执行任意 Ex 命令可通过选项启用。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
http://localhost:8765/mcpclaude mcp add --transport http vim http://localhost:8765/mcp{"mcpServers":{"vim":{"type":"http","url":"http://localhost:8765/mcp"}}}在 Cursor 中打开{"servers":{"vim":{"type":"http","url":"http://localhost:8765/mcp"}}}在 VS Code 中打开{"mcpServers":{"vim":{"type":"http","url":"http://localhost:8765/mcp"}}}{"mcpServers":{"vim":{"serverUrl":"http://localhost:8765/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
vim-mcp-server
嵌入 Vim 的 MCP(Model Context Protocol)服务。它通过 HTTP 提供工具,让兼容 MCP 的客户端(例如 AI 编码 Agent)读取和修改缓冲区、移动光标、获取可视选择、管理 quickfix 和位置列表、打开并排差异视图(包括在 Vim 内计算的 git 差异)、读取消息历史记录以及运行 Ex 命令。
目前,我主要用它让 Agent 在 Vim 中为我显示文件和行。有时,我也会用它向 Agent 显示选中的区域。
要求
- Vim 编译时启用了
+python3
安装
使用你喜欢的插件管理器。
vim-plug
Plug 'breggles/vim-mcp-server'
Vundle
Plugin 'breggles/vim-mcp-server'
手动安装
将仓库克隆到 Vim 的 packages 目录:
git clone https://github.com/breggles/vim-mcp-server.git \
~/.vim/pack/plugins/start/vim-mcp-server
用法
启动服务
在 Vim 中运行:
:McpServerStart
在 vimrc 中添加以下内容,即可在启动 Vim 时自动启动服务:
let g:mcp_server_autostart = 1
MCP 客户端配置
将 MCP 客户端指向 http://127.0.0.1:8765/mcp(或你选择的端口)。
例如,若使用 opencode,可将服务添加到 opencode.jsonc:
"mcp": {
"vim": {
"type": "remote",
"url": "http://localhost:8765/mcp",
"enabled": true
}
}
命令
| 命令 | 说明 |
|---|---|
:McpServerStart [port] | 启动服务(默认端口为 8765) |
:McpServerStop | 停止服务 |
:McpServerStatus | 显示服务状态和 URL |
选项
| 变量 | 默认值 | 说明 |
|---|---|---|
g:mcp_server_port | 8765 | 服务监听的端口 |
g:mcp_server_autostart | 0 | 在 VimEnter 时自动启动服务 |
g:mcp_server_allow_execute | 0 | 启用 execute_command 工具 |
g:mcp_server_allow_save | 0 | 启用 save_buffer 工具 |
g:mcp_server_allow_edit | 0 | 启用 edit_buffer 工具 |
工具
该服务向 MCP 客户端提供以下工具:
| 工具 | 说明 |
|---|---|
list_buffers | 列出所有打开的缓冲区 |
get_buffer | 读取缓冲区内容(可指定行范围) |
edit_buffer | 替换、插入或删除缓冲区中的行 |
open_file | 通过 :edit 打开文件 |
save_buffer | 通过 :write 保存缓冲区(需选择启用,见上文) |
close_buffer | 通过 :bdelete 关闭缓冲区 |
get_cursor | 获取当前光标位置 |
set_cursor | 将光标移动到指定行和列 |
get_visual_selection | 获取当前的可视选择(如果有) |
execute_command | 运行任意 Ex 命令(需选择启用,见上文) |
get_quickfix_list | 获取当前 quickfix 列表条目 |
set_quickfix_list | 设置 quickfix 列表 |
get_location_list | 获取当前窗口的位置列表 |
set_location_list | 设置当前窗口的位置列表 |
get_messages | 获取 Vim 的消息历史记录(:messages 输出) |
show_diff | 在新标签页中打开并排差异视图(文件或内容) |
show_git_diff | 在新标签页中打开并排 git 差异视图;git 会在 Vim 内计算差异的两侧 |
工具接受缓冲区参数时,可以通过编号(buffer_id)或文件路径(buffer_path)指定。若两者都未提供,则使用当前缓冲区。
OpenCode 计划模式
默认情况下,OpenCode 的计划模式会禁用所有 MCP 工具。若要在计划模式下启用只读的
Vim 工具,请将以下内容添加到 opencode.jsonc 中:
{
"agent": {
"plan": {
"tools": {
"vim_*": false,
"vim_list_buffers": true,
"vim_get_buffer": true,
"vim_get_cursor": true,
"vim_get_visual_selection": true,
"vim_open_file": true,
"vim_set_cursor": true,
"vim_get_quickfix_list": true,
"vim_set_quickfix_list": true,
"vim_get_location_list": true,
"vim_set_location_list": true,
"vim_get_messages": true,
"vim_show_diff": true,
"vim_show_git_diff": true
}
}
}
}
这会先禁用所有 vim_* 工具,然后重新启用特定工具。请根据你的工作流调整
列表。
开发
若要在不安装插件的情况下使用它,请克隆仓库并将其添加到 Vim 的运行时路径中:
set rtp+=~/path/to/vim-mcp-server
将此内容添加到你的 vimrc 中,或手动运行。更改会在下次
启动 Vim 时生效。
使用以下命令生成帮助标签:
:helptags ~/path/to/vim-mcp-server/doc
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。