みこしば屋

GitHub Copilot CLIのMCPサーバー設定をリポジトリで管理する


はじめに

GitHub Copilot CLIを使用して開発を行う際、MCPサーバーの設定は通常、個々の開発者の環境に依存します。 しかし、チーム開発では「リポジトリ内で使用するMCPサーバーを統一したい」というニーズがあります。

この記事では、VSCode + WSL2 + DevContainers環境で、GitHub Copilot CLIのMCP設定をリポジトリに含める方法について解説します。

背景と課題

環境

  • VSCode
  • WSL2 + DevContainers

なぜMCP設定をリポジトリに含めたいのか

プロジェクトの特性によって必要なMCPサーバーは異なります。 例えば、WEBアプリ開発では Chrome DevTools MCP があると便利だったりしますが、そうでないプロジェクトでは不要です。 一方で、Serenaのようなコード解析ツールはすべてのリポジトリで使いたいという場合もあります。

現状では、READMEの開発環境構築セクションに「このMCPサーバーをインストールしてください」と手順を記載する必要があります。 これでは各開発者が手動でインストールするため、バージョンの違いが生じたり、面倒で導入しない人が出てきたりします。 結果として、チーム内で開発環境の差異が生まれがちです。

Claude Codeでは .mcp.json ファイルを配置することでMCP設定を読み込めますし、 Cloude Code Plugin という仕組みでプラグインのストアリポジトリを作って共有したりできます。

どちらも GitHub Copilot にも欲しすぎて悶えるのですが… 現在の GitHub Copilot CLI では工夫して対応する必要があります。

課題

GitHub Copilot CLIでは、/mcp addコマンドで設定を追加すると、デフォルトで~/.copilotディレクトリに設定が保存されます。 そして、GitHub Copilot CLIはこのホームディレクトリ配下の設定を参照して動作します。

つまり、MCP設定はリポジトリの外側で、ユーザー個人の設定という立ち位置になっています。

解決方法

1. MCP設定ファイルをリポジトリに配置

まず、プロジェクトのルートディレクトリに.copilot/mcp-config.jsonを配置します。 ここでは例としてSerenaの設定を記述します。

.copilot/mcp-config.json
{
  "mcpServers": {
    "serena": {
      "type": "local",
      "command": "uvx",
      "tools": ["*"],
      "args": [
        "--from",
        "git+https://github.com/oraios/serena",
        "serena",
        "start-mcp-server",
        "--context",
        "ide-assistant"
      ],
      "env": {}
    }
  }
}

2. .gitignoreで不要なファイルを除外

.copilotディレクトリにはlogsconfig.jsonなど、個人環境固有のファイルが生成されます。 MCP設定ファイルだけをコミットすべきなので、.gitignoreで除外します。

.gitignore
+ .copilot/logs/
+ .copilot/config.json

3. DevContainersでGitHub Copilot CLIの設定ディレクトリを変更

DevContainersの postCreateCommandpostCreateCommand.sh を実行するようにし、 その中で GitHub Copilot CLI のエイリアスを設定し、copilot 実行時のみ XDG_CONFIG_HOME がプロジェクトルートを参照するようにします。 以下は zsh の例です。

postCreateCommand.sh
+ COPILOT_ALIAS='alias copilot="XDG_CONFIG_HOME=/workspaces/your-repo copilot"'
+ if ! grep -q 'alias copilot=' ~/.zshrc; then
+   echo "$COPILOT_ALIAS" >> ~/.zshrc
+ fi

4. 動作確認

DevContainerをリビルドして、GitHub Copilot CLIを起動します。 /mcp showコマンドで、以下のようにSerenaが読み込まれていることが確認できますね。

● MCP Server Configuration:

  • serena (local): Command: uvx

  Total servers: 1
  Config file: /workspaces/your-repo/.copilot/mcp-config.json

Config fileのパスがリポジトリ内の .copilot/mcp-config.json を指しています。

まとめ

これでClaude Codeの .mcp.json と同様のレベル感でMCPサーバーを扱えるようになりました。

Awesome Copilotを見て分かる通り、MCPサーバー設定はあくまで個人の設定で、という思想なのでしょうか。 MCP設定も同じようなストラクチャに移行されて、この記事の意味がなくなってくれたらいいなと思います。

リンク

こちらの記事はQiitaにも掲載しています。