mcpserver.nvim について
mcpserver.nvim は、外部 MCP クライアントが Unix ソケット経由で現在のバッファーにアクセスできる Neovim プラグインです。実行中の Neovim インスタンスへリクエストを転送する、単独動作の stdio サーバーも備えています。
主な機能
- 01現在のバッファー内容を取得
- 02Unix ソケットで通信
- 03単独動作の stdio サーバー
- 04Neovim サーバーソケットを自動検出
- 05コマンドでサーバーを起動・停止
活用シーン
- 01MCP クライアントへのバッファーテキスト提供
- 02stdio クライアントを実行中の Neovim インスタンスに接続
- 03複数の Neovim インスタンスで MCP サーバーを実行
MCP 対応
MCP クライアントに `get_buffer_content` ツールを公開し、現在のバッファーのファイル名、テキスト、行数を返します。クライアントは Unix ソケットまたは単独動作の stdio サーバー経由で接続できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
mcpserver.nvim
Unix ソケットを通じて外部の MCP クライアントが Neovim とやり取りできるようにする、MCP(Model Context Protocol)サーバーを実装した 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"
ソケットの場所
サーバーは、<PID> が Neovim プロセスの ID を表す /tmp/nvim-mcp-server-<PID>.sock に、一意の Unix ソケットを作成します。これにより、複数の 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(stdin/stdout 経由の JSON-RPC)で通信します
- 実行中の Neovim MCP サーバーソケットを自動検出します
- リクエストを Neovim インスタンスに転送します
- stdio トランスポートをサポートするすべての MCP クライアントで動作します
利用可能なツール
get_buffer_content
以下を含む JSON を返します:
filename:現在のバッファーファイルのパスcontent:バッファーの全文line_count:バッファー内の行数
MCP クライアントでの使用方法
ソケットへの直接接続
/tmp/nvim-mcp-server-<PID>.sock の Unix ソケットに接続し、標準の MCP プロトコルを使用します:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_buffer_content",
"arguments": {}
}
}
stdio 接続
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 サーバー
要件
- Lua をサポートする Neovim
- スタンドアロンモードの場合:Unix ソケット通信に
netcat(nc)が必要
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。