Skip to main content

モデル コンテキスト プロトコル (MCP) を使用した Copilot コーディング エージェントの拡張

モデル コンテキスト プロトコル (MCP) を使用して Copilot コーディング エージェント を拡張する方法について説明します。

メモ

Copilot コーディング エージェント は パブリック プレビュー段階にあり、変更される可能性があります。 プレビュー期間中、この機能の使用は「GitHub プレリリース ライセンス条項」の対象となります。

前提条件

Copilot コーディング エージェント 用に MCP サーバーを設定する前に、「モデル コンテキスト プロトコル (MCP) と Copilot コーディング エージェント」を読んで、MCP サーバーと Copilot コーディング エージェント に関する概念を理解していることを確認してください。

はじめに

リポジトリ管理者は、使用する MCP サーバーをリポジトリ内で構成できます。 これは、使用する MCP サーバーの詳細を指定する JSON 形式の構成を使用することで行います。 GitHub.com 上のリポジトリの設定に、JSON 構成を直接入力します。

警告

いったん MCP サーバーを構成した後、Copilot はそのサーバーによって提供されるツールを自律的に使用できるようになり、使用前にユーザーに承認を求めることはありません。

リポジトリへの MCP 構成の追加

リポジトリ管理者は、次の手順に従って MCP サーバーを構成できます。

  1. GitHub で、リポジトリのメイン ページに移動します。

  2. リポジトリ名の下にある [設定] をクリックします。 [設定] タブが表示されない場合は、 [] ドロップダウン メニューを選び、 [設定] をクリックします。

    タブを示すリポジトリ ヘッダーのスクリーンショット。 [設定] タブが濃いオレンジ色の枠線で強調表示されています。

  3. サイドバーの [Code & automation] セクションで、[Copilot][コーディング エージェント] の順にクリックします。

  4. [MCP configuration] セクションで構成を追加します。

    この記事の以降のセクションでは、ここで入力する必要がある JSON 構成を記述する方法について説明します。

  5. [保存] をクリックします。

    構文が適切であることを確認するために構成が検証されます。

  6. MCP サーバーにキーまたはシークレットが必要な場合は、Copilot 環境にシークレットを追加します。 MCP 構成で使用できるのは、名前の前に COPILOT_MCP_ が付いたシークレットのみです。 「Copilot コーディング エージェント の Copilot 環境の設定」をご覧ください。

MCP サーバーの JSON 構成の記述

特別な JSON 形式を使用して MCP サーバーを構成します。 JSON に mcpServers オブジェクトを含める必要があります。キーは MCP サーバーの名前 (sentry など)、値はその MCP サーバーの構成を含むオブジェクトです。

JSON
{
  "mcpServers": {
    "MCP SERVER 1": {
      "command": "VALUE",
      "args": [ VALUES ],
      ...
    },
    "MCP SERVER 2": {
      "command": "VALUE",
      "args": [ VALUES ],
      ...
    },
    ...
  }
}

構成オブジェクトには次のキーが含まれる可能性があります。

ローカルおよびリモートの MCP サーバーに必要なキー

  • tools (string[]): 有効にする MCP サーバーのツール。 ツールの一覧は、サーバーのドキュメントまたはそのコード内で確認できます。 エージェントはこれらのツールを自律的に使用可能であり、事前に承認を求めことがないため、特定の読み取り専用ツールを許可リストに登録することを強くお勧めします。 配列に * を含めることですべてのツールを有効にすることもできます。
  • type (string): Copilot コーディング エージェント は "local""http"、または "sse" を受け入れます。

ローカル MCP 固有のキー

  • command (string): 必須。 MCP サーバーを起動するために実行するコマンド。
  • args (string[]): 必須。 command に渡す引数。
  • env (object): 省略可能。 サーバーに渡す環境変数。 このオブジェクトは、MCP サーバーに公開する必要がある環境変数の名前を次のいずれかにマップします。
    • COPILOT_MCP_ から始まる、構成した GitHub Actions シークレットの名前。
    • 文字列値。

リモート MCP 固有のキー

  • url (string): 必須。 MCP サーバーの URL。
  • headers (object): 省略可能。 サーバーへの要求にアタッチするヘッダー。 このオブジェクトは、ヘッダー キーの名前を次のいずれかにマッピングする必要があります。
    • COPILOT_MCP_ で始まり $ が前に付く、構成済みの GitHub Actions シークレットの名前。
    • 文字列値

構成例

例: Sentry

Sentry MCP サーバーは、Sentry に記録された例外に対する認証アクセスを Copilot に提供します。

JavaScript
// If you copy and paste this example, you will need to remove the comments prefixed with `//`, which are not valid JSON.
{
  "mcpServers": {
    "sentry": {
      "type": "local",
      "command": "npx",
      // We can use the $SENTRY_HOST environment variable which is passed to
      // the server because of the `env` value below.
      "args": ["@sentry/mcp-server@latest", "--host=$SENTRY_HOST"],
      "tools": ["get_issue_details", "get_issue_summary"],
      "env": {
        // We can specify an environment variable value as a string...
        "SENTRY_HOST": "https://contoso.sentry.io",
        // or refer to a GitHub Actions secret with a name starting with
        // `COPILOT_MCP_`
        "SENTRY_ACCESS_TOKEN": "COPILOT_MCP_SENTRY_ACCESS_TOKEN"
      }
    }
  }
}

例: Notion

Notion MCP サーバーは、Notion のメモやその他のコンテンツに対する認証アクセスを Copilot に提供します。

JavaScript
// If you copy and paste this example, you will need to remove the comments prefixed with `//`, which are not valid JSON.
{
  "mcpServers": {
    "notionApi": {
      "type": "local",
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-e",
        // We can use the $NOTION_API_KEY environment variable which is passed to
        // the server because of the `env` value below.
        "OPENAPI_MCP_HEADERS={\"Authorization\": \"Bearer $NOTION_API_KEY\", \"Notion-Version\": \"2022-06-28\"}",
       "mcp/notion"
      ],
      "env": {
        // The value of the `COPILOT_MCP_NOTION_API_KEY` secret will be passed to the
        // server command as an environment variable called `NOTION_API_KEY`
        "NOTION_API_KEY": "COPILOT_MCP_NOTION_API_KEY"
      },
      "tools": ["*"]
    }
  }
}

例: Azure

Azure MCP サーバーは、Copilot と主要な Azure サービス (Azure Cosmos DB や Azure Storage プラットフォームなど) との間にシームレスな接続を作成します。

Copilot コーディング エージェント で Azure MCP を使用するには、リポジトリの copilot-setup-steps.yml ファイルを更新して、Azure ログイン ワークフロー ステップを含める必要があります。

  1. GitHub を信頼して、Microsoft Entra アプリケーションで OIDC を構成します。 「OpenID Connect で Azure ログイン アクションを使用」を参照してください。

  2. .github/workflows/copilot-setup-steps.yml Actions ワークフロー ファイルがまだない場合は、リポジトリに追加します。

  3. copilot-setup-steps ワークフロー ジョブに Azure ログイン ステップを追加します。

    YAML
    on:
      workflow_dispatch:
    permissions:
      id-token: write
      contents: read
    jobs:
      copilot-setup-steps:
        runs-on: ubuntu-latest
        permissions:
          id-token: write
          contents: read
        environment: copilot
        steps:
          - name: Azure login
            uses: azure/login@a457da9ea143d694b1b9c7c869ebb04ebe844ef5
            with:
              client-id: ${{ secrets.AZURE_CLIENT_ID }}
              tenant-id: ${{ secrets.AZURE_TENANT_ID }}
              subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
    

    この構成により、Copilot コーディング エージェント の実行時に azure/login アクションが実行されます。

  4. リポジトリの Copilot 環境で、AZURE_CLIENT_IDAZURE_TENANT_IDAZURE_SUBSCRIPTION_ID のシークレットを追加します。

  5. azure オブジェクトを MCP 構成に追加することで、Azure MCP サーバーを構成します。

JSON
 {
   "mcpServers": {
     "Azure": {
      "type": "local",
      "command": "npx",
      "args": [
        "-y",
        "@azure/mcp@latest",
        "server",
        "start"
       ],
      "tools": ["*"]
     }
   }
 }

例: Cloudflare

Cloudflare MCP サーバーは、ドキュメントの処理やデータ分析など、Cloudflare サービス間の接続を作成します。

JSON
{
  "mcpServers": {
    "cloudflare": {
      "type": "sse",
      "url": "https://docs.mcp.cloudflare.com/sse",
      "tools": ["*"]
    }
  }
}

Visual Studio Code

の MCP 構成の再利用

既に VS Code で MCP サーバーを構成している場合は、Copilot コーディング エージェント に対して同様の構成を利用できます。

VS Code の構成方法によって異なりますが、リポジトリの .vscode/mcp.json ファイルまたはマシンのプライベート settings.json ファイルに MCP 設定があります。

Copilot コーディング エージェント に構成を適応させるには、次の手順を実行する必要があります。

  1. Copilot でどのツールが使用できるかを指定する、tools キーを各 MCP サーバーに追加します。
  2. inputs を構成した場合は、env の直接使用に切り替えます。
  3. envFile を構成した場合は、env の直接使用に切り替えます。
  4. args 構成内の inputs に対する参照を更新し、代わりに env の環境変数を参照するようにします。

VS Code での MCP の詳細については、VS Code ドキュメントを参照してください。

Copilot コーディング エージェント の Copilot 環境の設定

一部の MCP サーバーには、キーまたはシークレットが必要です。 Copilot コーディング エージェント でそれらのサーバーを利用するには、Copilot の環境にシークレットを追加します。 これにより、シークレットが適切に認識され、構成した該当の MCP サーバーに渡されます。

リポジトリの Copilot 環境を構成するには、リポジトリ管理者である必要があります。

  1. GitHub で、リポジトリのメイン ページに移動します。

  2. リポジトリ名の下にある [設定] をクリックします。 [設定] タブが表示されない場合は、 [] ドロップダウン メニューを選び、 [設定] をクリックします。

    タブを示すリポジトリ ヘッダーのスクリーンショット。 [設定] タブが濃いオレンジ色の枠線で強調表示されています。

  3. 左側のサイドバーで、 [環境] をクリックします。

  4. [新しい環境] をクリックします。

  5. 新しい環境 copilot を呼び出し、[Configure environment] をクリックします。

  6. [Environment secrets] で、[Add environment secret] をクリックします。

  7. COPILOT_MCP_ で始まる名前をシークレットに付けてから、[Add secret] をクリックします。

MCP 構成の検証

MCP 構成を設定したら、MCP 構成をテストして、正しく設定されていることを確認する必要があります。

  1. リポジトリで issue を作成し、それを Copilot に割り当てます。
  2. 数秒待つと、Copilot が issue に対して 👀 の反応を残します。
  3. さらに数秒待つと、Copilot によって pull request が作成され、issue のタイムラインに表示されます。
  4. タイムライン内の作成された pull request をクリックし、[Copilot started work] タイムライン イベントが表示されるまで待ちます。
  5. [View session] をクリックし、Copilot コーディング エージェント のログを開きます。
  6. ログ ビューアーの右上にある省略記号ボタン ([...]) をクリックしてから、サイドバーの [Copilot] をクリックします。
  7. [Start MCP Servers] ステップをクリックして、ログを展開します。
  8. MCP サーバーが正常に起動していた場合、ログの一番下にそれらのツールが一覧表示されます。

MCP サーバーで必要な依存関係 (uvpipx など) が GitHub Actions ランナーに既定でインストールされていない場合、または特別な設定手順を必要とする場合は、copilot-setup-steps.yml Actions ワークフロー ファイルを作成してそれらをインストールする必要があります。 詳しくは、「Copilot コーディング エージェントの開発環境のカスタマイズ」をご覧ください。

組み込み GitHub MCP サーバーのカスタマイズ

GitHub MCP サーバーは既定で有効になっており、現在のリポジトリに対して読み取り専用アクセス権のみを持つ特殊なスコープのトークンを使って GitHub に接続します。

現在のリポジトリの外部にあるデータへのアクセスを Copilot に許可する場合は、より広いアクセス権を含む personal access token を付与できます。

  1. 適切なアクセス許可を含む personal access token を作成します。 トークンのアクセスを特定のリポジトリの読み取り専用アクセス許可に制限できる、fine-grained personal access token を使用することをお勧めします。 personal access tokens の詳細については、「個人用アクセス トークンを管理する」を参照してください。

  2. GitHub で、リポジトリのメイン ページに移動します。

  3. リポジトリ名の下にある [設定] をクリックします。 [設定] タブが表示されない場合は、 [] ドロップダウン メニューを選び、 [設定] をクリックします。

    タブを示すリポジトリ ヘッダーのスクリーンショット。 [設定] タブが濃いオレンジ色の枠線で強調表示されています。

  4. サイドバーの [Code & automation] セクションで、[Copilot][コーディング エージェント] の順にクリックします。

  5. [MCP configuration] セクションで構成を追加します。

  6. [保存] をクリックします。

  7. 左側のサイドバーで、 [環境] をクリックします。

  8. copilot 環境をクリックします。

  9. [Environment secrets] で、[Add environment secret] をクリックします。

  10. シークレット COPILOT_MCP_GITHUB_PERSONAL_ACCESS_TOKEN を呼び出し、personal access token を [Value] フィールドに入力してから、[Add secret] をクリックします。

他の環境での GitHub MCP サーバーの使用については、「GitHub MCP サーバーの使用」をご覧ください。

次のステップ