mcpField
V
Vim MCP Server

Vim MCP Server

远程服务
github.com/breggles开发工具04 周前更新
代码仓库

关于 Vim MCP Server

Vim MCP Server 在 Vim 内运行,让 MCP 客户端(包括编码 Agent)查看和修改缓冲区,并控制编辑器导航。它还提供 Vim 差异视图、消息历史及 quickfix 和 location 列表;部分写入和命令工具需显式启用。

主要功能

  1. 01读取和编辑缓冲区
  2. 02打开和关闭文件
  3. 03移动光标并读取选区
  4. 04管理 quickfix 与 location 列表
  5. 05显示文件和 Git 差异
  6. 06读取 Vim 消息历史

适用场景

  1. 01向编码 Agent 展示变更文件和行
  2. 02分享缓冲区选区以获取代码建议
  3. 03跳转到多个代码位置
  4. 04在 Vim 中查看文件或 Git 差异

MCP 相关

它是在 Vim 内运行的 HTTP MCP 服务,向 MCP 客户端提供编辑器工具。缓冲区保存、编辑和执行任意 Ex 命令可通过选项启用。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址http://localhost:8765/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;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_port8765服务监听的端口
g:mcp_server_autostart0在 VimEnter 时自动启动服务
g:mcp_server_allow_execute0启用 execute_command 工具
g:mcp_server_allow_save0启用 save_buffer 工具
g:mcp_server_allow_edit0启用 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

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。