Neovim MCP服务器插件

一个Neovim插件,实现MCP(模型上下文协议)服务器,允许外部MCP客户端通过Unix套接字与Neovim交互。

  • by calebfroese
  • Lua
  • 本地部署
  • 更新于
在 GitHub 查看 calebfroese/mcpserver.nvim

使用说明

mcpserver.nvim

一个实现MCP(模型上下文协议)服务器的Neovim插件,允许外部MCP客户端通过Unix套接字与Neovim交互。

特性

  • get_buffer_content:获取当前缓冲区的内容

安装

使用 lazy.nvim:

{
  dir = "/path/to/mcpserver.nvim", -- Use your local path
  -- Server starts automatically on VimEnter
}

用法

Neovim插件

手动控制

启动MCP服务器:

:MCPServerStart

停止MCP服务器:

:MCPServerStop

获取套接字路径

local mcpserver = require('mcpserver')
local socket_path = mcpserver.get_socket_path()
print(socket_path) -- e.g., "/tmp/nvim-mcp-server-12345.sock"

插座位置

服务器在以下位置创建一个唯一的Unix套接字 /tmp/nvim-mcp-server-<PID>.sock 哪里 <PID> 是Neovim进程ID。这允许多个Neovim实例同时运行MCP服务器。

独立MCP服务器

用于通过stdio通信的外部MCP客户端:

# Auto-detect running Neovim instance
lua standalone.lua

# Specify Neovim socket path
lua standalone.lua /tmp/nvim-mcp-server-12345.sock

独立服务器:

  • 通过stdio进行通信(JSON-RPC通过stdin/stdout)
  • 自动检测正在运行的Neovim MCP服务器套接字
  • 将请求转发到Neovim实例
  • 适用于任何支持stdio传输的MCP客户端

可用工具

get_buffer_content

返回JSON格式:

  • filename:当前缓冲区文件的路径
  • content:缓冲区的全文内容
  • line_count:缓冲区中的行数

MCP客户端使用情况

直接插座连接

连接到Unix套接字 /tmp/nvim-mcp-server-<PID>.sock 并使用标准MCP协议:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_buffer_content",
    "arguments": {}
  }
}

标准连接

将独立服务器用于基于stdio的MCP客户端:

echo '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_buffer_content","arguments":{}}}' | lua standalone.lua

发展

插件结构:

  • lua/mcpserver/init.lua:核心MCP服务器实现
  • lua/mcpserver/tools.lua:工具实施
  • plugin/mcpserver.lua:插件设置和命令
  • standalone.lua:用于stdio通信的独立MCP服务器

需求

  • Neovim支持Lua
  • 对于独立模式: netcat (nc)用于Unix套接字通信