VS Code 1.101 の MCP 関連のアップデートを試す
はじめに
VS Code 1.101 では MCP に関していくつかのアップデートがありました。その中から、新たにサポートされた MCP 機能(resources,prompts,sampling)、および、OAuth 2.0 を利用したリモート MCP サーバへのアクセスを試していきたいと思います。
すべての 1.101 のアップデート内容はこちらから確認できます。
アップデート内容の抜粋
「The Complete MCP Experience: Full Specification Support in VS Code」から今回検証する機能のアップデート内容を抜粋します。
5 月に導入した初期ツールとワークスペース認識に加え、認証、プロンプト、リソース、サンプリング機能もご利用いただけるようになりました。これらの追加機能により、MCP は個別のツールセットから、AI エージェント統合のための包括的な標準へと進化します。
ストリーミング可能な HTTP トランスポート(以前のバージョンで導入)と組み合わせることで、エンタープライズグレードのセキュリティを維持しながら、独立してスケーリング可能なリモート MCP サーバーを実現できます。GitHub MCP サーバーはこの進化を完璧に体現しています。VS Code の既存の GitHub 認証とアカウント管理機能を活用した適切な OAuth 統合を備えたリモートサーバーとして利用できるようになり、リポジトリへの安全な接続と課題追跡が可能になります。
リモート MCP サーバーへのOAuthを利用したアクセス確認
Remote GitHub MCP Serverの概要
2025 年 6 月 12 日にGithub MCP のリモート MCP サーバーが公表されましたので、今回はこちらを利用します。なお、リモート GitHub MCP サーバーでの認証には「OAuth 2.0」と「Personal Access Token (PATs)」を利用できますが、上記のリンク内では、OAuth 2.0 が推奨されていますので、今回の構成では OAuth を利用します。リモート GitHub MCP サーバーは、近日中に Proof Key for Code Exchange(PKCE、「ピクシー」と発音)にも対応予定とのことです。
Remote GitHub MCP Server の設定手順
- 「OAuth を使用するリモート MCP サーバーの構成」の手順に従い、VS Code に Github MCP サーバーを追加します。settings.json に以下の定義が追加されます。
"my-mcp-server-f60e358d": {
"url": "https://api.githubcopilot.com/mcp/"
}
-
Github への認証を促すポップアップが表示されるので、「許可」をクリックします。
-
ブラウザで Github の認証画面が表示されるので、アカウントを選択して続行します。
-
パーミッションの確認画面が表示されるので、内容を確認し、「Authorize Visual-Studio-Code」をクリックします。
-
パスワードを入力します。私の環境ではパスワードですが、Github アカウントの設定によっては SSO の認証画面が表示されることもあるかと思います。
-
「Visual Studio Code を開く」をクリックして、VS Code を開きます。
-
VS Code のアカウントをクリックすると、「信頼された MCP サーバーの管理」が追加されており、「信頼された MCP サーバーの管理」をクリックすると、先ほど追加した MCP サーバーが表示されていることが確認できます。
Tools,Resources,Prompts,Samplingの機能確認
Tools
Toolsとは LLM が MCP サーバー経由で実行できるアクションのことです。Tools については以前の VS Code のバージョンから利用可能でしたが、ここでは基本的な機能から確認するために、利用できるツールの一覧を確認してみます。Github Copilot Chat の画面から、「ツールの構成」をクリックします。
MCP サーバーで利用できるツールの一覧が確認できます。
試しに、自身の Github アカウント情報を取得する「get_me」というツールを利用してみます。
Chat で#{ツール名}
と入力することでツールを呼び出しすることができます。あるいは、「私のGithubユーザー情報を教えて
」というプロンプトを実行することで LLM が必要なツールを呼び出し、同様の回答を得ることもできます。VS Code での MCP サーバーの使い方の詳細はこちらをご覧ください。
「get_me」のツールを実行した際のリクエストを Fiddler というツールで確認してみると、以下の HTTP ヘッダが確認できました。Authorization: Bearer
でトークンを渡していることが分かります。
GET https://api.github.com/user HTTP/1.1
Host: api.github.com
Connection: keep-alive
accept: application/vnd.github+json
authorization: Bearer <token>
Resources
Resourcesとは、MCP サーバーからクライアントに公開されるデータを指します。公開されたデータは LLM との対話におけるコンテキスト(モデルが文章生成や質問応答を行う際に考慮する周辺情報)として利用できます。
Github Copilot Chat から、「コンテキストの追加」→「MCP リソース...」で利用できます。
利用可能なリソースの一覧が表示されるので、今回は「Repository Content」を使ってみます。
「Repository Content」は、特定のパスにあるリポジトリのコンテンツを取得します。
「Repository Content」をクリックすると、以下のパラメーターが要求されるので入力します。
- owner: リポジトリオーナー
- repo: リポジトリ名
- path: ファイル名またはディレクトリ(ここでは
test.py
を指定)
事前にtest.py
というファイルを作成しておきましたので、Chat にtest.py
がコンテキストとして追加されていることが確認できます。この状態で、「test.pyの内容を教えて
」のように追加されたコンテキストの内容を LLM との対話に利用することができます。
Github MCP で利用可能な Tools および Resources については以下をご参照ください。
Prompts
Promptsとは、MCP サーバーがクライアントに対して公開できるプロンプトテンプレートのことです。テンプレートを利用することでユーザーは毎回詳細な指示を入力することなく、決まったタスクを効率的に実行できます。
Github MCP サーバーでは Prompts を提供していないので、ここでは、Everythingという MCP サーバーを利用します。Everything では、以下の Prompts を利用可能です。
- simple_prompt:引数無しの Prompt
- complex_prompt:引数ありの Prompt
- resource_prompt:リソース参照を含める Prompt
Chat から、/mcp.{MCPサーバー名}{プロンプト名}
で呼び出すことができます。
complex_prompt
を利用すると、ユーザーからの入力を Input として以下のプロンプトが生成されます。
--USER
This is a complex prompt with arguments: temperature=0.7, style=formal
--ASSISTANT
I understand. You've provided a complex prompt with temperature and style arguments. How would you like me to proceed?
Sampling
Samplingとは、MCP サーバーがクライアントに対して LLM の推論を要求する機能です。MCP サーバーがユーザーに追加情報を求める必要がある場合、あるいは、複雑な問題を解決するために LLM の推論が必要な場合などがケースとして想定されます。ただし、2025 年 6 月時点では Sampling を実装している MCP サーバーはほぼ無いので、具体的なユースケースやセキュリティ上の問題等は今後の議論を待ちたいと思います。
Everything では、sampleLLM
というツールで sampling 機能が実装されています。
「#sampleLLM 日本で最も高い山は
」というプロンプトを実行してみます。
まとめと今後の方針
MCP の基本機能に触れながら VS Code の新バージョンのアップデート内容を確認しました。今回は MCP の機能を触ってみるにとどまりましたが、AI エージェントや MCP の登場によって明らかとなっている、セキュリティの問題や脅威などについても OWASP 等で議論が進んでいる状況です。今後は、それらの議論もキャッチアップしつつ、発信していきたいと思います。