Vim MCP Server について
Vim MCP ServerはVim内で動作し、コーディングエージェントなどのMCPクライアントからバッファーの確認・編集やエディター内の移動を行えます。Vimの差分表示、メッセージ履歴、quickfix・locationリストも扱え、一部の書き込みやコマンド実行はオプトインです。
主な機能
- 01バッファーの読み取りと編集
- 02ファイルのオープンとクローズ
- 03カーソル移動と選択範囲の取得
- 04quickfix・locationリストの管理
- 05ファイル・Git差分の表示
- 06Vimメッセージ履歴の取得
活用シーン
- 01変更ファイルや行をコーディングエージェントに提示
- 02バッファーの選択範囲を共有してコードの助言を得る
- 03複数のコード位置への移動
- 04Vim内でファイルやGitの差分を確認
MCP 対応
Vim内でHTTP MCPサーバーを起動し、MCPクライアントにエディター操作ツールを公開します。バッファー保存・編集や任意のExコマンド実行はオプションで有効化できます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
http://localhost:8765/mcpclaude mcp add --transport http vim http://localhost:8765/mcp{"mcpServers":{"vim":{"type":"http","url":"http://localhost:8765/mcp"}}}Cursor で開く{"servers":{"vim":{"type":"http","url":"http://localhost:8765/mcp"}}}VS Code で開く{"mcpServers":{"vim":{"type":"http","url":"http://localhost:8765/mcp"}}}{"mcpServers":{"vim":{"serverUrl":"http://localhost:8765/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
vim-mcp-server
Vim に組み込まれた MCP(Model Context Protocol)サーバーです。HTTP 経由でツールを公開し、AI コーディングエージェントなどの MCP 対応クライアントが、バッファーの読み取りや変更、カーソルの移動、ビジュアル選択範囲の取得、quickfix リストやロケーションリストの管理、左右に並べた差分(Vim 内で計算される git 差分を含む)の表示、メッセージ履歴の読み取り、Ex コマンドの実行を行えるようにします。
現在、主にエージェントに Vim でファイルや行を表示させるために使っています。 選択した範囲をエージェントに表示するために使うこともあります。
要件
+python3を有効にしてコンパイルされた Vim
インストール
お好みのプラグインマネージャーを使用してください。
vim-plug
Plug 'breggles/vim-mcp-server'
Vundle
Plugin 'breggles/vim-mcp-server'
手動
リポジトリを Vim のパッケージディレクトリにクローンします。
git clone https://github.com/breggles/vim-mcp-server.git \
~/.vim/pack/plugins/start/vim-mcp-server
使い方
サーバーを起動する
Vim で次を実行します。
:McpServerStart
vimrc に次を追加すると、Vim の起動時にサーバーが自動起動します。
let g:mcp_server_autostart = 1
MCP クライアントの設定
MCP クライアントの接続先を http://127.0.0.1:8765/mcp に設定します(または、選択したポートを指定します)。
たとえば、opencode の場合は、opencode.jsonc にサーバーを追加します。
"mcp": {
"vim": {
"type": "remote",
"url": "http://localhost:8765/mcp",
"enabled": true
}
}
コマンド
| コマンド | 説明 |
|---|---|
:McpServerStart [port] | サーバーを起動します(デフォルトのポートは8765です) |
:McpServerStop | サーバーを停止します |
:McpServerStatus | サーバーのステータスと URL を表示します |
オプション
| 変数 | デフォルト | 説明 |
|---|---|---|
g:mcp_server_port | 8765 | サーバーがリッスンするポート |
g:mcp_server_autostart | 0 | VimEnter 時にサーバーを自動起動します |
g:mcp_server_allow_execute | 0 | execute_command ツールを有効にします |
g:mcp_server_allow_save | 0 | save_buffer ツールを有効にします |
g:mcp_server_allow_edit | 0 | edit_buffer ツールを有効にします |
ツール
サーバーは MCP クライアントに次のツールを公開します。
| ツール | 説明 |
|---|---|
list_buffers | 開いているすべてのバッファーを一覧表示します |
get_buffer | バッファーの内容を読み取ります(行範囲を指定できます) |
edit_buffer | バッファー内の行を置換、挿入、または削除します |
open_file | :edit でファイルを開きます |
save_buffer | :write でバッファーを保存します(オプトイン、上記参照) |
close_buffer | :bdelete でバッファーを閉じます |
get_cursor | 現在のカーソル位置を取得します |
set_cursor | カーソルを行と列で指定した位置に移動します |
get_visual_selection | 現在のビジュアル選択範囲を取得します(選択範囲がある場合) |
execute_command | 任意の Ex コマンドを実行します(オプトイン、上記参照) |
get_quickfix_list | 現在の quickfix リストの項目を取得します |
set_quickfix_list | quickfix リストを設定します |
get_location_list | 現在のウィンドウのロケーションリストを取得します |
set_location_list | 現在のウィンドウのロケーションリストを設定します |
get_messages | Vim のメッセージ履歴(:messages の出力)を取得します |
show_diff | 新しいタブに左右に並べた差分ビューを開きます(ファイルまたは内容) |
show_git_diff | 新しいタブに左右に並べた git 差分を開きます。git が Vim 内で両側を計算します |
ツールがバッファー引数を受け付ける場合、番号(buffer_id)またはファイルパス(buffer_path)で指定できます。両方を省略すると、現在のバッファーが使用されます。
OpenCode のプランモード
デフォルトでは、OpenCode のプランモードですべての MCP ツールが無効になります。プランモードで読み取り専用の
vim ツールを使用できるようにするには、次の内容を opencode.jsonc に追加します。
{
"agent": {
"plan": {
"tools": {
"vim_*": false,
"vim_list_buffers": true,
"vim_get_buffer": true,
"vim_get_cursor": true,
"vim_get_visual_selection": true,
"vim_open_file": true,
"vim_set_cursor": true,
"vim_get_quickfix_list": true,
"vim_set_quickfix_list": true,
"vim_get_location_list": true,
"vim_set_location_list": true,
"vim_get_messages": true,
"vim_show_diff": true,
"vim_show_git_diff": true
}
}
}
}
まずすべての vim_* ツールを無効にしてから、特定のツールを再び有効にします。リストはワークフローに合わせて調整してください。
開発
プラグインをインストールせずに開発するには、リポジトリをクローンし、Vim のランタイムパスに追加します。
set rtp+=~/path/to/vim-mcp-server
これを vimrc に追加するか、手動で実行します。変更は Vim を次回起動したときに反映されます。
次のコマンドでヘルプタグを生成します。
:helptags ~/path/to/vim-mcp-server/doc
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。