モデル コンテキスト プロトコル (MCP) サーバー、レジストリ、および許可リスト

完了

エージェントは、リポジトリを超えて他のツール、システム、およびサービスと対話できる場合に役立ちます。 モデル コンテキスト プロトコル (MCP) は、外部機能を検出して使用するための一貫した方法をエージェントに提供することで、これを可能にします。

GitHub環境では、MCP はツールへの接続だけではありません。 また、これらのツールの導入、構成、管理方法の制御についても説明します。 これには、MCP サーバーの構成、使用可能なサーバーを検出するためのレジストリの使用、承認済みサーバーのみを使用できるように許可リストの適用が含まれます。

このユニットでは、次の内容について説明します。

  • MCP とは
  • MCP サーバーのしくみ
  • レジストリを使用してサーバーの検出を容易にする方法
  • 許可リストで使用できるサーバーを制御する方法
  • GitHubのエージェント ワークフローとエージェント ツールに MCP がどのように適合するか

MCP とは

モデル コンテキスト プロトコルは、AI クライアントが MCP サーバーを介してツールやサービスに接続するための標準的な方法です。 MCP 互換クライアントは、すべてのツールに対して 1 回限りの統合を構築する代わりに、構造化された形式でツールを公開するサーバーに接続できます。

これにより、エージェントは次の一貫性のあるモデルが提供されます。

  • 使用可能なツールの検出
  • 構造化された要求の送信
  • 構造化された結果の受信
  • 異なるシステム間で同じ相互作用パターンを再利用する

MCP サーバーとは

MCP サーバーは、AI クライアントにツールを公開するコンポーネントです。

サーバーは、クライアントと基になるシステムの間に配置されます。 クライアントが認識し、要求を受け入れ、接続されたサービスに対して実際のアクションを実行する形式で使用可能なツールを提示します。

MCP サーバーは、セットアップに応じて次のことができます。

  • 開発者マシンでローカルで実行する
  • ホステッド サービスとしてリモートで実行する
  • ローカル リソースに接続する
  • リモート API とプラットフォームへのブリッジ

GitHub MCP サーバーが 1 つの例です。 AI クライアントをリポジトリ、問題、プル要求などのGitHub機能に接続します。

ローカルおよびリモートの MCP サーバー

MCP サーバーは、ローカルまたはリモートで構成できます。

ローカル MCP サーバーがコンピューター上で実行されます。 これは、構成、ローカル リソースへのアクセス、またはカスタム セットアップをより厳密に制御する場合に便利です。

リモート MCP サーバーは、他の場所でホストされ、ネットワーク経由でアクセスされます。 これにより、セットアップ作業が減り、複数の環境で同じサーバーを簡単に使用できるようになります。

サポートされている IDE では、GitHub MCP サーバーはリモートまたはローカルで構成でき、リモート オプションはほとんどのユーザーに推奨されるセットアップとして配置されます。 GitHub Enterprise Server ではローカル MCP サーバーの構成がサポートされますが、データ所在地を持つ GitHub Enterprise Cloud ではローカル オプションとリモート オプションの両方がサポートされます。

リモート MCP サーバーをツールとしてエージェントに追加する (VS Code)

MCP サーバーは、Copilot Chat インターフェイスを介して直接追加され、エージェントが使用できるツールになります。

ステップ:

  1. エディターの上部にある GitHub Copilot アイコンをクリックします
  2. Copilot Chatを開き、エージェント モードに切り替える
  3. チャット パネルの [ツール] アイコンをクリックする
  4. Copilot Chat パネルの右上隅にある [ツールの構成] をクリックします。
  5. [MCP サーバーの追加] をクリックします
  6. セットアップ ダイアログで、次の手順を実行します。
    1. サーバーの種類として [HTTP] を選択する
    2. サーバー URL を入力します (例: GitHub MCP サーバー)。
    3. https://api.githubcopilot.com/mcp/
    4. Enter キーを押す
    5. サーバー名が自動的に生成される
    6. スコープを選択します。現在のワークスペースまたはすべてのワークスペース
    7. [認証] をクリックして GitHub にサインインしてください。
    8. 構成を保存する

これで、MCP サーバーはエージェント内のツールとして使用できるようになり、エージェントはタスク中にその機能を呼び出すことができます。

ローカル MCP サーバーをツールとしてエージェントに追加する

ローカル MCP サーバーはコンピューター上で実行され、エージェントはローカル ツール、ファイル、またはカスタム サービスと対話できます。 VS Code のセットアップ プロセスは、MCP サーバーの追加と同じです。

唯一の違いは、接続先のサーバーです。 GitHub MCP サーバーのようなホストされた URL を使用する代わりに、次のようなローカル エンドポイントを指定します。

http://localhost:3000

ローカル MCP サーバー:

  • コンピューターで実行する
  • ローカル リソースとカスタム ワークフローにアクセスできる
  • 通常、外部認証は必要ありません

MCP レジストリとは

MCP レジストリは、MCP サーバーのカタログです。

レジストリは、すべての開発者にすべてのサーバーを手動で構成するように依頼するのではなく、互換性のあるクライアントが使用可能なサーバーとその使用方法を検出できる中心的な場所を提供します。

これにより、次の 2 つの方法でセットアップが簡略化されます。

  • サーバーの検出が容易になります
  • サーバーの記述と配布方法を標準化します

既定では、サポートされている IDE エクスペリエンスでは GitHub MCP レジストリを使用でき、開発者は必要に応じてカスタム レジストリに切り替えることもできます。

レジストリが構成にどのように役立つか

レジストリは、サーバーの追加に関連する手動作業の多くを削除するため、摩擦を軽減します。

開発者は、サーバーごとに構成ファイルを手動で編集する代わりに、レジストリを参照または検索し、サーバーを選択してインストールし、環境で使用するために信頼することができます。

これにより、レジストリは次の場合に特に役立ちます。

  • Teamsは、より簡単なセットアップを求めています
  • 組織は、承認されたサーバーの標準セットを必要とします
  • 開発者には、アンマネージド検出の代わりにキュレーションされたリストが必要です

GitHubでは、必要な MCP レジストリの仕様とエンドポイント構造に従っている限り、組織および企業向けのカスタム MCP レジストリもサポートされます。

MCP レジストリを構成する

GitHubでカスタム MCP レジストリを使用するには、組織または企業がアクセスできるレジストリGitHub Copilot作成またはホストする必要があります。

ステップ:

  1. MCP レジストリを作成またはホストします。 これは、次の 3 つの方法のいずれかで行うことができます。
    • オープンソースの MCP レジストリをフォークしてセルフホストする
    • Docker を使用してローカルでオープン ソース レジストリを実行する
    • 独自のカスタム レジストリ実装をビルドして発行する
  2. レジストリがGitHub要件を満たしていることを確認します。 レジストリは次の手順を実行する必要があります。
    • MCP レジストリ v0.1 の仕様に従う
    • 必要な HTTPS エンドポイントを公開します。
      • GET /v0.1/servers
      • GET /v0.1/servers/{serverName}/versions/latest
      • GET /v0.1/servers/{serverName}/versions/{version}
    • Copilotがアクセスできるように、必要な CORS ヘッダーを含めます。
      • Access-Control-Allow-Origin: *
      • Access-Control-Allow-Methods: GET、OPTIONS
      • アクセスコントロール-許可-ヘッダー: Authorization, Content-Type
  3. (省略可能)ローカル MCP サーバーを含めます。
    • 開発者が制限付きポリシーの下でローカル MCP サーバーを使用する場合は、それらのサーバーをレジストリに一覧表示する必要があります
    • サーバー ID は完全に一致する必要があります
  4. (代替)Azure API センターを使用する
    • Azure API センターは、マネージド MCP レジストリとして機能できます
    • Copilotがレジストリを取得できるように、匿名アクセスを許可する
    • 後で使用するために API Center エンドポイント URL をコピーする
  5. 組織または企業にレジストリ URL を指定する
    • この URL は、Copilotポリシー設定で使用されます
    • これにより、会社全体でレジストリを使用できるようになります。

構成すると、レジストリが使用可能な MCP サーバーの信頼できるソースになり、開発者は承認されたツールを一貫した方法で検出して使用できるようになります。

許可リストとは

許可リストは、許可される MCP サーバーを制御するポリシーです。

MCP はエージェントがアクセスできる内容を拡張するため、これは重要です。 ガードレールがない場合、エージェントは機密性の高いシステムを公開したり、安全でないアクションを許可したりするツールに接続できます。

許可リストは、サーバーの使用を承認済みエントリに制限することでこれを解決します。 実際には、これは、開発者が次のことを行うことができるかどうかを組織または企業が決定できることを意味します。

  • MCP サーバーを常に使用する
  • 任意の MCP サーバーを使用する
  • レジストリで定義されている特定の MCP サーバーのみを使用する

GitHubは、ユーザーを管理する Copilot シートに関連付けられた、組織およびエンタープライズ レベルでの MCP 許可リストの適用をサポートします。

MCP サーバー、レジストリ、および許可リストの連携のしくみ

これらの 3 つの概念は、同じ問題のさまざまな部分を解決します。

  • MCP サーバー がツールを公開する
  • レジストリを 使用すると、サーバーを検出および信頼できるようになります
  • 許可リスト は、許可されるサーバーを決定します

一緒に、柔軟性と制御性の両方を備えるモデルを作成します。

開発者またはチームはレジストリを使用して便利なサーバーを検出できますが、組織は実際に許可されるサーバーに対するガバナンスを保持します。

MCP 許可リストを構成する

MCP 許可リストは、開発者が使用できる MCP サーバーを制御します。 これは、GitHubの組織レベルまたはエンタープライズ レベルで構成されます。

手順 (エンタープライズ):

  1. GitHubで企業に移動する
  2. ページの上部にある [AI コントロール] をクリックします。
  3. サイドバーで[MCP]をクリックします。
  4. Copilot内の MCP サーバーが [どこでも有効] に設定されていることを確認する
  5. [MCP レジストリ URL] セクションで、次の手順を実行します。
    • レジストリの URL を入力します
    • [保存] をクリックします
    • Azure API センターを使用している場合は、ベース URL のみを入力します (/v0.1/servers は含めないでください)
  6. [レジストリ サーバーへの MCP アクセスの制限] で、次を選択します。
    • すべて許可→制限なし、どの MCP サーバーも使用できます。
    • レジストリ→レジストリからのサーバーのみが許可されます

手順 (組織):

  1. GitHubで、プロファイル画像をクリックし、[組織] を選択します。
  2. 組織を選択する
  3. [設定] をクリックする
  4. サイドバーで[Copilot]、[ポリシー]の順にクリックします。
  5. [機能] セクションで、次の手順を実行します。
    • Copilotの MCP サーバーが有効になっていることを確認する
  6. (省略可能)MCP レジストリ URL:
    • レジストリ URL を入力する
    • [保存] をクリックします
    • Azure API センターを使用している場合は、ベース URL のみを入力します
  7. [レジストリ サーバーへの MCP アクセスの制限] で、次を選択します。
    • すべて許可
    • レジストリのみ

Note

注: [すべて許可] オプションが選択されている場合、開発者は制限なく任意の MCP サーバーを追加して使用できます。 レジストリのみが選択されている場合、開発者は、構成されたレジストリで定義されている MCP サーバーのみを使用するように制限されます。 この場合、ローカル MCP サーバーもレジストリに含める必要があり、それらのサーバー ID は正確に一致する必要があります。 ポリシーが選択されると、すべての開発者にすぐに適用されます。

許可リストでは、エージェントが承認された MCP サーバーのみを使用し、アクセスできるツールを組織が制御できるようにします。

実用的なGitHubワークフロー

現実的なGitHub中心の MCP フローは次のようになります。

  1. 組織が MCP レジストリを構成する
  2. 組織は、承認されたサーバーの許可リスト ポリシーを定義します
  3. 開発者が MCP 対応 IDE またはクライアントを開く
  4. クライアントがレジストリから承認済みサーバーを検出する
  5. 開発者は、GitHub MCP サーバーなどのサーバーを有効にします。
  6. エージェントは、タスク中にそのサーバーのツールを使用します

このモデルでは、エージェントはセキュリティとガバナンスを制御することなく、新しい機能を獲得します。

エージェントの実行にとってこれがなぜ重要なのか

MCP を使用すると、エージェントはより多くのツールにアクセスできるようになりますが、より多くのツールは、より多くの責任も意味します。

MCP を安全に大規模に使用するには、接続以上のものが必要です。 必要なもの:

  • ツールを正しく公開するサーバー
  • 承認済みサーバーを検出可能にするレジストリ
  • 使用できる内容を制限する許可リスト

この組み合わせにより、MCP は実際のチームにとって実用的になります。 これにより、エージェントは、セットアップを管理およびアクセス制御しながら、GitHubを超えて拡張できます。

重要なポイント

MCP は、MCP サーバーを介してツールに接続することで、エージェント機能を拡張します。 レジストリを使用すると、これらのサーバーの検出と構成の方法が簡略化されます。 許可リストは、許可するサーバーを決定するガードレールを提供します。

これらの要素を組み合わせることで、MCP はスケーラブルで管理可能になります。

次に、エージェントが GitHub および MCP に接続されたツールを安全に使用できるように、実行環境とアクセス許可の境界を定義する方法について説明します。