はじめに
Model Context Protocol(MCP)は、LLM(大規模言語モデル)と外部システムの間の通信を可能にする標準化されたプロトコルです。これにより、LLMに追加のツールやリソースを提供して、その能力を拡張できます。MCPは、開発者がLLMに外部機能へのアクセスを提供するための統一された方法を提供します。
簡単に言えば、MCPはLLMが「外の世界」と対話するための共通言語です。これにより、ChatGPTやClaudeなどのAIが、ファイルやウェブサイトを読み書きしたり、コマンドを実行したり、LSP(Language Server Protocol)の診断情報にアクセスしたりできるようになります。
MCPHub.nvim
MCPHub.nvimは、MCPサーバーをNeovimワークフローに統合するための強力なプラグインです。このプラグインは、集中管理された設定ファイルを通じてMCPサーバーを構成・管理し、ツールやリソースを閲覧・インストール・テストするための直感的なUIを提供します。LLM統合のために設計されており、プログラムによるAPI呼び出しとインタラクティブなテスト機能の両方を提供します。

主な機能
- シンプルなコマンドインターフェース: 単一の
:MCPHubコマンドですべての機能にアクセス - 統合ハブビュー: サーバーとツールを動的に有効/無効にし、トークン使用量を最適化
- ネイティブMCPサーバーサポート: Lua言語ベースのMCPサーバーを直接Neovim内に作成
- 内蔵MCPサーバー:
- ファイル操作(読み取り、書き込み、検索、置換)
- コマンド実行とターミナル統合
- LSP統合と診断
- バッファとエディタ状態へのアクセス
- チャットプラグイン統合:
- Avante.nvim
- CodeCompanion.nvim
- マーケットプレイス統合: 利用可能なMCPサーバーの閲覧とインストール
- インタラクティブなテスト: リアルタイムのツールテストインターフェース
LLMとMCPの連携
従来のLLMチャットは「単なる会話」に過ぎませんでした。ユーザーが質問し、AIが応答する。もしくはユーザーが質問し、AIがその範囲内で変更する。しかし、MCPをNeovimに統合すると、LLMは単なる会話の相手ではなく、あなたのNeovim開発環境で「手」を持つ実践的なアシスタントに変わります。
Neovimでは、MCPを通じてLLMに以下のような強力な機能へのアクセスを提供できます。
- ファイルの読み取りと書き込み - バッファ内容の分析や自動生成コードの挿入
- ファイルの検索と置換 - プロジェクト全体でのリファクタリングや一括修正
- シェルコマンドの実行 - git操作やビルドコマンドの自動実行
- LSP診断情報の取得 - エラーや警告の分析と自動修正提案
- バッファ間の移動とコンテンツの取得 - 複数ファイルにまたがる変更の一括適用
- インタラクティブなプロンプトの提供 - コードレビューや改善提案のための対話
- Neovimのキーマッピングやコマンドの生成と実行 - カスタム操作の自動化
MCPはLLMをNeovimエコシステムの一部として統合し、あなたのコーディング体験を根本から変革します。
Avante.nvimとの連携:実践的なAIペアプログラミング
MCPHub.nvimは、NeovimのためのAIチャットプラグインとシームレスに連携できます。現在、Avante.nvimとCodeCompanion.nvimの両方に対応しており、どちらでも同じMCPツールを活用できます。私がAvante.nvimを使っているので紹介するのはこちらです。
Avante.nvimはMCPHubと統合することで、LLMに強力なツールへのアクセスを提供できます。MCPHubのツールを有効にするには、Avanteの設定に以下のように追加します
require("avante").setup({ -- その他の設定 system_prompt = function() local hub = require("mcphub").get_hub_instance() return hub:get_active_servers_prompt() end, custom_tools = function() return { require("mcphub.extensions.avante").mcp_tool(), } end, })
MCPが解決する問題
従来、各LLMチャットプラグインは独自のツールシステムを実装していました。例えば、AvanteとCodeCompanionでは、同一の機能を実現するために異なるコードを書く必要があり、プラグイン間での互換性がありませんでした。また、Neovimの機能にアクセスするための標準的な方法が存在せず、各プラグイン開発者が独自の実装を行う必要がありました。
MCPHubはNeovim環境において以下のような問題を解決します。
- 一度実装すれば、どこでも動作:ツールを一度実装すれば、Avante.nvimとCodeCompanion.nvimなど、すべてのMCP対応チャットプラグインで共通して利用可能
- 標準化されたAPI:
res:text():image():send()のような直感的なチェーンAPIにより、Neovimの機能に一貫した方法でアクセス - 統一された指示:ツール、リソース、テンプレートを一箇所で管理し、LLMに渡す指示を簡素化
- 完全なリソースシステム:URI型のリソースアクセスにより、Neovimバッファ、ファイルシステム、LSP情報などに統一的にアクセス
- 標準型のレスポンス:テキスト、画像、バイナリデータなどの標準対応により、多様な出力形式をサポート
- 集中型ライフサイクル管理:サーバーの状態を一元管理し、パフォーマンスを最適化
MCPHubの実践的なNeovimワークフロー
Neovimでのハンズオン開発において、MCPHubを活用したワークフローは以下のようになります:
:MCPHubコマンドでMCPハブUIを開き、利用可能なツールとサーバーを確認- 必要なMCPサーバー(ファイル操作、LSP、ターミナルなど)を有効化
- 有効化したサーバーのツールやリソースをMCPハブUIで確認し、機能を把握
<leader>aeなどのキーマップでAvanteのインターフェースを開き、タスクをLLMに依頼- LLMはMCPツールを使って様々なタスクを実行し、結果をバッファに直接反映
実践例: Neovimでのコードリファクタリング
たとえば、「このプロジェクトでアロー関数を通常の関数に変換したい」とLLMに伝えると、NeovimとMCPを活用したLLMは以下のようなステップを自動で実行します。
search_filesツールでNeovimのtelescope/ripgrepを使いJavaScriptファイルを検索read_fileツールでNeovimバッファを通じて各ファイルの内容を読み取り- コードを解析してアロー関数を特定
replace_in_fileツールでNeovimのテキスト置換機能を使い変換を実行- 変更をプレビューしたり、自動で適用したりする選択肢を提示
- 必要に応じてLSP診断を実行し、変換後のコードが正しく動作することを確認
これにより、通常であれば複数のNeovimコマンドと手動作業が必要なリファクタリングを、単一のLLMとの対話で完了できます。
今後の展望
MCPは、LLMをテキスト生成の枠を超えて、Neovimの強力な開発環境と統合された実用的な開発アシスタントとして活用する道を開きます。MCPHub.nvimのようなプラグインにより、Neovimユーザーはこの可能性を最大限に活用できます。
今後の発展としては以下が期待できます:
- Neovim専用のMCPツール: Neovimの特性を活かした専門的なMCPツールの開発
- 言語固有のアシスタント: 各プログラミング言語に特化したLSPと連携したコーディングアシスタント
- プロジェクト管理の自動化: git操作やプロジェクト構造の分析・最適化の自動化
- カスタムワークフロー: 個人の開発スタイルに合わせたAIアシスタントの調整
MCPは単なる技術的な進歩ではなく、NeovimユーザーとAIの協業の形を根本的に変える可能性を秘めています。これにより、コーディングの効率性と創造性が飛躍的に向上するでしょう。