使用说明
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套接字通信