mcp-neovim-server
让 Claude Desktop 直接操控 Neovim 的 MCP Server,实现 AI 与编
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
让 Claude Desktop 直接操控 Neovim 的 MCP Server,实现 AI 与编
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
你有没有过这样的经历:正在 Neovim 里写代码,AI 助手却跑在另一个窗口或另一个应用里,两边的上下文永远对不上?你需要反复复制粘贴、截图上传,AI 给的建议还得手动搬回编辑器。这种割裂感,是很多开发者日常最大的效率杀手。
mcp-neovim-server 解决的就是这个问题:它把 Claude Desktop 和 Neovim 这两个工具真正「缝合」在一起,让 AI 能够实时感知你在编辑器里的所有状态——光标位置、打开的缓冲区、选中的代码块、当前的工作目录——并直接在你的 Neovim 会话里执行编辑操作。Claude 不再是旁观者,而是成为了编辑器本身的一部分。
这个项目诞生在 Model Context Protocol(MCP) 生态迅速扩张的背景下。MCP 是 Anthropic 在 2024 年底至 2025 年初力推的开放协议,目标是打破 AI 应用与外部工具之间的壁垒——让 Claude 这样的 LLM 能够以标准化方式与文件系统、数据库、浏览器、开发工具等资源交互,而不是每集成一个工具都要写一套定制代码。
在这个生态里,「MCP Server」扮演着翻译层的角色:它定义了一套工具(Tools)和资源(Resources),AI 客户端(如 Claude Desktop)通过 JSON-RPC over stdio 调用这些接口,Server 再把请求转发给实际的目标系统。Neovim 作为一个高度可编程的文本编辑器,本身就支持 RPC 通信,正是 MCP 的理想宿主。
作者 bigcodegen 的核心思路很清晰:既然 Claude 已经在理解 Vim 命令和 Vim 工作流方面做得相当好,那与其重新训练模型,不如直接利用 Neovim 现有的 API 和操作原语,让 Claude 以「Vim 的语言」来操控编辑器。这比让 AI 自己「模拟」一个编辑器环境要可靠得多。
从架构上看,mcp-neovim-server 是一个 Node.js(TypeScript)编写的 MCP Server,通过三个关键组件连接 Claude 和 Neovim:
1. @modelcontextprotocol/sdk — MCP 协议实现
项目采用官方 MCP SDK(@modelcontextprotocol/sdk)来实现标准化的 Server 端。SDK 提供了 McpServer 类、ResourceTemplate 和 StdioServerTransport:Claude Desktop 通过标准输入/输出与 Server 通信,所有消息遵循 MCP 的 JSON-RPC 协议规范。这种基于 stdio 的传输方式天然适合本地工具集成,无需启动网络服务,延迟极低。
2. neovim(官方 node-client) — Neovim 通信桥梁
项目使用官方维护的 neovim npm 包(v5.3.0),这是一个 Node.js 到 Neovim RPC API 的桥接库。它支持 Vim 的 msgpack-rpc 协议,能够以编程方式执行 Vim 命令、读写缓冲区、操作窗口、管理寄存器等完整能力。连接方式是通过 Unix Socket:Neovim 启动时以 --listen /tmp/nvim 参数监听 socket 文件,MCP Server 连接到这个 socket 与 Neovim 通信。
3. NeovimManager(单例模式) — 统一管理接口
项目自定义了 NeovimManager 类,以单例模式管理 Neovim 连接、会话状态和错误处理。它封装了所有底层 API 调用,对外暴露干净的高层接口(getBufferContents、sendCommand、editLines、manipulateWindow 等),并在连接失败时提供明确的错误提示(NeovimConnectionError、NeovimCommandError、NeovimValidationError 三类自定义异常)。
mcp-neovim-server 提供了一组精心设计的 MCP Tools,覆盖了日常编辑的几乎所有场景:
| Tool 名称 | 功能说明 | 技术细节 |
|---|---|---|
vim_buffer | 读取缓冲区内容 | 支持按文件名定位特定缓冲区,返回带行号的内容 |
vim_command | 执行 Vim 命令 | 支持普通 Ex 命令和 shell 命令(需 ALLOW_SHELL_COMMANDS=true) |
vim_status | 获取编辑器综合状态 | 返回光标位置、模式、文件路径、窗口布局、marks、registers、LSP 信息、当前工作目录 |
vim_edit | 编辑缓冲区 | 支持 insert / replace / replaceAll 三种模式 |
vim_window | 窗口管理 | 支持 split、vsplit、only、close、wincmd 导航 |
vim_mark | 设置命名标记 | 在指定行列设置 a-z 书签 |
vim_register | 管理寄存器 | 支持 a-z 命名寄存器和未命名寄存器 |
vim_visual | 可视模式选择 | 支持 character / line / block 可视选择 |
除了 Tools,项目还暴露了两个 MCP Resources:nvim://session(当前 Neovim 会话状态)和 nvim://buffers(所有打开缓冲区的元数据,包括修改状态、语法高亮、window ID)。Claude 可以随时通过 Resource 接口查询编辑器上下文,而不必主动调用 Tool。
特别值得一提的是 vim_status 中的 visualInfo 增强检测:它能准确识别当前是否处于可视模式(characterwise/linewise/blockwise),记录选中区域的起止坐标,以及上次可视选择的标记位置。这对于 Claude 理解「用户当前想操作哪段代码」至关重要。
mcp-neovim-server 是一款纯 CLI 工具,没有 Web 界面,天然不适合 Docker 部署。它的核心价值在于深度集成到用户的本地编辑器环境中,部署过程更像「配置」而非「安装」。
完整配置链路:
1. 安装:npm install -g mcp-neovim-server (自动构建 TypeScript → JS)
2. 配置 Claude Desktop:编辑 ~/.config/claude-desktop.json,
添加 mcpServers 配置,指定命令和 socket 路径
3. 启动 Neovim:nvim --listen /tmp/nvim
4. 启动 Claude Desktop:Claude 自动连接 MCP Server
整个过程中,唯一的前置依赖是 Node.js >= 18 和 Neovim >= 0.9.0(需支持 RPC API),对硬件几乎没有要求(256MB RAM、50MB 磁盘),无需 GPU。对于已经习惯在终端中工作流的开发者来说,这套配置非常轻量。
需要注意的是,socket 连接方式意味着 Neovim 必须保持运行状态。如果 Neovim 重启,Claude Desktop 的 MCP 连接也会断开,需要重新建立——这是一个设计上的取舍:保持连接实时性意味着牺牲了一点健壮性。
这个项目并非没有槽点:
1. 安全模型需谨慎配置
默认情况下,shell 命令执行是关闭的(ALLOW_SHELL_COMMANDS=false)。开启后,任何通过 Claude 执行的 shell 命令都会以运行 Neovim 的用户身份执行,这意味着 Claude 实际上获得了命令执行权限。如果在不可信环境中使用(比如处理来自网络的代码),这是一个潜在的攻击面。文档中对此的说明相对简略,配置者需要自行评估风险。
2. Neovim 版本兼容性 项目依赖 Neovim 的 RPC API,这一 API 在 0.9.0+ 相对稳定,但不同插件生态(Lua 插件、vim-plug 等)可能影响 API 可用性。Issue 区有用户反映某些 Neovim 配置下连接不稳定。
3. 与 Copilot 等工具的定位重叠 如果用户已经在使用 GitHub Copilot、Codeium 等编辑器内 AI 插件,mcp-neovim-server 的差异化价值在于「让 Claude Desktop 控制 Neovim」这一特定场景,而非替代现有的编辑器内 AI 补全。对于只用 Claude CLI 或 Web 界面的用户,这个工具没有直接价值。
mcp-neovim-server 是 MCP 生态中一个相当有代表性的案例:它不追求做一个「大而全」的 AI IDE,而是专注于「连接」这一件事。
从更大的视角看,这类工具正在推动 AI 助手从「独立的对话窗口」向「嵌入式的智能代理」演进。Claude 不再只是一个问答机器,而是可以主动参与开发者的编辑会话、读取工作上下文、执行实际操作的协作者。这种模式与 GitHub Copilot 的「inline suggestion」不同——它基于开放的 MCP 协议,不绑定特定 IDE 或 AI 提供商,为未来更多样的 AI + 编辑器组合打开了可能性。
MCP 协议本身正处于快速迭代期,围绕它的工具生态(Servers、Clients、Inspector 调试工具)正在快速丰富。mcp-neovim-server 作为首批 Neovim MCP Server 之一,在 Glama AI 的 MCP 生态追踪中已有收录,反映了社区对其定位的认可。
如果你是一个习惯终端操作、同时重度依赖 Claude 的开发者,这个工具值得尝试——它可能改变你与 AI 协作的工作方式。