N

Neovim代码助手

@bigcodegen/mcp-neovim-server
0 Stars 49 次浏览 bigcodegen 更新于 2026-08-23

利用Vim原生的文本编辑命令和工作流(Claude已经理解这些),来创建一个轻量级的代码辅助层。

MCP 服务配置

复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用

{
  "mcpServers": {
    "MCP Neovim Server": {
      "args": [
        "-y",
        "mcp-neovim-server"
      ],
      "command": "npx",
      "env": {
        "ALLOW_SHELL_COMMANDS": "true",
        "NVIM_SOCKET_PATH": "/tmp/nvim"
      }
    }
  }
}

服务介绍

Neovim MCP 服务器

这是一个概念验证集成,它使用模型上下文协议(MCP)和官方的 neovim/node-client JavaScript 库在 Claude Desktop(或任何客户端)与 Neovim 之间建立连接。该服务器利用 Vim 的原生文本编辑命令和工作流,这些是 Claude 已经理解的,以此来创建一个轻量级的代码或通用 AI 文本辅助层。

功能

  • 如果您通过暴露一个套接字文件(例如 --listen /tmp/nvim)启动 nvim,则可以连接到您的 nvim 实例
  • 查看当前缓冲区
  • 获取光标位置、模式、文件名
  • 通过 Vim 运行 Vim 命令并可选地运行 shell 命令
  • 可以使用插入或替换进行编辑

API

资源

  • nvim://session: 当前的 Neovim 文本编辑会话
  • nvim://buffers: 当前 Neovim 会话中所有打开的缓冲区列表,包括修改状态、语法和窗口 ID 等元数据

工具

  • vim_buffer
    • 显示行号的当前 VIM 文本编辑器缓冲区
    • 输入 filename (字符串)
    • 文件名被忽略,返回带有当前活动缓冲区内容的编号行字符串
  • vim_command
    • 向 VIM 发送用于导航、定点编辑和删除行的命令
    • 输入 command (字符串)
    • 首先通过 nvim.replaceTermcodes 传递 Vim 命令。如果用换行符分隔,多个命令将生效
    • 出错时,返回 'nvim:errmsg' 内容
  • vim_status
    • 获取 VIM 编辑器的状态
    • 状态包含光标位置、模式、文件名、可视选择、窗口布局、当前标签页、标记、寄存器和工作目录
  • vim_edit
    • 使用插入、替换或全部替换在 VIM 编辑器中编辑行
    • 输入 startLine (数字), mode ("insert" | "replace" | "replaceAll"), lines (字符串)
    • insert 将在 startLine 处插入行
    • replace 将从 startLine 开始替换行
    • replaceAll 将替换整个缓冲区内容
  • vim_window
    • 操作 Neovim 窗口(分割、垂直分割、关闭、导航)
    • 输入 command (字符串: "split", "vsplit", "only", "close", "wincmd h/j/k/l")
    • 允许窗口管理操作
  • vim_mark
    • 在特定位置设置标记
    • 输入 mark (字符串: a-z), line (数字), column (数字)
    • 在指定位置设置命名标记
  • vim_register
    • 设置寄存器的内容
    • 输入 register (字符串: a-z 或 "), content (字符串)
    • 管理寄存器内容
  • vim_visual
    • 创建可视选择
    • 输入 startLine (数字), startColumn (数字), endLine (数字), endColumn (数字)
    • 创建可视模式选择

使用这套简单的工具,Claude 可以查看您的 Neovim 会话来回答问题以及对缓冲区进行编辑。

限制

(原文在此处结束,未提供具体的限制说明)

  • 这是一个快速的概念验证,用于尝试 Model Context Protocol。使用风险自负。
  • 可能与自定义的 neovim 配置不兼容!
  • 错误处理可以做得更好。
  • 有时 Claude 无法准确获取 vim 命令输入。

配置

环境变量

  • ALLOW_SHELL_COMMANDS:设置为 'true' 以启用 shell 命令执行(例如 !ls)。默认为 false 以确保安全。
  • NVIM_SOCKET_PATH:设置为你的 Neovim socket 的路径。如果未指定,默认为 '/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 文件。

相关 MCP 服务