次の方法で共有


MCP サーバーの使用 (プレビュー)

モデル コンテキスト プロトコル (MCP) は、AI モデルが統合インターフェイスを介して外部ツールやサービスと対話できるようにするオープン標準です。 Visual Studio では、MCP サポートにより、MCP 互換サーバーをエージェント コーディング ワークフローに接続できるため、GitHub Copilot のエージェント モードが強化されます。 この記事では、Visual Studio で MCP サーバーを設定し、エージェント モードでツールを使用する方法について説明します。

[前提条件]

MCP と Visual Studio は GitHub Copilot のエージェントをどのように拡張しますか?

  • Visual Studio などの MCP クライアントが MCP サーバーに接続し、AI モデルに代わってアクションを要求する
  • MCP サーバーには、明確に定義されたインターフェイスを介して特定の機能を公開する 1 つ以上のツールが用意されています。
  • モデル コンテキスト プロトコル (MCP) は、ツールの検出、呼び出し、応答処理など、クライアントとサーバー間の通信のメッセージ形式を定義します

たとえば、ファイル システム MCP サーバーには、ファイルとディレクトリの読み取り、書き込み、または検索のためのツールが用意されている場合があります。 GitHub の公式 MCP サーバー には、リポジトリの一覧表示、プル要求の作成、問題の管理を行うツールが用意されています。 MCP サーバーは、コンピューター上でローカルに実行することも、リモートでホストすることもできます。Visual Studio では両方の構成がサポートされています。

この相互作用を標準化することで、MCP は各 AI モデルと各ツール間のカスタム統合の必要性を排除します。 これにより、新しい MCP サーバーをワークスペースに追加するだけで、AI アシスタントの機能を拡張できます。 モデル コンテキスト プロトコルの仕様の詳細を確認します。

GitHub MCP サーバーの構成例

  1. 新しいファイル ( <SOLUTIONDIR>\.mcp.json) を作成します。 Visual Studio を使用してこのファイルを編集し、その JSON スキーマが自動的に適用されるようにすることをお勧めします。
  2. 次の内容を .mcp.json ファイルに貼り付けます
{
  "inputs": [
    {
      "id": "github_pat",
      "description": "GitHub personal access token",
      "type": "promptString",
      "password": true
    }
  ],
  "servers": {
    "github": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "GITHUB_PERSONAL_ACCESS_TOKEN",
        "ghcr.io/github/github-mcp-server"
      ],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "${input:github_pat}"
      }
    }
  }
}
  1. GitHub アカウントの個人用アクセス トークンを取得する

  2. Visual Studio で、GitHub Copilot チャット ウィンドウの Ask ドロップダウンをクリックし、 Agentを選択します。

    Copilot エージェント モード セレクターを示すスクリーンショット。

  3. メッセージが表示されたら、個人用アクセス トークンをダイアログに貼り付けます。

    個人用アクセス トークンの入力を示すスクリーンショット。

  4. 使用するツールを選択します(例: list_issues

    MCP GitHub ツールを示すスクリーンショット。

  5. サンプル プロンプトを試してください。 list issues assigned to me on GitHub

  6. Copilot は、MCP サーバーによって利用可能になったツールを使用するためのアクセス許可を求め、続行するスコープで [許可 ] を選択します。

    エージェント ツールの確認オプションを示すスクリーンショット。

サポートされている MCP 機能

Visual Studio では、MCP サーバー トランスポート用のローカル標準入出力 (stdio)、サーバー送信イベント (sse)、およびストリーミング可能な HTTP (http) がサポートされています。 現在、3 つの プリミティブ (ツール、プロンプト、リソース) のうち、サーバーは Copilot のエージェント モードにのみツールを提供できます。 リスト変更イベントを使用して、ツールのリストと説明を動的に更新できます。 Visual Studio では、 roots(仕様) を使用して、現在のソリューション フォルダーをサーバーに提供します。

MCP サーバーの検索

MCP の 公式サーバー リポジトリ は、MCP の汎用性を示す、参照サーバー、公式サーバー、コミュニティ提供サーバーの優れた出発点です。 ファイル システム操作、データベース操作、Web サービスなど、さまざまな機能についてサーバーを調べることができます。

MCP はまだ比較的新しい標準であり、エコシステムは急速に進化しています。 MCP を採用する開発者が増えると、プロジェクトとの統合に使用できるサーバーとツールの数が増えると予想できます。

MCP サーバーの追加

MCP サーバーの構成を管理するファイルを作成する

mcp.json ファイルがまだない場合は、サーバーを使用可能/使用するリポジトリ、ユーザー、IDE に応じて、さまざまな場所に作成できます。

MCP 構成の自動検出のファイルの場所

Visual Studio では、他の開発環境によって設定された MCP 構成もチェックされます。 MCP サーバー構成は、次のディレクトリから次の順序で読み取られます。

  1. %USERPROFILE%\.mcp.json
    特定のユーザーのグローバル MCP サーバー構成として機能します。 ここで MCP サーバーを追加すると、すべての Visual Studio ソリューションに対して読み込まれます。
  2. <SOLUTIONDIR>\.vs\mcp.json
    Visual Studio に固有であり、特定のユーザーの指定された MCP サーバーのみを、指定したソリューションに対して読み込みます。
  3. <SOLUTIONDIR>\.mcp.json
    リポジトリのソース管理で追跡できる MCP 構成を探している場合に適しています。
  4. <SOLUTIONDIR>\.vscode\mcp.json
    リポジトリ/ソリューションにスコープが設定され、通常はソース管理されません。
  5. <SOLUTIONDIR>\.cursor\mcp.json
    リポジトリ/ソリューションにスコープが設定され、通常はソース管理されません。

これらの場所の中には .mcp.json が必要な場所もあれば、 mcp.jsonが必要な場所もあります。

MCP 構成形式

リモート (URL と資格情報) サーバーとローカル (コマンド ライン呼び出し) サーバーの両方を定義できます。

パッケージ マネージャーを使用してツールを呼び出すのが一般的です。 たとえば、npx -y @azure/mcp@latest または docker run ... mcp/github です。 Visual Studio では、指定した任意のコマンドが考慮されるため、必要に応じてバージョンをピン留めしたり、フラグを渡すことができます。

形式は、サーバー オブジェクトの配列など、MCP 仕様に従う必要があります。各配列には、 namecommand または urltransportなどが含まれます。

MCP 構成の編集

既存の mcp.json ファイルを使用して、ファイルをバージョン 管理システムにチェックインする場合は、ソリューション エクスプローラーの ソリューション項目 にファイルの場所を追加します。

ファイルが有効な構文で保存されると、GitHub Copilot のエージェントが再起動し、構成されたサーバーを再読み込みします。

ソリューション項目への MCP 構成ファイルの場所の追加を示すスクリーンショット。

ツールのライフサイクル

サーバーが検出または追加されるとすぐに:

  • Visual Studio によってサーバーが初期化されます (ハンドシェイクを実行し、ツール リストに対してクエリを実行します)。
  • Visual Studio は、MCP イベント notifications/tools/list_changedをサブスクライブします。
  • そのイベントが発生すると、Visual Studio はツールに対する以前の受け入れまたはアクセス許可をリセットし ( ラグプル 攻撃を防ぐために)、ツールリストを再フェッチして、カウント/UI をライブで更新します。
  • サーバーが正常に有効になると、エージェントがツールを使用できるようになります。 ツールは既定で無効になっており、手動で有効にする必要があります。
  • サーバーが削除されると、Visual Studio はそのプロセスを直ちに強制終了し、すべてのツールを UI から取り消します。
  • サーバー定義を編集すると、Visual Studio によってサーバー定義が終了して再起動され、クエリが再実行されます。

ツールの承認を管理する

ツールが呼び出されると、Copilot はツールを実行するための確認を要求します。 これは、ツールがコンピューター上でローカルに実行され、ファイルまたはデータを変更するアクションを実行する可能性があるためです。

チャット ウィンドウで、ツールの呼び出し後、[ 許可 ] ドロップダウン オプションを使用して、現在のセッション、ソリューション、または今後のすべての呼び出しの特定のツールを自動的に確認します。

エージェント ツールの承認の管理を示すスクリーンショット。

ツールの確認の選択は、Tools>Options>GitHub>Copilot>Tools でリセットできます。

ツールの構成設定を示すスクリーンショット。

よく寄せられる質問

管理者として、Visual Studio ユーザーのエージェント モードでの MCP サーバーの使用を制御するにはどうすればよいですか?

Visual Studio でのエージェント モードと MCP の使用は、管理者向けの GitHub Copilot ダッシュボードの エディター プレビュー機能 フラグによって管理されます。 管理者がこの設定をオフにすると、そのサブスクリプションのユーザーはエージェント モードを使用したり、Visual Studio で MCP サーバーに接続したりできなくなります。

詳細については、 企業での副操縦のポリシーと機能の管理を参照してください