返回市场
mcp-neovim服务器

mcp-neovim服务器

作者:bigcodegen259 星标更新:2025-10-12

项目介绍

Neovim MCP Server

通过MCP和官方的neovim/node-client JavaScript库,将Claude Desktop(或任何Model Context Protocol客户端)连接到Neovim。该服务器利用Vim原生的文本编辑命令和工作流程,这些Claude已经理解,以创建一个轻量级的代码或通用AI文本辅助层。

<a href="https://glama.ai/mcp/servers/s0fywdwp87"><img width="380" height="200" src="https://gips2.baidu.com/it/u=152248013,1217179143&fm=3081&app=3081&f=PNG?w=760&h=400" alt="mcp-neovim-server MCP server" /></a>

功能

  • 如果在启动Neovim时暴露了一个套接字文件(例如 --listen /tmp/nvim),则可以连接到你的nvim实例
  • 查看当前缓冲区并管理缓冲区切换
  • 获取光标位置、模式、文件名、标记、寄存器和可视选择
  • 运行Vim命令,并可选地通过Vim运行shell命令
  • 使用插入、替换或全部替换模式进行编辑
  • 支持正则表达式的搜索和替换功能
  • 整个项目范围内的grep搜索,带有快速修复集成
  • 全面的窗口管理
  • 健康监控和连接诊断

API

资源

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

工具

核心工具

  • vim_buffer
    • 获取带行号的缓冲区内容(支持文件名参数)
    • 输入 filename (字符串,可选) - 通过文件名获取特定缓冲区
    • 返回带编号的行和缓冲区内容
  • vim_command
    • 向VIM发送命令用于导航、点编辑和行删除
    • 输入 command (字符串)
    • 使用 nvim.replaceTermcodes 运行Vim命令。多个命令可通过换行符分隔
    • ALLOW_SHELL_COMMANDS=true 时,支持使用 ! 前缀的shell命令
    • 错误时返回 'nvim:errmsg' 内容
  • vim_status
    • 获取全面的Neovim状态
    • 返回光标位置、模式、文件名、增强检测的可视选择、窗口布局、当前标签页、标记、寄存器、工作目录、LSP客户端信息和插件检测
    • 增强的可视选择报告:检测可视模式类型(字符/行/块)、提供准确的选择文本、起始/结束位置以及最后的可视选择标记
  • vim_edit
    • 使用插入、替换或全部替换模式编辑行
    • 输入 startLine (数字),mode ("insert" | "replace" | "replaceAll"),lines (字符串)
    • 插入:在 startLine 处插入行
    • 替换:从 startLine 开始替换行
    • 全部替换:替换整个缓冲区的内容
  • 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 (数字)

增强的缓冲区管理

  • vim_buffer_switch
    • 通过名称或编号在缓冲区之间切换
    • 输入 identifier (字符串 | 数字) - 缓冲区名称或编号
  • vim_buffer_save
    • 保存当前缓冲区或保存到特定文件名
    • 输入 filename (字符串,可选) - 保存到特定文件
  • vim_file_open
    • 将文件打开到新的缓冲区
    • 输入 filename (字符串) - 要打开的文件

搜索和替换

  • vim_search
    • 在当前缓冲区内进行正则表达式支持的搜索
    • 输入 pattern (字符串),ignoreCase (布尔值,可选),wholeWord (布尔值,可选)
  • vim_search_replace
    • 使用高级选项查找和替换
    • 输入 pattern (字符串),replacement (字符串),global (布尔值,可选),ignoreCase (布尔值,可选),confirm (布尔值,可选)
  • vim_grep
    • 使用vimgrep进行项目范围的搜索,带有快速修复列表
    • 输入 pattern (字符串),filePattern (字符串,可选) - 要搜索的文件模式

高级工作流工具

  • vim_macro
    • 记录、停止和播放Vim宏
    • 输入 action ("record" | "stop" | "play"),register (字符串:a-z),count (数字,可选)
  • vim_tab
    • 完整的标签页管理
    • 输入 action ("new" | "close" | "next" | "prev" | "first" | "last" | "list"),filename (字符串,可选)
  • vim_fold
    • 代码折叠操作
    • 输入 action ("create" | "open" | "close" | "toggle" | "openall" | "closeall" | "delete"),startLine/endLine (数字,用于创建)
  • vim_jump
    • 跳转列表导航
    • 输入 direction ("back" | "forward" | "list")

系统工具

  • vim_health
    • 检查Neovim连接健康状况和套接字状态

使用这组全面的19个工具,Claude可以查看你的neovim会话,导航缓冲区,执行搜索,进行编辑,记录宏,管理标签页和折叠,并处理完整的开发工作流程,使用标准的Neovim特性。

提示

  • neovim_workflow: 获取常见Neovim工作流程的上下文帮助和指导,包括编辑、导航、搜索、缓冲区管理、窗口操作和宏使用。提供逐步说明,以使用可用的MCP工具完成任务。

错误处理

该服务器实现了全面的错误处理,具有自定义错误类和一致的错误响应:

  • NeovimConnectionError: 带有详细消息的套接字连接失败
  • NeovimCommandError: 带有命令上下文的命令执行失败
  • NeovimValidationError: 输入验证失败

新版本v0.5.2: 所有工具现在都包含健壮的try-catch错误处理,返回有意义的错误消息,符合MCP格式。功能包括连接健康监测、优雅的错误传播和可操作的错误消息,以帮助诊断问题。

限制

  • 可能无法很好地与复杂的neovim配置或插件交互
  • 默认禁用shell命令执行以确保安全
  • 需要套接字连接 - 不适用于标准vim

配置

环境变量

  • ALLOW_SHELL_COMMANDS: 设置为 'true' 以启用shell命令执行(例如 !ls)。默认为false以确保安全。
  • NVIM_SOCKET_PATH: 设置为你的Neovim套接字路径。如果未指定,默认为 '/tmp/nvim'。

安装

选项1: DXT包(推荐)

  1. 发布页面下载最新的 .dxt 文件
  2. 将文件拖放到Claude Desktop

选项2: 手动安装

在你的 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文件。