使用说明
nvim-mcp
生成和控制Neovim实例的MCP服务器。它允许你的AI代理测试你的Neovim配置——打开文件、运行命令、执行Lua、发送击键、检查缓冲区和捕获PNG屏幕截图。
三种模式满足不同的需求。 PTY模式 在伪终端中运行Neovim,通过终端模拟提供完整的屏幕截图支持。 无头模式 嵌入Neovim而不显示,用于轻量级脚本编写。 终端模式 在真实的GUI终端中启动Neovim,并捕获其窗口进行截图。
终端模式支持macOS上的Kitty、Ghostty和iTerm2。每个终端都通过自己的策略处理窗口发现、焦点管理和清理。截图使用macOS screencapture 并且需要屏幕录制权限。
需求
- Python 3.11+
- 新 0.10+
uv(推荐)或pip
安装
克隆仓库并注册 ~/.claude/.mcp.json:
{
"mcpServers": {
"neovim": {
"command": "uv",
"args": [
"run", "--project", "/path/to/nvim-mcp",
"python", "/path/to/nvim-mcp/nvim_mcp_server.py"
]
}
}
}
依赖关系由自动管理 uv run --project.
测试
uv run python tests/test_smoke.py # PTY mode with full config
uv run python tests/test_smoke.py --clean # PTY mode, no config
uv run python tests/test_smoke.py --headless --clean # Headless mode
uv run python tests/test_smoke.py --terminal kitty # Terminal mode (Kitty)
uv run python tests/test_smoke.py --terminal ghostty # Terminal mode (Ghostty)
uv run python tests/test_smoke.py --terminal iterm2 # Terminal mode (iTerm2, macOS)
添加 --clean 转到任何终端模式测试,跳过加载nvim配置。
运作原理
三种操作模式:
- PTY模式 (默认):在伪终端中生成nvim
--listen <socket>.通过msgpack-rpc连接。背景pyte虚拟终端捕获TUI输出以获取PNG屏幕截图。 - 无头模式:用途
pynvim.attach("child", argv=["nvim", "--embed", "--headless"])。没有截图。重量更轻。 - 终端模式 (仅限macOS):在真实的终端模拟器(Kitty、Ghostty、iTerm2)中启动nvim。通过macOS的屏幕截图
screencapture终端在后台启动,不会转移焦点。Linux支持尚未实现。
