VSCode v1.101から可能になったGitHubリモートMCPサーバーに接続する
VSCode v1.101でリモートMCPサーバーへの認証付きのアクセスが可能になり、同時にGitHubのリモートMCPサーバーが公開された(public preview)
自分のVSCodeではもともとGitHubのローカルMCP + PATで認証していたので、この状態から試したらどうなるのかを実験してみた記録です
GitHubのMCPサーバーはREADMEのボタンからインストール可能なので、新しく追加されたRemote GitHub MCP Serverの方のインストールボタンを押す
するとVSCodeの方でこのようなダイアログが表示されるので、Install Serverを選択する
ローカルMCPのときに設定していた github
の設定がおそらく自動で書き換えられた。
VSCodeが認証を行うダイアログを表示してくるのでAllowを選択
するとブラウザの方でよく見るGitHubの認証画面が立ち上がる。
まずアカウント選択
次にSSOが必要なOrganizationの認証。
自分が所属している会社ではGitHub Enterpriseを利用していてSSOが必須なのでこの画面が出ましたが、そういうところに所属していない人は出ないかもしれない。
今回は会社とは関係のないプライベートなPCで試しているので、むしろ会社の情報は見られない方が良いから何も認証しないでContinueをクリック。
次はこれまたいつものよく見るパーミッションの確認画面。
結構色々なものを要求するな、という気はするけどVSCode + GitHub Copilotなので全面的に信用します。
ブラウザでの認証が完了すると、VSCodeのアカウント一覧のところに今回のMCP用の認証が追加された。
このあたりはまだよく分かっていないが、今回は一旦気にしない。
これで認証できているはずなので動作確認。
githubのmeのAPIを呼び出すだけのtoolだが、ちゃんとMCPを使って自分の名前を返してくれたので認証はちゃんとできてそう
改めてgithubのMCPサーバーのtool設定を確認すると、全てのtoolにチェックが付いていた。
MCPから利用できる機能を制限したい場合はここでチェックを外したり、これまたVSCode v1.101から追加されたtool setsやcustom chat modeなどでコントロールしてね、という方向なのだろうか?
このあたりはもうちょっと触ってみないと分からない。
ちなみにGitHubのローカルMCPであれば実は GITHUB_TOOLSETS="repos,issues,pull_requests,code_security"
というように環境変数で使用可能なツールを限定したり、--read-only
オプションで読み取りのツールのみに制限するという機能が存在した。
けどリモートMCPになったことで、おそらくそれらの機能は無くなってしまったと思われる。
というのも、settings.jsonのmcpを手動で書き換えようとした際にリモートMCPだとdevとheaderのキーしか受け付けないように見えるため。
ツール自体がローカルで動いていないから、envもコマンドオプションも渡せないのはそれはそう。
追記: 6/18:
READMEではなくdocs/にリモートサーバーの詳細なドキュメントがありました。https://github.com/github/github-mcp-server/blob/main/docs/remote-server.md
これによると GITHUB_TOOLSETS
相当のツールを限定する方法はAPIのURLか、あるいはヘッダーの X-MCP-Toolsets=<toolset>,<toolset>...
で実現するようです。
同様に--read-only相当の機能もAPIのURLか、あるいはヘッダーの X-MCP-Readonly=true
によって実現できるようです
追記: 6/18:
headerで機能制御できるのであればPATによる認証もいけるのでは?と思ってAuthrizationヘッダーを付けてみたらちゃんと認証できました。
ClineでリモートMCPサーバー + PATによる認証 + toolはissueとpull_requestに限定する場合はこういうjsonになります
"github": {
"url": "https://api.githubcopilot.com/mcp/",
"type": "streamableHttp",
"headers": {
"Authorization": "Bearer $YOUR_PAT",
"X-MCP-Toolsets": "issues,pull_requests"
}