ツールを超えて、VS CodeにMCPを追加する
2025年5月14日 Harald Kirschner 著
VS Codeで初めてエージェントモードを導入したとき、それはチャットを通じてコードやワークスペースと対話する新しい方法を開きました。エージェントにファイルの検査、ビルドの実行、さらにはテストのデバッグを依頼することができました。しかし、モデルがトレーニングされた内容やワークスペースのコンテンツによって制限されていました。そのため、次のステップは明確でした。エージェントがそれらの境界を越えて、実際の外部サービスと安全かつユーザー制御可能な方法で対話できる方法が必要だったのです。
私たちの最初の試みは、おなじみのVS Codeのパターンを踏襲していました。ToolsとChat participantsのAPIを通じた拡張性です。何千もの拡張機能がすでにエコシステムに存在することを考えると、これは理にかなっていました。しかし、業界は新しい標準であるModel Context Protocol(MCP)へと急速に移行していました。MCPは、AIエージェントをさまざまな外部ツールやサービスに一貫した方法で接続するためのプロトコルと理解するのが最も適切です。これは、HTTPがWebの通信を標準化したのとよく似ています。目標は、VS Codeだけでなく、あらゆるクライアントがデータベース、コード検索、デプロイメントシステムなどの強力なツールサーバーをプラグインし、それらを「ただ動作させる」ことです。
このMCPへの移行により、より広いエコシステムがほぼ一夜にして開かれました。現在、VS Codeユーザーは、フロントエンド検証のためのPlaywright MCP Server、リポジトリの洞察とプルリクエストのためのGitHub MCP Server、よりスマートなAPI利用のためのContext7といったサーバーを利用できます。サーバーのリストは増え続けており、MCPはAIエージェント全体に追加機能をもたらす基盤として急速に確立されました。
誰もがMCPを利用できるようにする:VS Codeのデザイン原則を適用する
VS Codeのデザイン哲学は常に、強力な機能を使いやすく、デフォルトで安全にし、ユーザーに明確な制御を与えることに焦点を当てていました。これらの同じ原則が、私たちのMCP統合を導きました。
以前、MCPサーバーの利用開始は、JSONブロックを構成ファイルにコピーし、コマンドラインフラグを管理することを意味していました。私たちはこれを簡素化したいと考えました。MCP: Add Serverコマンドを使用すると、パッケージマネージャー(NPM、PyPI、Docker)からサーバーをセットアップでき、残りはVS Codeが処理します。Webサイトは、オンボーディングをさらに効率化するために「VS Codeにインストール」ボタンを提供することもでき、VS Codeは可能な場合、Claude Desktopのような他のクライアントからの構成を自動検出します。
セキュリティももう一つの主要な焦点でした。MCPサーバーのシークレットを管理することは、パスワードをソース管理にチェックインすることを意味すべきではありません。私たちは、一度プロンプトを表示し、その後シークレットを暗号化して安全に保存する入力変数のサポートと、ローカル開発ですでに信頼している既存の.env
ファイルを参照するサポートを追加しました。これにより、チームが安全に構成を共有およびレビューしやすくなります。
ユーザー制御は、体験の中心です。ツールピッカーを使用すると、特定セッションでエージェントがどのツールにアクセスできるかを決定し、明確な説明と制御を確認できます。サーバーを開発またはデバッグする人々のために、VS Codeはログを表示し、サーバーの起動、停止、再起動を簡単にします。これらの工夫により、MCPは強力であるだけでなく、エンドユーザーとサーバー開発者の両方にとって親しみやすいものとなっています。
基本を超えて:よりリッチなMCPの機能
ツールの基本互換性を実装するだけでは終わりませんでした。MCPの価値の多くは、その仕様にあるより深い機能から来ています。これらの機能が完全にサポートされると、ツールはより文脈に応じ、適応性があり、堅牢になります。
例えば、ルートのサポートにより、MCPサーバーはワークスペースの構造を理解できます。ユーザーにフォルダーパスを尋ねたり、設定に頼ったりする代わりに、サーバーは事前にワークスペースフォルダーのリストを受け取り、手元のプロジェクトに合わせてツールを調整できます。これにより、モノレポ内のすべてのTODOを検索したり、検出されたインフラストラクチャファイルに基づいてデプロイツールをアクティブ化したりするようなユースケースが可能になります。
動的なツール検出により、サーバーは利用可能なツールのセットをリアルタイムで変更できます。静的なリストではなく、サーバーはコンテキストやプロジェクトの状態に基づいてツールを適応させることができます。例えば、ワークフローの進行に合わせて異なるアクションを表示したり、コードベースで検出されたフレームワークに関連するツールを表示したりできます。これにより、エージェントの機能は常に適切に保たれ、煩雑さを避けることができます。実際の使用例については、TypeScript SDKの動的サーバーの例またはGitHub MCP Serverの動的ツールセット検出機能を確認してください。
最新のVS Codeアップデートでは、ツールアノテーションのサポートも追加されました。これは、サーバーがツールに対して人間が読みやすい名前や、ツールを読み取り専用モードで実行すべきかどうかといったヒントなど、役立つメタデータを提供するのに役立ちます。これらの詳細は、エージェントの動作とユーザーの理解の両方を向上させます。
最後に、MCP仕様の最新トランスポートとしてストリーマブルHTTPがサポートされました。これにより、リモートサーバーの統合がよりスムーズでスケーラブルになり、特にクラウドホスト型やサーバーレスのツールプロバイダーにとって有利です。
私たちの目標は、VS Codeで最新のMCP機能をサポートし、ユーザーが豊かなAI体験から恩恵を受け、サーバー開発者が自信を持ってそれらの機能を実装できるようにすることです。
エコシステムの成長:コラボレーションと今後の展望
MCPは現在、GitHub、Playwright、Azure、Perplexityの公式サーバーを支えており、エコシステムは拡大の一途をたどっています。VS Codeを際立たせているのは、早期導入だけでなく、仕様優先のエンジニアリングへのコミットメントです。MCP仕様を厳密に遵守し、認証、発見、セキュリティに関する改善点をフィードバックすることで、プロトコルが成熟するにつれてその形成を支援し、エコシステムにおける革新がVS Codeユーザーだけでなく、すべての人に利益をもたらすことを確実にしています。
今後、私たちはすでに仕様に含まれているMCPの今後の機能、例えば認証、プロンプト、リソース、サンプリングなどについて、VS Codeでのサポートを実現するために積極的に取り組んでいます。これらの追加により、製品に実装されるにつれて、さらに豊富で柔軟なエージェント統合がもたらされるでしょう。
開発ツールやインフラストラクチャを構築している場合、MCPはVS Code内外のAIエージェントにそれらをアクセス可能にするための実用的でオープンな方法です。既製のサーバーを使用したい場合でも、独自のサーバーを作成したい場合でも、その体験は堅牢かつ簡単であるべきです。
開始するには、ModelContextProtocol.io、VS Code MCP Docs、またはGitHubのリファレンスサーバーをご覧ください。
皆さんが何を構築し、エコシステムの拡大とともにエージェントのワークフローがどのように進化するかを見るのが楽しみです。
ハッピーコーディング!