README
🚀 Neovim MCP 服务器
本项目是一个概念验证项目,旨在通过 Model Context Protocol (MCP) 实现 Claude Desktop(或其他客户端)与 Neovim 的集成。它借助官方的 neovim/node-client JavaScript 库,构建了一个轻量级的代码或通用目的 AI 文本辅助层。
✨ 主要特性
- 若在启动 Neovim 时暴露了套接字文件(如
--listen /tmp/nvim),服务器可连接至 Neovim 实例。 - 支持查看当前打开的缓冲区。
- 能够获取光标位置、模式和文件名。
- 可执行 Neovim 命令以及可选的 shell 命令(通过 Neovim)。
- 支持使用插入或替换方式执行编辑操作。
📚 详细文档
资源
nvim://session:当前 Neovim 文本编辑会话。nvim://buffers:当前 Neovim 会话中所有打开缓冲区的列表,包含修改状态、语法和窗口 ID 等元数据。
工具
- vim_buffer:
- 显示当前 VIM 文本编辑器缓冲区的内容,并带有行号。
- 输入参数为
filename(字符串)。 - 若忽略文件名,将返回当前活动缓冲区内容的编号行字符串。
- vim_command:
- 可向 VIM 发送命令,用于导航、定点编辑和行删除。
- 输入参数为
command(字符串)。 - 首先通过
nvim.replaceTermcodes运行一个 Neovim 命令。若输入包含多个命令,可通过换行符分隔。 - 出错时返回
'nvim:errmsg'内容。
- vim_status:
- 用于获取 VIM 编辑器的状态。
- 状态信息包含光标位置、模式、文件名、视觉选择、窗口布局、当前标签页、标记、寄存器和工作目录。
- 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(数字)。 - 用于设置视觉选择范围。
通过以上工具,用户可以方便地与 Neovim 进行交互,实现各种编辑和管理功能。
📄 许可证
本项目遵循 MIT 许可证。请查看 LICENSE 文件以获取详细信息。
⚠️ 重要提示
本项目旨在提供一个接口,使 Claude 等 AI 工具能够更自然地与 Neovim 集成。尽管 Neovim 本身已经非常强大,但通过 MCP 协议扩展其功能,可以进一步提升开发效率和用户体验。
💡 使用建议
- 在使用过程中,请确保 Neovim 和相关插件已正确安装并配置。
- 对于高级功能,可能需要额外的配置或脚本支持。
- 如遇到问题,请参考项目文档或社区资源寻求帮助。
👏 贡献
欢迎任何贡献!无论是代码修复、功能添加还是文档改进,我们都欢迎你的参与。
请在提出更改前阅读我们的 CONTRIBUTING.md 文件,了解如何有效地为项目做出贡献。
Scan to join WeChat group