vim-mcp について
vim-mcpはClaude CodeをVimまたはNeovimのインスタンスに接続し、エディターの状態確認や自然言語でのコマンド実行を可能にします。ヘルプ検索、マクロ記録、安全な終了にも対応します。
主な機能
- 01Vimインスタンスへの接続と選択
- 02バッファー、ウィンドウ、カーソル状態の確認
- 03Vimコマンドの実行
- 04Vimヘルプの検索
- 05マクロ記録と安全な終了
活用シーン
- 01自然言語で説明した複雑な置換を実行
- 02現在のバッファーとカーソル位置を確認
- 03Vim機能のヘルプを検索
- 04反復編集作業のマクロを作成
MCP 対応
サーバーはUnixソケット経由でVimインスタンスと通信し、Claude Codeを含むMCPクライアントにツールとリソースを公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
7掲載時のツール一覧 · 3 週間前に更新
このツールにパラメーターはありません。
詳細
vim-mcp
Vim と Claude Code のためのシンプルな MCP(Model Context Protocol)統合です。
機能
- Claude Code を Vim インスタンスの 1 つに接続します
- Vim の状態(バッファー、ウィンドウ、カーソル位置など)を照会します
- 自然言語を使って Claude から Vim コマンドを実行します
仕組み:
- MCP サーバーが
/tmp/vim-mcp-server.sockで Unix ソケットサーバーを起動します - 各 Vim インスタンスが Unix ソケットクライアントとしてサーバーに接続します
- Vim が登録情報と状態の更新をサーバーに送信します
- サーバーがすべての Vim インスタンスとのアクティブな接続を維持します
- Claude Code が Model Context Protocol を介して MCP サーバーと通信します
デモ
Vim インスタンスを一覧表示して選択:
ついに Vim を終了できます!
詳しくは、デモの Wiki ページをご覧ください。
これは何の役に立つのでしょうか?
なるほど、何をするのかはわかりましたが、なぜ必要なのでしょうか?
「ウィンドウを半分に分割して」のような基本的な Vim 操作(24 回のキー入力)をする場合と、:sp / :vs を実行する場合(3 回のキー入力)を比べると、vim-mcp を使わないほうがよいでしょう。vim-mcp が真価を発揮するのは、必要なキー入力の数がわからないとき、つまり、やりたいことは説明できても、その方法が正確にはわからないときです。複雑な正規表現やマクロ、検索、ヘルプのセマンティック検索などは、試行錯誤するよりも、達成したいことを AI に伝えるほうが速いです。求めている言葉は「迂言」でしょうか?
役に立つかもしれない例を紹介します。
時間をかけて組み立てる必要がある複雑な Vim コマンドを実行したいとします。やりたいことを説明できれば、Claude が簡単に実行できます。たとえば、第 3 レベルの Markdown 見出しの後にある場合に限り、「(test foobar)」を角括弧に置換したいとします。私には数秒で簡単に思いつけるものではありませんが、Claude ならできます!
vim-mcp を使えば、Claude に次のようにプロンプトを入力できます:
In README.md, substitute the set of parentheses `(SOME TEXT)` with square brackets `[SOME TEXT]`, where SOME TEXT says "test foobar"; do this if the strings come after a 3rd-level header markdown.
これだけです!実際に試したところ、Claude は g コマンドを考案し、実行してくれました。
vim-mcp - vim_execute (MCP)(command: "g/^### /,/^#\\{1,3\\} \\|^$/s/(test foobar)/[test foobar]/g")
⎿ Command executed successfully: g/^### /,/^#\{1,3\} \|^$/s/(test foobar)/[test foobar]/g
さらに、実行したコマンドはコマンド履歴に保存されるため、後から再実行したり、変更したりできます。
後になって「やっぱり角括弧 [] ではなく、波括弧 {} に置換したい」と思ったらどうしましょう?コマンド履歴(q:、:history、または : の後に上下キーを押す)を開いて、必要な変更を加えるだけです。
そこで : を入力し、vim-mcp が実行したコマンドが表示されるまで上矢印キーを数回押して、:g/^### /,/^#\{1,3\} \|^$/s/(test foobar)/{test foobar}/g に変更しました。完了です!
概要
詳しい概要については、vim-mcp の概要をご覧ください。
ツールとリソース
ツール:
list_vim_instancesselect_vim_instanceget_vim_statevim_executeexit_vimvim_search_helpvim_record_macro
リソース:
vim://instances- 利用可能なすべての Vim インスタンスの一覧vim://state- 選択中の Vim インスタンスの現在の状態vim://buffers- 選択中の Vim インスタンスのすべてのバッファーの一覧vim://tabs- 選択中の Vim インスタンスのすべてのタブの一覧
インストール
前提条件
+channel機能を備えた Vim 8+ または Neovim 0.5+- Node.js 18+
- Unix ドメインソケットのサポート(Linux/macOS)
/tmpディレクトリへのファイルシステム書き込みアクセス- MCP をサポートする claude code / claude desktop または同様のツール
Vim プラグインのインストール
vim-plug を使用する場合:
Plug 'iggredible/vim-mcp'
MCP サーバーのインストール
MCP サーバーは Node プロジェクトです。依存関係をインストールする必要があります。
オプション 1:インストールスクリプトを使用する
cd ~/.vim/plugged/vim-mcp # Or wherever your plugin is installed
./install.sh
インストールスクリプトは、次の処理を自動的に行います。
- 前提条件(Node.js と Vim のバージョン)を確認します
- Node.js の依存関係をインストールします
vim-mcpコマンドのグローバルインストールを試みます- 正しい Claude Code の設定を表示します
オプション 2:手動でインストールする
手動でインストールする場合、または install.sh スクリプトが動作しない場合は、次の手順に従ってください。
- Node.js の依存関係をインストールします。
cd ~/.vim/plugged/vim-mcp/server
npm install
npm install は chmod +x bin/vim-mcp も実行します。
- (任意)システム全体で
vim-mcpコマンドを使用できるよう、グローバルにインストールします(/serverディレクトリ内で実行)。
npm link
権限などの理由で失敗した場合は、グローバルインストールをスキップし、設定でフルパスを使用できます。
Claude Code を設定する
インストール後、次のいずれかの設定を Claude の設定ファイルに追加してください。
グローバルインストールが成功した場合(vim-mcp コマンドが使用できる場合):
"mcpServers": {
"vim-mcp": {
"command": "vim-mcp",
"args": []
},
}
npm link が失敗した場合:
{
"mcpServers": {
"vim-mcp": {
"command": "node",
"args": ["/some/path/.vim/plugged/vim-mcp/server/bin/vim-mcp"]
}
}
}
アンインストール
vim-mcp を削除するには:
.vimrcからプラグインを削除します。
" Delete or comment out this line:
" Plug 'iggredible/vim-mcp'
- プラグインファイルを削除します。
:PlugClean
- グローバルの
vim-mcpコマンドを削除します(インストールされている場合)。
npm unlink vim-mcp
- Claude Code の設定から削除します。
Claude の設定ファイルを編集し、mcpServers から vim-mcp のセクションを削除してください。
- 一時ファイルを削除します(任意)。
rm -f /tmp/vim-mcp-server.sock
rm -f /tmp/vim-mcp-registry.json
rm -f /tmp/vim-mcp-preference.txt
- すべての接続を確実に切断するため、Vim と Claude Code を再起動します。
クイックスタート
接続手順
- Vim のインスタンスを開きます(プラグインが自動的に接続します)。
vim file1.txt # First instance
vim file2.txt # Second instance (in another terminal)
- Claude Code で、利用可能な Vim のインスタンスを一覧表示します。
list vim instances
- 複数のインスタンスが見つかった場合は、1 つ選択します。
select vim instance file1-vim-12345
プロンプトの例
クライアント(claude code)から、次の操作を行えます。
-
インスタンスを管理する:
- 「vim のインスタンスを一覧表示して」
- 「最初のインスタンスに接続して」
- 「README.md を開いているインスタンスを選択して」
-
Vim を操作する:
- 「ウィンドウを縦に 2 つに分割して」
- 「vim コマンド を実行して」
- 「Vim から出るのを手伝って!!!」
-
Vim のヘルプを検索する:
- 「チャンネルの操作方法について Vim のヘルプを検索して」
- 「Vim の quickfix リストの使い方を教えて」
- 「Vim のレジスターについてのヘルプを表示して」
-
マクロを記録する:
- 「最初の単語を大文字にして 2 行下に移動するマクロを記録して」
- 「現在の行を複製してコメントアウトするマクロを作成して」
- 「次の TODO を見つけて DONE に変更するマクロを作成して」
-
Vim について質問する:
- 「バッファはいくつある?」
- 「どのバッファが開いている?」
- 「カーソルの位置はどこ?」
- 「現在のバッファの内容を表示して」
- 「アクティブなバッファには何行ある?」
- 「このファイルは何の言語で書かれている?」
- 「どのウィンドウが開いている?」
- 「BTC の現実的な 10 年後の目標価格はいくら?」(冗談です)
vim-mcp は Vim からの終了も手伝います!!
ついに Vim から終了できます!喜びましょう!exit_vim ツールは、次の 3 つのモードで安全に終了できます。
- デフォルト(確認):未保存の変更を確認し、終了前に警告します
- 保存して終了:変更されたすべてのバッファを保存して終了します(
exit vim save_and_exit) - 強制終了:保存せず、変更を破棄して終了します(
exit vim force_exit)
例:
exit vim # Safe exit - warns about unsaved changes
exit vim save_and_exit # Save all files and exit
exit vim force_exit # Exit without saving (discard changes)
GET ME OUTTA HERE # You're free! Successfully exited Vim (there were no unsaved changes).
注:これはジョークのツールです。Vim からの終了に苦労している人が多く、なかなか終了できないためです。
Vim コマンド
Vim を開くと、プラグインは自動的に接続します。ただし、Vim 内から次の操作も行えます。
:VimMCPStatus- 接続状態を確認します:VimMCPConnect- サーバーに手動で接続します:VimMCPDisconnect- サーバーから切断します:VimMCPReconnect- サーバーに再接続します
コントリビューション
これをもっと便利にする方法をまだ模索中です。アイデアがあれば、ぜひ PR を送ってください!
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。