mcpField
N
Neovim MCP Server

Neovim MCP Server

ローカル
github.com/bigcodegen開発ツール32459 週間前に更新

Neovim MCP Server について

Neovim MCP サーバーは、公式の neovim/node-client ライブラリを用いて、Claude Desktop などのMCPクライアントからソケット経由で実行中の Neovim セッションを操作できるようにします。Vim 標準の編集コマンドを活用し、コードやテキスト編集を支える軽量なAIアシスタント層を提供します。ソケット接続が必要で、通常の Vim では動作しません。

主な機能

  1. 01バッファ、カーソル、モード、ビジュアル選択の取得
  2. 02Vim コマンドの実行(任意でシェルコマンドも可能)
  3. 03挿入、置換、バッファ全体の置換
  4. 04正規表現による検索置換とプロジェクト全体の grep
  5. 05ウィンドウ、タブ、折りたたみ、マクロ、ジャンプリストの管理

活用シーン

  1. 01開いている Neovim セッションで Claude にコードを編集またはリファクタリングさせる
  2. 02プロジェクトを検索し、quickfix リストで結果を確認する
  3. 03マクロを記録して再生し、反復的な編集を行う

MCP 対応

nvim:// リソースと19個のツールとして Neovim セッションを MCP クライアントに公開し、neovim_workflow プロンプトも提供します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"neovim-server": {
"command": "npx",
"args": [
"-y",
"mcp-neovim-server"
],
"env": {
"ALLOW_SHELL_COMMANDS": "<ALLOW_SHELL_COMMANDS>",
"NVIM_SOCKET_PATH": "<NVIM_SOCKET_PATH>"
}
}
}
}
起動コマンドnpx -y mcp-neovim-server
設定が必要な環境変数
ALLOW_SHELL_COMMANDS
NVIM_SOCKET_PATH

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmmcp-neovim-server

ツール

19

掲載時のツール一覧 · 3 週間前に更新

パラメーター型必須説明
filenamestringいいえ特定のバッファーを表示する場合の任意のファイル名

詳細

Neovim MCP サーバー

MCP と公式の neovim/node-client JavaScript ライブラリを使用して、Claude Desktop(または任意の Model Context Protocol クライアント)を Neovim に接続します。このサーバーは、Claude がすでに理解している Vim のネイティブなテキスト編集コマンドとワークフローを活用し、軽量なコード編集または汎用の AI テキスト支援レイヤーを実現します。

mcp-neovim-server MCP server

機能

  • 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 パッケージ(推奨)
  1. リリースから最新の .dxt ファイルをダウンロードします
  2. ファイルを 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 ファイルを参照してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。