【解決済】自作MCPサーバーがGitHub Copilotで更新されない時の対処法
はじめに
こんにちは或いはこんばんは。Ryuzakiです。
皆さん自作のMCPサーバーってどれぐらい利用されておられますか?
自分は前回の記事でも触れましたが、最近はAIとのやり取りをより円滑にしたり、アウトプットの品質を高める目的でリンター検証やフォーマット実行などの特定の用途に特化したMCPサーバーを量産してたりしています。MCP使わないと、AIエージェントがJestコマンドを実行しただけで満足しちゃったり、リンターエラーは無視しちゃったりするんですよね…
TypeScriptを使ったMCPサーバーの作成方法に興味がある場合は、前回の記事をご参照ください。
ただ、GitHub Copilotで自作MCPサーバーを使ってると、ある問題に遭遇しました。今回はその問題と解消方法を紹介したいと思います。
自作MCPサーバーを利用する際に発生する問題
MCPサーバーを自作する場合は、AIエージェントの使い方を見て、各ツールを調整したり、ツールを拡充させたりすることがあると思います。
ただ、GitHub Copilotとやり取りをしながらチューニングしようとしても、GitHub Copilotが下記のような挙動をし、変更内容が全然取り込まれない問題に遭遇しました。
- 新しいツールを追加しても使ってもらえない
- 既存ツールの引数を変更したのに、古い引数の設定で呼び出している
- ツール名を変更したのに、古いツール名で呼び出している
最初は自分の実装に問題があるのかと思って、コードを何度も見直したり、設定ファイルを確認したりしていたのですが、原因は全然違うところにありました。
自作MCPサーバーの変更内容が取り込まれない原因
原因1:初回利用時のキャッシュ
GitHub Copilotに初めて利用するMCPサーバーを設定した際には、対象MCPサーバーが有するツールの情報がキャッシュされます。そのため、後からツールを追加したり、既存ツールの仕様を変更したりしても、キャッシュされた古い情報が参照され続けてしまいます。
原因2:MCPサーバーの継続起動
これが最も重要な原因でした。GitHub Copilotは各ツール呼び出しのたびにMCPサーバーの起動と停止を繰り返すのではなく、ツールを呼び出した後も一度起動したMCPサーバーをしばらく起動させ続けます。
そのため、古いバージョンのコードが動き続けてしまい、自作MCPサーバーのコードを修正してもその内容が反映されなかったわけです。
勝手にツールを呼び出すたびにMCPサーバーを新たに起動させていると思い込んでいたため、この仕組みに気付くまで意外と時間がかかってしまいました…
解消方法
この問題の解決方法は明確で、対象のMCPサーバーを再起動するだけです。
GitHub CopilotのUIに「MCPサーバーの再起動」のような明示的なボタンがないため、少しわかりにくいのですが、MCPサーバーの再起動操作自体はすごく簡単です。
手順1:コマンドパレット経由での再起動
-
コマンドパレットを開く
- Windows/Linux:
Ctrl + Shift + P
- macOS:
⌘ + Shift + P
- Windows/Linux:
-
「MCP: List Servers」を選択
コマンドパレットでMCP: List Serversを検索 -
更新対象のMCPサーバー名を選択
更新したいMCPサーバーを選択 -
「Restart Server」を選択
Restart Serverを選択してサーバーを再起動
手順2:設定ファイル経由での再起動
mcp.json
でMCPサーバーの情報を管理している場合は、より簡単に再起動できます。
- VS Codeで
mcp.json
ファイルを開く - 各サーバー名の上部に表示されている「Restart」ボタンをクリック
mcp.jsonファイル内のRestartボタンをクリック
これだけで対象のMCPサーバーが再起動され、最新の実装内容が反映されます。
おわりに
今回は、GitHub CopilotでMCPサーバーの更新が反映されない問題とその解決方法について紹介しました。
最初はなぜ更新が反映されないのか原因がわからず、実装を疑ったり設定を見直したりしていましたが、単純にサーバーの再起動が必要だったという話でした。MCPは比較的新しい技術のため、こういった運用面での知見はまだあまり多くないと思うので、同じような問題に遭遇した方の参考になれば幸いです。
MCPサーバーを活用することで、AIエージェントとの連携がより効率的になり、開発体験も大幅に向上します。今後も様々なMCPサーバーを作成して、より良い開発環境を構築していきたいと思います。
ここまでお読みいただき、ありがとうございました。
Discussion