SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

GitHub Copilot Coding Agent の動作の基本的なカスタマイズ

leave a comment

SQL Server 運用ツールの作成で GitHub Copilot Coding Agent を活用してみる でツール作成を実施する中で、GitHub Copilot Coding Agent (以下、Coding Agent) を活用していました。

カスタマイズ に記載されている内容について、一通り試せたかと思いますので、私が試した内容をまとめておきたいと思います。

https://gist.github.com/MasayukiOzawa/1dd6d84ea2a66e3d4ff9cc8b26220e99 でもまとめています。

カスタマイズの内容

冒頭に以前投稿した内容のリンクを記載していますが、Coding Agent のカスタマイズの基本については次の内容となるかと思います。

これらの設定をカスタマイズしながら、Coding Agent が実行可能なタスクのカスタマイズをしていくのか基本となるのではないでしょうか。

 

外部 API の呼び出し (Azure OpenAI を例として使用)

本投稿では Azure OpenAI を例として使用していますが、外部の API を呼び出すということも可能です。

Coding Agent からの外部アクセスは Firewall の設定で制限がされていますので、次のような設定をして、外部アクセスの許可を行います。

  1. リポジトリの Setttings -> Environment -> copilot から、Firewall の設定を追加
    • Environment variables:
      • COPILOT_AGENT_FIREWALL_ALLOW_LIST: openai.azure.com

これで外部アクセスが可能となります。

必須ではないのですが、タスクから指示を出す際に、外部 API の呼び出しに必要となる情報をハードコードしたくないので環境変数として設定し、それを指示内で使用できるようにします。

  1. リポジトリの Setttings -> Environment -> copilot から次の内容を設定
    • Environment secrets:
      • AOAI_KEY: Azure OpenAI のキー
    • Environment variables:

これで、外部 API を呼び出すことができるようになります。

どの情報を使用してアクセスを行えばよいかを指示の中に記載しておくことで、一般的な API であれば、呼び出しの細かな指示をしなくても、Coding Agent が API の呼び出しを実施してくれます。

取得した内容を Azure OpenAI を使用し、300 文字に要約して azure_resources.html を作成してください。 
- Azure OpenAI へのアクセスは、環境変数の AOAI_ENDPOINT / AOAI_DEPLOY、シークレットの AOAI_KEY の情報を使用して実施してください。 

 

MCP Server の追加 (Azure MCP Server / Docs MCP Server)

現在の Coding Agent では、Default MCP servers として含まれており、、GitHub と Playwright については追加をしなくても利用することができます。それ以外の MCP Server については明示的に追加することができます。

Azure の操作については、Azure MCP Server が提供されており、Azure のリソースに対してのいくつかの操作については、この MCP  Server 経由で操作が可能となっています。

Coding Agent と Azure の接続に必要な作業については、次のドキュメントから把握することができます。

 

大きな作業の流れとしては次のようになります。

  1. GitHub と Azure の接続 の手順を Azure Portal から実施し、Azure 側で、GitHub と接続するための、フェデレーション資格情報を追加する。
    • 組織: GitHub ユーザー名
    • リポジトリ: GitHub Coding Agent を実行するリポジトリ名
    • エンティティ型: 環境
    • 選択範囲に基づく (GitHub enironment name): copilot
      • GitHub のリポジトリの Environment に設定されている copilot を指定している
  2. 作成したアプリケーションに適切なロールを付与
    • 一例としてはサブスクリプションに対して「閲覧者」(Reader) のロールを付与し、リソースの参照を許可する
  3. 「.github/workflows/copilot-setup-steps.yml」に Azure Loginの設定を追加

    name: "Copilot Setup Steps"
    
    on:
      workflow_dispatch:
      push:
        paths:
          - .github/workflows/copilot-setup-steps.yml
      pull_request:
        paths:
          - .github/workflows/copilot-setup-steps.yml
    
    jobs:
      copilot-setup-steps:
        runs-on: ubuntu-latest
        permissions:
          id-token: write
          contents: read
        environment: copilot
        steps:
          - name: Azure login
            uses: Azure/login@v2.3.0
            with:
              client-id: ${{ secrets.AZURE_CLIENT_ID }}
              tenant-id: ${{ secrets.AZURE_TENANT_ID }}
              subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
    
  4. リポジトリの Setttings -> Environment -> copilot から次の内容を設定
    • Environment secrets:
      • AZURE_CLIENT_ID: 1. で登録したアプリケーションのクライアント ID
      • AZURE_SUBSCRIPTION_ID: サブスクリプション ID
      • AZURE_TENANT_ID: テナント ID
  5. リポジトリの Copilot -> Coding agent -> MCP Configuration から次の内容を設定

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

これにより、Coding Agent が設定したアプリケーションの権限の範囲で MCP Server でサポートされている操作について、Azure リソースを操作することができるようになります。

例としては次のようなタスクが実行できるようになります。

Azure MCP Server を使用して Japan East のリソースグループの一覧を取得して、azure_resources.html に表形式で追加してください。

 

Azure MCP Server は リソースグループの取得 をサポートしていますので、MCP Server が正常に設定できていれば、Coding Agent からリソースグループの取得を実施することが可能です。

 

Microsoft 関連の MCP Server については、MCP Servers for agent mode / Microsoft Model Context Protocol (MCP) Servers で情報が公開されています。

Docs MCP Server を追加することで、Microsoft に特化した情報の調査を Coding Agent のスキルとして追加することが可能となります。

上述の リポジトリの Copilot -> Coding agent -> MCP Configuration の設定を次のようにすることで、Azure だけでなく、Microsoft Learnについての MCP Server を追加することができます。

{
  "mcpServers": {
    "microsoft_docs_mcp": {
      "type": "local",
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://learn.microsoft.com/api/mcp"
      ],
      "tools": [
        "*"
      ]
    },
     "Azure": {
         "type": "local",
       "command": "npx",
       "args": [
         "-y",
         "@azure/mcp@latest",
         "server",
         "start"
       ],
         "tools": ["*"]
     }
  }
}

 

これにより、上述の Azure OpenAI の呼び出しと組み合わせて次のようなタスクの実行が可能となります。

1. microsoft_docs_mcp MCP Server を使用して、Azure のリソースグループの概要を取得してください。 
2. 取得した内容を Azure OpenAI を使用し、300 文字に要約して azure_resources.html を作成してください。 
- Azure OpenAI へのアクセスは、環境変数の AOAI_ENDPOINT / AOAI_DEPLOY、シークレットの AOAI_KEY の情報を使用して実施してください。 

 

実行環境のカスタマイズ

Azure の MCP Server を追加する際に、「.github/workflows/copilot-setup-steps.yml」を作成していますが、このファイルをカスタマイズすることで、実行環境をカスタマイズすることができます。

GitHub Copilot Coding Agent で Playwright を使用した画面キャプチャの取得 で触れていますが、日本語を含むページについて Playwright でスクリーンショットを取得しようとすると、Coding Agent の環境には日本語フォントが含まれていないため、文字化けが発生します。

タスクのプロンプト内に指示を記載することでタスクを実行する中で必要となるモジュールのインストールを誘導することもできますが、環境に必要なものが明確になっているのであれば、明示的にカスタマイズしたほうが確実です。

Azure と Playwright 向けの環境を設定するのであれば次のような作業を実施します。

  1. 「.github/workflows/copilot-setup-steps.yml」に次の設定を追加する。

    name: "Copilot Setup Steps"
    
    on:
      workflow_dispatch:
      push:
        paths:
          - .github/workflows/copilot-setup-steps.yml
      pull_request:
        paths:
          - .github/workflows/copilot-setup-steps.yml
    
    jobs:
      copilot-setup-steps:
        runs-on: ubuntu-latest
        permissions:
          id-token: write
          contents: read
        environment: copilot
        steps:
          - name: Azure login
            uses: Azure/login@v2.3.0
            with:
              client-id: ${{ secrets.AZURE_CLIENT_ID }}
              tenant-id: ${{ secrets.AZURE_TENANT_ID }}
              subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
          - name: Install Japanese Font
            run: |
             sudo apt-get update && sudo apt-get install -y fonts-noto-cjk
    

これで日本語のフォントがインストールされた環境となりますので、次のような指示を出した際に期待したスクリーンショットの取得が行われるようになります。

出力した内容は Playwright MCP Server を使用して、スクリーンショットを取得して共有してください。 

 

他のリポジトリの参照

前述のとおり、Coding Agent にはデフォルトで GitHub MCP Server が追加されており、Customizing the built-in GitHub MCP  server の対応をすることで、他のリポジトリを参照することができます。

Coding Agent で使用するコーディングルールを管理するリポジトリを作成し、そのリポジトリを中央集権的に参照をしながらタスクを実行するということができます。

Personal Access Token を使用する方法となりますが、次のような手順で、GitHub MCP Server を使用して他のリポジトリを参照できます。

  1. ユーザーの Settings -> Developer settings -> Personal access tokens から Personal Access Token (PAT) を作成する。
  2. リポジトリの Setttings -> Environment -> copilot から次の内容を設定
    • Environment secrets:
      • COPILOT_MCP_GITHUB_PERSONAL_ACCESS_TOKEN: 1 で作成した PAT
    • Environment variables:

参照するリポジトリをタスクの指示に含めることもできますが、ハードコードしたくない場合は環境変数を参照させることで、リポジトリを指定することができます。

これにより、次のようなタスクで他のリポジトリの Coding Rule を参照するということができます。

環境変数 CODING_RULE_REPO が設定されている場合、GitHub MCP Server を使用して、環境変数に設定されている URL 内の Markdown をコーディングルールとして使用してください。 
- リポジトリが Private Repository 出会った場合、Personal Access Token を使用してアクセスをしてください。 

 

カスタム指示の設定

Adding repository custom instructions for GitHub Copilot に記載されているように、「.github/copilot-instructions.md」にカスタム指示を指定することができます。

例ですが、以下のような内容を設定しておくことで、ここまでに設定した内容を使用するように指示をしておくことができます。

他のリポジトリに Coding Rule を格納している場合の使用の指示などをカスタム指示に入れておくと便利かと。

 

# 使用言語
全ての応答は日本語に翻訳して記載してください。

# コーディングルールの参照
- 環境変数 CODING_RULE_REPO が設定されている場合、GitHub MCP Server を使用して、環境変数に設定されている URL 内の Markdown をコーディングルールとして使用してください。
  - リポジトリが Private Repository 出会った場合、Personal Access Token を使用してアクセスをしてください。

# Coding Agent の PR の応答に含める内容
- 出力した内容は Playwright MCP Server を使用して、スクリーンショットを取得して共有してください。
- タスクを実行するために参照した、カスタム指示の Markdown ファイル名を PR 内の応答に含めてください。
  - 他のリポジトリの Markdown を参照した場合も、参照したファイル名を応答に含めてください。
- 使用した MCP Server を PR 内の応答に含めてください。
  - MCP Server の利用時にエラーが発生した場合、どの MCP Server でエラーが発生したかを PR 内の応答に含めてください。

 

 

まとめ

ここまでの内容を実施しておくと、次のようないくつかの機能を組み合わせたタスクを実行することができるようになります。

# 実施してもらいたいタスク 
1. microsoft_docs_mcp MCP Server を使用して、Azure のリソースグループの概要を取得してください。
2. 取得した内容を Azure OpenAI を使用し、300 文字に要約して azure_resources.html を作成してください。
    -  Azure OpenAI へのアクセスは、環境変数の AOAI_ENDPOINT / AOAI_DEPLOY、シークレットの AOAI_KEY の情報を使用して実施してください。
3. Azure MCP Server を使用して Japan East のリソースグループの一覧を取得して、azure_resources.html に表形式で追加してください。

 

基本的なカスタマイズだけでも Coding Agent が実行できるタスクの幅を広げることができるのではないでしょうか。

Share

Written by Masayuki.Ozawa

7月 8th, 2025 at 11:28 pm

Leave a Reply