GitHub Copilot ChatでバックログのMCPを使って課題を操作する

GitHub Copilotって便利ですよね。e2infoでは、GitHub CopilotがGAされたときから導入しています。私はCopilotが無いと作業できない体になってしまいました。

今までは「コードを書くときに補完してくれて、たまにチャットで質問・依頼する」という使い方が主でしたが、今年2月にGitHub CopilotにAgentモードが追加されました。このおかげで、同じく最近整備されつつあるMCPがGitHub Copilot Chatでも使えるようになり、活用の幅がとても広がっています。

MCPとは

他に解説している記事が多いので、ここでは詳しい説明を省略します。一言で言えば「今まではチャットしか出来なかったAIに、APIを通してファイル編集などのいろいろな操作をしてもらう」ための仕組みです。

SlackやGitHubだけでなく、最近ではバックログやChatworkなどの国産SaaSでもMCPサーバーが公開されています。

https://nulab.com/ja/blog/backlog/released-backlog-mcp-server

このMCPを使うと、ChatGPTやGitHub Copilot Chatから、バックログの操作できるようになります。弊社ではあらゆるタスクをバックログの課題で管理しているので、活用できれば便利そうです。

Claudeを使った例は既にクラスメソッドさんの記事があるので、ここでは弊社で導入しているGitHub Copilot Chatを使ってバックログのMCPを使ってみます。基本的にはREADMEの内容をなぞるだけですが、VSCode特有の設定もあるので、ご参考ください。

https://github.com/nulab/backlog-mcp-server/blob/main/README.ja.md

事前準備

GitHub CopilotでバックログのMCPを使うには、事前に次のアプリなどが必要なのでインストールします。

  • Docker Desktop
    • 他のMCPではnpx(Node.js)を使うものが多いですが、バックログのMCPはDocker環境です
    • Dockerでなくてもコンテナが動けば大丈夫だと思います
  • Visual Studio Code (VSCode)
    • GitHub Copilot Chat拡張を導入して、通常のチャットが可能なようにしておいてください
    • この記事では、MCPサーバーの起動もVSCodeから行います
  • OS: Windows
    • 別にLinuxやMacでも問題ないですが、ここではWindows環境で進めます

それと、バックログを操作するためのAPIキーの準備が必要です。下記の手順を参考に、APIキーを作成してください。発行したAPIキーは後の設定で使います。

https://support-ja.backlog.com/hc/ja/articles/360035641754-API%E3%81%AE%E8%A8%AD%E5%AE%9A

また、会社 (Organization) でGitHub Copilotを契約している契約している場合は、GitHub Copilotのポリシー設定を確認してください。MCPを使うためには「Copilot Extensions」を有効にする必要があります。

https://docs.github.com/ja/copilot/using-github-copilot/using-extensions-to-integrate-external-tools-with-copilot-chat

最後に、必須ではありませんがせっかく公式で日本語化のJSONを用意してくれているので、次のファイルをダウンロードしておきます。
GitHubの右上のダウンロードアイコン (Download raw file)をクリックすればダウンロードできます。

https://github.com/nulab/backlog-mcp-server/blob/main/translationConfig/.backlog-mcp-serverrc.json.example

MCPサーバーを設定

Visual Studio Codeの設定を開いて「MCP」と検索すると、このような設定項目が出てきます。
「Chat › Mcp: Enabled」にチェックが入っていなければ、チェックしてMCPを有効にします。

次に、MCPサーバーを設定するため「Mcp」の「settings.json で編集」をクリックして、VSCodeの設定ファイルを編集します。
そこに次のように設定を記入して、保存します。ファイルパスやAPIキーは適宜読み替えてください。

  • c:\\backlog-mcp-serverrc.json.example: ダウンロードした日本化のJSONファイルパスを指定します
  • xxxxxxx.backlog.jp: バックログのドメインを指定します
  • XXXXXXXXXXXXXXXX: 上で取得したAPIキーを指定します
    "mcp": {
        "inputs": [],
        "servers": {
            "backlog": {
                "command": "docker",
                "args": [
                    "run",
                    "-i",
                    "--rm",
                    "-e",
                    "BACKLOG_DOMAIN",
                    "-e",
                    "BACKLOG_API_KEY",
                    "-v",
                    "c:\\backlog-mcp-serverrc.json.example:/root/.backlog-mcp-serverrc.json:ro",
                    "ghcr.io/nulab/backlog-mcp-server"
                ],
                "env": {
                    "BACKLOG_DOMAIN": "xxxxxx.backlog.jp",
                    "BACKLOG_API_KEY": "XXXXXXXXXXXXXXXX"
                }
            }
        }
    },

最後に、MCPサーバーを起動しておきます。JSONの編集画面でもMCPサーバーの起動・停止・再起動できますが、コマンドパレットからも操作できます。

Ctrl+Shift+Pでコマンドパレットを開き、「MCP: List Server」を選択します。MCPサーバーの一覧が出てくるので、「backlog」を選び、「サーバーの起動」を選択します。

実際に使ってみる

バックログで、私が検証などに使っていた個人プロジェクトをのぞいてみると「てst」と名前のついた課題が大量にありました。課題の自動生成スクリプトを検証していたとき、バグで大量に作成してしまった課題です。

試しにGitHub Copilot Chatでこの課題を削除してみてもらいます。

まず、VSCodeで、GitHub Copilot Chatの画面を開きます。

このままだと通常の質問モードなので、「Ask」になっている箇所をクリックして「Agent」を選択してエージェントモードにします。

エージェントモードになると、左下のアイコンボタンが変わります。
レンチのアイコン(ツールを選択する)をクリックすると、利用できるMCPサーバーのツールが表示・選択できます。

「MCPサーバー: backlog」が表示されているので、これでOKです。それでは、さっそくこんな感じのプロンプトを入力してみます。

backlogのプロジェクト E2_KONI に「てst」という不要な課題を誤って大量に作ってしまいました。MCPを使って、まとめてクローズしてください

MCPサーバーを使ってもいい?みたいな確認が出るので「続行」をクリックします。「さらに表示」をクリックすると、MCPサーバーにどんなリクエストをするか、バックログにどんなAPIを送るか分かります。何度も出てくるので、面倒くさくなったら「このセッションで許可する」を選んでしまいます。

プロンプトを実行した一連の結果はこんな感じでした。

最初に get_project_list でプロジェクトIDを取得し、次に get_issues で課題の一覧を取得して、最後に update_issue を何回か繰り返して課題をクローズ(状態を完了に)するという操作をしてくれているようです。

get_issuesの中身を見ると、バックログのAPIで “てst” のキーワードで課題を検索している雰囲気を感じます。

ブラウザからバックログを確認すると「不要な課題のため…」とコメント付きで状態が完了になっています。

動的なループみたいな処理は難しいかと思ったのですが、このくらい単純なら問題ないようです。

実際のところは…

上の一連の流れではスムーズにできたように見えますが、実際にはいろいろつまずいたポイントがありました。

  • GitHubのMCPとは相性が悪い(おそらくツール名が重複している)ので、併用はできなさそう
  • 「バックログ」ではなく「backlog」と書いた方がいいかも
  • 同じプロンプトでも、権限不足でエラーになるAPIを叩いて失敗するなどがある

他にも、バックログではAPIキーに細かい権限設定ができず作成者と同じ権限になるなど、現時点ではいろいろ懸念事項・機能不足はありますが、もうちょっと色々整備されれば便利になりそうです。

また、今回はVSCodeでGitHub Copilot Chatを使う方法を試しましたが、私の実際の環境ではClaude Desktopも併用しています。Claude Desktopに設定したMCPをVSCodeでも参照する機能があるので、GitHub Copilot以外でもMCPを使いたい場合はその設定が便利だと思います。

最後に

今回はバックログのMCPサーバーを使う記事でしたが、MCPは他にもいろいろあります。E2EテストのPlaywrightのMCPサーバーを使うとブラウザ操作が可能ですし、GitHubのMCPサーバーを使うとGitHubでの操作も可能です。特に、PlaywrightのMCPはちょっと調べるといろいろな活用案がでてきます。

私も最初は「PlaywrightのMCPを使いブラウザでE2Eテストを実施して、そのスクリーンショットをバックログの課題に添付して結果を報告」までをGitHub Copilot Chatでできないかなと試してみたのですが、バックログのMCPがファイルのアップロードを実装していないためできませんでした。

とはいえ、バックログのMCPは実装が結構シンプルな様子なので、やろうと思えば添付ファイルの操作もできそうな雰囲気があります。手の空いたときにまた遊んでみたいですね

参考URL

Backlog MCP Server – README (日本語)
https://github.com/nulab/backlog-mcp-server/blob/main/README.ja.md

GitHub Cop 公式Doc
https://docs.github.com/ja/copilot/customizing-copilot/extending-copilot-chat-with-mcp

VSCode 公式Doc
https://code.visualstudio.com/docs/copilot/chat/mcp-servers

クラスメソッド – backlogの公式MCPサーバーでお知らせの一覧を取得する
https://dev.classmethod.jp/articles/using-backlog-official-mcp-server/

上部へスクロール