🍣

【uv】GitHub CopilotのMCPをクリーンなPython仮想環境で動かす

に公開

初めに

MCP(Model Context Protocol)という単語を聞いて、そろそろ勉強しようと思いました。

ということで、Claude Proに課金した勢いで、Claude Desktop経由でGmailか何かのコネクタを使っていろいろ整理させようとしたところ、トークンを大量に使って制限にひっかかる事態になりました。
そもそもClaude Desktopを使った理由は、本家でドキュメントが充実していると考えたからですが、MCPの特性上、どのプラットフォームでも設定はほぼ同じだと分かりました。
MCPのテストをするのにClaude Desktopを使う必要はないと考え、私の課金している環境でトークンをある程度自由に使えて、失敗しても問題ないものがあるかを確認しました。
その中でも、GitHub Copilotの通常のモデルだとトークンを気にせずに使えそうだったので、GitHub Copilot + Visual Studio Code経由で使えるようにします。

筆者の環境について

  • Windows 11 Home
  • Python
    • パッケージ管理・仮想環境管理: uv
  • (この記事では uv を使いますが、venvconda など他のツールでも同様に設定可能です)
  • Visual Studio Code
    • 2024年5月以降のバージョン

デフォルトで入っているmcp-server-timeを動かすまで

https://docs.github.com/ja/copilot/how-tos/agents/copilot-coding-agent/extending-copilot-coding-agent-with-mcp

公式のドキュメントがどこにあるかわからなかったのですがそれっぽいものを添付。
これを見てもわからなかったので、手順をまとめます

  1. Visual Studio Codeの更新。とりあえず最新にしておきましょう。

  2. 拡張機能のGitHub Copilotが最新か確認しましょう

  3. Ctrl + P でコマンドパレットを開き、> MCP で「MCP:ユーザー構成」を選択

    image.png

  4. デフォルトが下記になっているか確認する

    ```json
    {
      "servers": {
        "mcp-server-time": {
          "command": "python",
          "args": [
            "-m",
            "mcp_server_time",
            "--local-timezone=America/Los_Angeles"
          ],
          "env": {},
          "type": "stdio"
        }
      },
      "inputs": []
    }
    ```

image.png

仮想環境のPythonで動かす

このまま動かそうとすると以下のことが起きます

  • グローバル環境のPythonが実行される
  • グローバル環境にパッケージを追加して実行する必要がある

特に1はかなりの深刻な問題で、Windows 11では「python」と打つとMicrosoft Storeが開く仕様があります。 これいるのか。。。? ぶっちゃけOS側から管理されたくありません。

windows11のおせっかいを削除するための記事。私もこれを見て削除しました
https://zenn.dev/ef/articles/fede252753800b12f42b

ついでにいうと、グローバルにパッケージを追加するのは避けるべきなので、基本的に仮想環境でPythonを動かしたいはずです。

(これを書くときに、そもそもpipをグローバルで使えなくするという目からうろこなことを見つけたので共有)

https://zenn.dev/mtkn1/scraps/c380b8a94be3c9

https://zenn.dev/os1ma/articles/935f6e653f1052

なので、実行する環境をuv経由で作った仮想環境で実行するようにしましょう。

  1. 下記コマンドを実行して仮想環境を作成する

    cd ~ 
    uv venv .mcp-vscode-copilot --python 3.12
    
    
  2. mcp-server-timeを作成した仮想環境にインストールする

    .mcp-vs-code-copilot\Scripts\activate
    uv pip install mcp-server-time
    

    image.png

  3. Pythonのパスを確認する
    1.

    uv run python -c "import sys; print(sys.executable)"
    

    image.png

    この場合は C:\Users\[ユーザー名]\.mcp-vscode-copilot\Scripts\python.exe

  4. mcp.jsonのcommandの箇所を上記のPythonのパスに書き換えて起動する

    :::alert
    command に指定するパスは、ご自身の環境のユーザー名に合わせて修正してください。
    例: C:/Users/[ユーザー名]/.mcp-vscode-copilot/Scripts/python.exe
    :::

    {
      "servers": {
        "mcp-server-time": {
          "command": "C:/Users/yukid/.mcp-vscode-copilot/Scripts/python.exe", // ここをご自身の環境のパスに変更する
          "args": [
            "-m",
            "mcp_server_time",
            "--local-timezone=America/Los_Angeles"
          ],
          "env": {},
          "type": "stdio"
        }
      },
      "inputs": []
    }
    

    image.png

    1. ここまでの手順ができていればMCP Server(mcp-server-time)が起動します
    2. 出力タブにエラーが出ていなければOK

    image.png

  5. GitHub CopilotのAgent Modeに切り替えて、#mcp-server-timeを選択
    image.png

  6. MCP Server(mcp-server-time)に対して質問をする

    1. 入力の JSON と実行するコマンドが出るので、それを確認する
      1. get_current_time と timezone を渡していて問題なさそうなので実行する

    image.png

  7. 回答が返ってくることを確認する
    image.png

終わりに

この記事では、uv を使ってクリーンなPython仮想環境を構築し、GitHub CopilotのデフォルトMCP Server(mcp-server-time)を動かすまでの一連の手順を解説しました。
これで、GitHub Copilotを拡張するための、安全で独立した実験環境が手に入りました。

この記事が、AIコーディングアシスタントを拡張するというエキサイティングな世界への第一歩となれば幸いです。

Discussion