Skip to main content

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

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

前提条件

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

はじめに

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

組織およびエンタープライズ管理者は、YAML frontmatter を使用して、 カスタム エージェント の一部として MCP サーバーを構成することもできます。 詳しくは、「カスタム エージェントの構成」をご覧ください。

警告

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

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

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

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

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

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

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

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

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

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

  5. 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""stdio""http"、または "sse"を受け入れます。

          **ローカル MCP 固有のキー**

* command (string): 必須。 MCP サーバーを起動するために実行するコマンド。 * args (string[]): 必須。 command に渡す引数。 * env (object): 省略可能。 サーバーに渡す環境変数。 このオブジェクトは、MCP サーバーに公開する必要がある環境変数の名前を次のいずれかにマップする必要があります。

  • Copilot 環境内では、シークレット、または変数への置換参照として $COPILOT_MCP_API_KEY${COPILOT_MCP_API_KEY} などが使用されます。 参照される名前は、 COPILOT_MCP_で始まる必要があります。

  • リテラル文字列値。

          **リモート MCP 固有のキー**
    
  •         `url` (`string`): 必須。 MCP サーバーの URL。
    
  •         `headers` (`object`): 省略可能。 サーバーへの要求にアタッチするヘッダー。 このオブジェクトは、ヘッダー キーの名前を次のいずれかにマップする必要があります。
    
    • Copilot 環境内のシークレットや変数に対する置換参照、例えば $COPILOT_MCP_API_KEY${COPILOT_MCP_API_KEY} など。 参照される名前は、 COPILOT_MCP_で始まる必要があります。

    • リテラル文字列値。

            `string`
            `string[]` 以外のすべての `tools` & `type` フィールドでは、Copilot環境で構成した変数またはシークレットを使用した置換をサポートしているということを知っておいてください。
      

変数の置換

Copilot 環境で構成された環境変数を参照するために、次の構文パターンがサポートされています。

構文
$VAR$COPILOT_MCP_API_KEY
${VAR}${COPILOT_MCP_API_KEY}
${VAR:-default}${COPILOT_MCP_API_KEY:-fallback_value}

構成例

次の例は、さまざまなプロバイダーの MCP サーバー構成を示しています。

  •         [Sentry](#example-sentry)
    
  •         [Notion](#example-notion)
    
  •         [Azure](#example-azure)
    
  •         [Cloudflare](#example-cloudflare)
    
  •         [Azure DevOps](#example-azure-devops)
    
  •         [Atlassian](#example-atlassian)
    

例: Sentry

          [Sentry MCP サーバー](https://github.com/getsentry/sentry-mcp)は、[Sentry](https://sentry.io) に記録された例外に対する認証アクセスを 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 variable or secret in your Copilot environment
        // with a name starting with `COPILOT_MCP_`
        "SENTRY_ACCESS_TOKEN": "$COPILOT_MCP_SENTRY_ACCESS_TOKEN"
      }
    }
  }
}

例: Notion

          [Notion MCP サーバー](https://github.com/makenotion/notion-mcp-server)は、[Notion](https://notion.so) のメモやその他のコンテンツに対する認証アクセスを 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

          [Microsoft MCP リポジトリ](https://github.com/microsoft/mcp)には、Azure MCP サーバーが含まれています。これにより、Copilot は、コードの変更時にサブスクリプション内のAzure固有のファイルとAzureリソースを理解できます。

          `copilot-setup-steps.yml` ファイルを使用してAzureと認証用のシークレットを使用してリポジトリを自動的に構成するには、リポジトリをローカルに複製してから、リポジトリのルートで [Azure Developer CLI](https://learn.microsoft.com/en-us/azure/developer/azure-developer-cli/?ref_product=copilot&ref_type=engagement&ref_style=button) の `azd coding-agent config` コマンドを実行します。

コマンドを実行し、作成した pull request をマージしたら、MCP 構成をリポジトリに追加できます。

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

例: Cloudflare

          [Cloudflare MCP サーバー](https://github.com/cloudflare/mcp-server-cloudflare)は、ドキュメントの処理やデータ分析など、Cloudflare サービス間の接続を作成します。
JSON
{
  "mcpServers": {
    "cloudflare": {
      "type": "sse",
      "url": "https://docs.mcp.cloudflare.com/sse",
      "tools": ["*"]
    }
  }
}

例: Azure DevOps

          [Azure DevOps MCP サーバー](https://github.com/microsoft/azure-devops-mcp)は、Copilot と作業項目、パイプライン、ドキュメントなどのAzure DevOps サービスとの間にシームレスな接続を作成します。

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

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

  2. アプリケーション ID のAzure DevOps組織とプロジェクトへのアクセスを設定します。 「組織ユーザーを追加してアクセスを管理する」をご覧ください。

  3.        `.github/workflows/copilot-setup-steps.yml` Actions ワークフロー ファイルがまだない場合は、リポジトリに追加します。
    
  4. Azure ログイン ステップを copilot-setup-steps ワークフロー ジョブに追加します。

    YAML
    # このワークフローはGitHubによって認定されていないアクションを使用します。
    # それらはサードパーティによって提供され、
    # 別個の利用規約、プライバシーポリシー、
    # ドキュメントを参照してください。
    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 }}
              allow-no-subscriptions: true
    

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

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

  6. Copilotコーディングエージェント で使いたい定義済みのツールを指定し、ado オブジェクトを MCP の構成に追加して、Azure DevOps MCP サーバーを構成します。

JSON
{
  "mcpServers": {
    "ado": {
      "type": "local",
      "command": "npx",
      "args": ["-y", "@azure-devops/mcp", "<your-azure-devops-organization>", "-a", "azcli"],
      "tools": ["wit_get_work_item", "wit_get_work_items_batch_by_ids", ...]
    }
  }
}

例: Atlassian

          [Atlassian MCP サーバー](https://github.com/atlassian/atlassian-mcp-server)は、Copilot に、Jira、Compass、Confluence などの Atlassian アプリへの認証済みアクセスを提供します。

API キーを使用した Atlassian MCP サーバーへの認証の詳細については、Atlassian ドキュメントの API トークンを使用した認証の構成 を参照してください。

JavaScript
// If you copy and paste this example, you will need to remove the comments prefixed with `//`, which are not valid JSON.
{
  "mcpServers": {
    "atlassian-rovo-mcp": {
      "command": "npx",
      "type": "local",
      "tools": ["*"],
      "args": [
        "mcp-remote@latest",
        "https://mcp.atlassian.com/v1/mcp",
        // We can use the $ATLASSIAN_API_KEY environment variable which is passed
        // to the server because of the `env` value below.
        "--header",
        "Authorization: Basic $ATLASSIAN_API_KEY"
      ],
      "env": {
        // The value of the `COPILOT_MCP_ATLASSIAN_API_KEY` secret will be passed
        // to the server command as an environment variable
        // called `ATLASSIAN_API_KEY`.
        "ATLASSIAN_API_KEY": "$COPILOT_MCP_ATLASSIAN_API_KEY"
      }
    }
  }
}

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.        `inputs` 構成内の `args` に対する参照を更新し、代わりに `env` の環境変数を参照するようにします。
    

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

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

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

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

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

    タブを示すリポジトリ ヘッダーのスクリーンショット。 [設定] タブが濃いオレンジ色の枠線で強調表示されています。
    1. 左側のサイドバーで、 [環境] をクリックします。1. [新しい環境] をクリックします。

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

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

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

MCP 構成の検証

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

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

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

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

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

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

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

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

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

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

  4.        **[MCP configuration]** セクションで構成を追加します。 たとえば、次のように追加できます。
    
    JavaScript
     // If you copy and paste this example, you will need to remove the comments prefixed with `//`, which are not valid JSON.
     {
       "mcpServers": {
         "github-mcp-server": {
           "type": "http",
           // Remove "/readonly" to enable wider access to all tools.
           // Then, use the "X-MCP-Toolsets" header to specify which toolsets you'd like to include.
           // Use the "tools" field to select individual tools from the toolsets.
           "url": "https://api.githubcopilot.com/mcp/readonly",
           "tools": ["*"],
           "headers": {
             "X-MCP-Toolsets": "repos,issues,users,pull_requests,code_security,secret_protection,actions,web_search"
           }
         }
       }
     }
    

    ツールセットの詳細については、GitHub リモート MCP Server ドキュメントの README を参照してください。

  5.        **[保存]** をクリックします。
    
  6. 左側のサイドバーで、 [環境] をクリックします。

  7.        `copilot` 環境をクリックします。
    
  8. [Environment secrets] で、[Add environment secret] をクリックします。

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

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

次のステップ

  •         [AUTOTITLE](/copilot/how-tos/copilot-cli/customize-copilot/add-mcp-servers)
    
  •         [AUTOTITLE](/copilot/how-tos/use-copilot-agents/coding-agent/create-custom-agents)
    
  •         [AUTOTITLE](/copilot/customizing-copilot/customizing-the-development-environment-for-copilot-coding-agent)
    
  •         [AUTOTITLE](/copilot/customizing-copilot/extending-copilot-chat-with-mcp)