Neovim MCP Server について
Neovim MCP サーバーは、公式の neovim/node-client ライブラリを用いて、Claude Desktop などのMCPクライアントからソケット経由で実行中の Neovim セッションを操作できるようにします。Vim 標準の編集コマンドを活用し、コードやテキスト編集を支える軽量なAIアシスタント層を提供します。ソケット接続が必要で、通常の Vim では動作しません。
主な機能
- 01バッファ、カーソル、モード、ビジュアル選択の取得
- 02Vim コマンドの実行(任意でシェルコマンドも可能)
- 03挿入、置換、バッファ全体の置換
- 04正規表現による検索置換とプロジェクト全体の grep
- 05ウィンドウ、タブ、折りたたみ、マクロ、ジャンプリストの管理
活用シーン
- 01開いている Neovim セッションで Claude にコードを編集またはリファクタリングさせる
- 02プロジェクトを検索し、quickfix リストで結果を確認する
- 03マクロを記録して再生し、反復的な編集を行う
MCP 対応
nvim:// リソースと19個のツールとして Neovim セッションを MCP クライアントに公開し、neovim_workflow プロンプトも提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
19掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| filename | string | いいえ | 特定のバッファーを表示する場合の任意のファイル名 |
詳細
Neovim MCP サーバー
MCP と公式の neovim/node-client JavaScript ライブラリを使用して、Claude Desktop(または任意の Model Context Protocol クライアント)を Neovim に接続します。このサーバーは、Claude がすでに理解している Vim のネイティブなテキスト編集コマンドとワークフローを活用し、軽量なコード編集または汎用の AI テキスト支援レイヤーを実現します。
機能
- nvim の起動時に
--listen /tmp/nvimなどを指定してソケットファイルを公開すると、その nvim インスタンスに接続します - 現在のバッファーを表示し、バッファーの切り替えを管理します
- カーソル位置、モード、ファイル名、マーク、レジスター、ビジュアル選択範囲を取得します
- Vim コマンドを実行し、オプションで Vim 経由のシェルコマンドも実行します
- 挿入、置換、全置換モードを使用して編集できます
- 正規表現に対応した検索と置換機能
- quickfix 連携によるプロジェクト全体の grep 検索
- 包括的なウィンドウ管理
- ヘルスモニタリングと接続診断
API
リソース
nvim://session:現在の Neovim テキストエディターセッションnvim://buffers:現在の Neovim セッションで開いているすべてのバッファーの一覧。変更状態、構文、ウィンドウ ID などのメタデータを含みます
ツール
コアツール
- vim_buffer
- 行番号付きでバッファーの内容を取得します(filename パラメーターに対応)
- 入力
filename(string、任意):ファイル名で特定のバッファーを取得します - バッファーの内容を行番号付きで返します
- vim_command
- ナビゲーション、部分編集、行の削除のために VIM にコマンドを送信します
- 入力
command(string) nvim.replaceTermcodesを使用して Vim コマンドを実行します。改行を使って複数のコマンドを実行できますALLOW_SHELL_COMMANDS=trueの場合、!プレフィックスを付けたシェルコマンドに対応します- エラー時は、
'nvim:errmsg'の内容を返します
- vim_status
- Neovim の包括的なステータスを取得します
- カーソル位置、モード、ファイル名、検出機能を強化したビジュアル選択範囲、ウィンドウレイアウト、現在のタブ、マーク、レジスター、作業ディレクトリ、LSP クライアント情報、プラグインの検出結果を返します
- 強化されたビジュアル選択範囲の報告:ビジュアルモードの種類(文字/行/ブロック)を検出し、正確な選択テキスト、開始/終了位置、最後のビジュアル選択範囲のマークを提供します
- vim_edit
- 挿入、置換、全置換モードを使用して行を編集します
- 入力
startLine(number)、mode("insert"|"replace"|"replaceAll")、lines(string) - insert:startLine に行を挿入します
- replace:startLine 以降の行を置換します
- replaceAll:バッファー全体の内容を置換します
- vim_window
- Neovim のウィンドウを操作します(分割、垂直分割、閉じる、移動)
- 入力
command(string:"split"、"vsplit"、"only"、"close"、"wincmd h/j/k/l")
- vim_mark
- 指定した位置に名前付きマークを設定します
- 入力
mark(string:a-z)、line(number)、column(number)
- vim_register
- レジスターの内容を設定します
- 入力
register(string:a-z または ")、content(string)
- vim_visual
- ビジュアルモードの選択範囲を作成します
- 入力
startLine(number)、startColumn(number)、endLine(number)、endColumn(number)
拡張バッファー管理
- vim_buffer_switch
- 名前または番号でバッファーを切り替えます
- 入力
identifier(string | number):バッファー名または番号
- vim_buffer_save
- 現在のバッファーを保存するか、指定したファイル名で保存します
- 入力
filename(string、任意):指定したファイルに保存します
- vim_file_open
- ファイルを新しいバッファーに開きます
- 入力
filename(string):開くファイル
検索と置換
- vim_search
- 正規表現に対応した、現在のバッファ内の検索
- 入力
pattern(string)、ignoreCase(boolean、任意)、wholeWord(boolean、任意)
- vim_search_replace
- 高度なオプションを使った検索と置換
- 入力
pattern(string)、replacement(string)、global(boolean、任意)、ignoreCase(boolean、任意)、confirm(boolean、任意)
- vim_grep
- quickfix リストを使用した、vimgrep によるプロジェクト全体の検索
- 入力
pattern(string)、filePattern(string、任意) - 検索するファイルパターン
高度なワークフローツール
- vim_macro
- Vim マクロの記録、停止、再生
- 入力
action("record" | "stop" | "play")、register(string、a-z)、count(number、任意)
- vim_tab
- タブの包括的な管理
- 入力
action("new" | "close" | "next" | "prev" | "first" | "last" | "list")、filename(string、任意)
- vim_fold
- コードの折りたたみ操作
- 入力
action("create" | "open" | "close" | "toggle" | "openall" | "closeall" | "delete")、startLine/endLine(number、作成時)
- vim_jump
- ジャンプリストの操作
- 入力
direction("back" | "forward" | "list")
システムツール
- vim_health
- Neovim の接続状態とソケットの状態を確認
この包括的な 19 個のツールを使うと、Claude は neovim セッションの内容を確認し、バッファ内を移動し、検索を実行し、編集し、マクロを記録し、タブや折りたたみを管理するなど、Neovim の標準機能を使って開発ワークフロー全体を処理できます。
プロンプト
- neovim_workflow:編集、ナビゲーション、検索、バッファ管理、ウィンドウ操作、マクロの使用など、一般的な Neovim ワークフローに関する状況に応じたヘルプとガイダンスを取得します。利用可能な MCP ツールを使ってタスクを実行するための手順を説明します。
エラー処理
このサーバーは、カスタムエラークラスと一貫したエラーレスポンスによる包括的なエラー処理を実装しています。
- NeovimConnectionError:詳細なメッセージを含むソケット接続エラー
- NeovimCommandError:コマンドのコンテキストを含むコマンド実行エラー
- NeovimValidationError:入力の検証エラー
v0.5.2 の新機能:すべてのツールに堅牢な try-catch エラー処理が追加され、適切な MCP 形式でわかりやすいエラーメッセージを返すようになりました。接続状態の監視、エラーの適切な伝播、問題の診断に役立つ実用的なエラーメッセージを備えています。
制限事項
- 複雑な neovim の設定やプラグインとは、うまく連携できない場合があります
- セキュリティ上の理由から、シェルコマンドの実行はデフォルトで無効になっています
- ソケット接続が必要です。標準の vim では動作しません
設定
環境変数
ALLOW_SHELL_COMMANDS:シェルコマンドの実行(例:!ls)を有効にするには、'true' に設定します。セキュリティ上の理由から、デフォルトは false です。NVIM_SOCKET_PATH:Neovim ソケットのパスを設定します。指定されていない場合、デフォルトは '/tmp/nvim' です。
インストール
オプション 1:DXT パッケージ(推奨)
- リリースから最新の
.dxtファイルをダウンロードします - ファイルを Claude Desktop にドラッグします
オプション 2:手動インストール
これを claude_desktop_config.json に追加します:
{
"mcpServers": {
"MCP Neovim Server": {
"command": "npx",
"args": [
"-y",
"mcp-neovim-server"
],
"env": {
"ALLOW_SHELL_COMMANDS": "true",
"NVIM_SOCKET_PATH": "/tmp/nvim"
}
}
}
}
ライセンス
この MCP サーバーは MIT License の下でライセンスされています。MIT License の利用規約に従う限り、ソフトウェアを自由に使用、変更、配布できます。詳細については、プロジェクトリポジトリの LICENSE ファイルを参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。