GitHub Remote MCP Serverは、GitHubが自社でホストしているGitHub MCPサーバーのリモート版です。接続先は https://api.githubcopilot.com/mcp/ の1つで、AIエージェントはここを通じてリポジトリの参照、Issue・Pull Requestの作成、GitHub Actionsの確認などを「ツール」として呼び出します。Dockerもバイナリも要りません。ただし、どのクライアントでもOAuthのワンクリックでつながるわけではなく、Claude DesktopやCursor、Claude CodeではPATをヘッダで渡すのが公式の手順です。この記事では、ローカル版との違い、クライアント別の接続設定、OAuthとPATの使い分け、そして2026年10月19日に実際に tools/list を送って数えたツール数をもとに、ツールセットと読み取り専用の設定を解説します。
まとめ:GitHub Remote MCP Serverの要点
- 正体:オープンソースの
github/github-mcp-serverをGitHubが自社基盤に組み込んで運用するMCPサーバー。2025年6月12日にパブリックプレビュー、2025年9月4日に一般提供(GA)。 - URL:
https://api.githubcopilot.com/mcp/。読み取り専用は末尾にreadonly、全ツールはx/all、単一ツールセットはx/{toolset}。 - ツール数(実測):既定46個(うち読み取り28個)、
/readonlyは28個、/x/allは95個。全部を渡さず絞るのが前提。 - 認証:VS Codeなど Copilot 対応IDEはOAuth。Claude Code・Codex・Cursor・Claude DesktopはPATを
Authorization: Bearerヘッダで渡す。 - ローカル版との違い:設置・更新が不要で、Copilot Spacesなどリモート専用のツールセットがある。GitHub Enterprise Serverではリモート版を使えないためローカル版を選ぶ。
- 料金:プランを問わず全GitHubユーザーが使える。Copilot cloud agentなど有料機能に対応するツールだけは同じライセンスが必要。
GitHub Remote MCP Serverの仕組み(GitHubホスト型MCPサーバー)
MCP(Model Context Protocol)は、AIアプリケーションと外部ツールをつなぐためのオープンな仕様です(仕様の全体像はMCP(Model Context Protocol)とは?AIと外部ツールをつなぐ標準規格の仕組みをわかりやすく解説で扱っています)。GitHub MCPサーバーは、このMCPの「サーバー側」としてGitHubの操作一式をツールとして公開します。
リモート版は、ローカル版と同じ公開リポジトリのコードを土台にしています。公式のリモートサーバーのドキュメントは、リモート版を「このリポジトリをライブラリとして使い、内部リポジトリでGitHubのサーバー基盤に組み込んだもの」と説明し、最新のコードを定期的に取り込むとしています。そのため、公開リポジトリの最新リリースとリモート版の挙動が一致しない時期がありえます。機能面の差は、リモート版にしかないツールセット(copilot_spaces と github_support_docs_search)です。
リポジトリ側は2026年10月6日にv2.0.0を出し、10月8日のv2.0.2が最新です(リリース一覧)。v2.0.0ではツールの構造化出力と出力スキーマに対応しましたが、このスキーマはMCP仕様 2026-07-28 以降への対応を申告したクライアントにだけ返します。古いクライアントで挙動が変わるわけではありません。仕様側の変更点はMCP仕様2026-07-28版とは:ステートレス化の変更点と2025-11-25版からの移行手順にまとめています。GitHub MCPサーバー全般(ツールセットの全体像やローカル版の導入)はGitHub MCPサーバーとは|できること・toolset・リモート/ローカルのセットアップを解説が受け持ち、本記事はリモート版に固有の論点に絞ります。
ローカルMCPとリモートMCPの違い
一般に「ローカルMCP」は、クライアントが自分のマシンでサーバーを子プロセスとして起動し、標準入出力(stdio)でやり取りする形です。「リモートMCP」は、ネットワーク上のサーバーにHTTP(Streamable HTTP)で接続する形で、URLを登録するだけで使えます。通信方式の詳細はStreamable HTTPとは?MCPのトランスポートとSSEの違い、2026-07-28仕様の変更点を参照してください。GitHub MCPサーバーの場合、両者の違いは次のとおりです。
| 観点 | ローカル版 | リモート版 |
|---|---|---|
| 動く場所 | 自分のマシン(Docker・バイナリ) | GitHubのクラウド |
| 通信 | stdio(httpモードも可) | Streamable HTTP |
| 認証 | OAuthログイン(stdio)またはPAT | OAuth(対応ホストのみ)またはPAT |
| 更新 | イメージ・バイナリを自分で更新 | GitHubが随時反映 |
| GitHub Enterprise Server | 使える | 使えない |
| リモート専用ツールセット | なし | copilot_spaces 等2種 |
以前は「ローカル版はPATの発行が必須」が定番の説明でしたが、2026年6月以降の公式手順ではローカル版(stdio)もOAuthログインが標準です。公式イメージにGitHubのOAuthアプリの情報が組み込まれており、初回にブラウザでログインするとトークンはメモリ上だけに保持されます(Local Server OAuth Login)。手間の差は「認証」よりも「Dockerやバイナリを置いて更新し続けるかどうか」に移っています。
ローカル版を選ぶべき場面
迷ったらリモート版で始め、次のどれかに当たるときだけローカル版にします。GitHub Enterprise Serverはリモート版のホスティング対象外なのでローカル版一択です(データレジデンシー付きのGitHub Enterprise Cloudは https://copilot-api.<サブドメイン>.ghe.com/mcp でリモート版を使えます)。社内のプロキシで api.githubcopilot.com への通信が許可されない環境、ツールの説明文や名前を差し替えたい場合もローカル版です。なお、ローカル版もGitHubのAPIを呼ぶので、オフライン環境で使えるわけではありません。
リモートサーバーのURLとクライアント別の接続手順
URLは https://api.githubcopilot.com/mcp/ です。認証なしでアクセスするとHTTP 401が返り、WWW-Authenticate ヘッダで認可サーバーの情報(resource_metadata)が案内されます。ブラウザで開いてもエラーになるのは正常です。
VS CodeのOAuth接続設定
VS Code 1.101以降なら、リモートMCPとOAuthの両方に対応しています。公式READMEのワンクリックボタンか、拡張機能ビューのMCPレジストリから追加し、Copilot Chatをエージェントモードに切り替えるとサーバーが起動します。手で書く場合の mcp.json は次のとおりです。
{
"servers": {
"github": {
"type": "http",
"url": "https://api.githubcopilot.com/mcp/"
}
}
}
Visual Studio・JetBrains IDE・Xcode・Eclipseも、GitHub Docsのセットアップ手順ではOAuthのワンクリックが既定で、PATも手動で設定できます。Enterprise Managed Userの場合、PATは管理者が有効にしない限り使えません。
Claude CodeのPAT認証設定
Claude Code向けの公式インストールガイドはPATをヘッダで渡す形です。Claude Code 2.1.1以降は add-json を使います。次の例はmacOS・Linuxのbashまたはzsh向けで、ターミナル(Claude Codeの中ではなく)で実行します。Windows PowerShellでは環境変数の設定とJSON文字列の引用方法が異なるため、公式ガイドのPowerShell例を使ってください。
export GITHUB_PAT="ghp_xxxxxxxx"
claude mcp add-json github '{"type":"http","url":"https://api.githubcopilot.com/mcp","headers":{"Authorization":"Bearer '"$GITHUB_PAT"'"}}'
claude mcp list
この書き方はPATの値そのものが設定に保存されます。--scope project で .mcp.json に書く場合は、リポジトリにトークンを含めないよう注意してください。公式ガイドも .env と .mcp.json を .gitignore に入れる手順を載せています。Windowsで add-json が Invalid input を返すときは、旧形式の claude mcp add --transport http github https://api.githubcopilot.com/mcp -H "Authorization: Bearer ..." を使います。
CodexとCursorの設定
OpenAIのCodexは ~/.codex/config.toml に、トークンを入れた環境変数の名前を書きます。公式ガイドは、ホスト型サーバーにPATで接続するには bearer_token_env_var が必須としています。
[mcp_servers.github]
url = "https://api.githubcopilot.com/mcp/"
bearer_token_env_var = "GITHUB_PAT_TOKEN"
Codexを起動するプロセスに、実際のPATを値とする環境変数 GITHUB_PAT_TOKEN を渡してください。設定ファイルに環境変数名を書くだけではトークンは設定されません。CLIでは同じシェルで環境変数を設定してからCodexを起動します。
Cursor(v0.48.0以降)は mcp.json の headers にPATを書きます。GitHubは2025年9月のGA発表でCursorもOAuth対応と告知しましたが、2026年6月に更新されたCursor向けの公式ガイドは「GitHubのサーバーは現状PATが必要」と書いています。確実に動くのはPATです。
{
"mcpServers": {
"github": {
"url": "https://api.githubcopilot.com/mcp/",
"headers": {
"Authorization": "Bearer YOUR_GITHUB_PAT"
}
}
}
}
Claude Desktopのmcp-remote経由のPAT認証設定
Claude Desktopの「カスタムコネクタ」からリモート版を追加する方法は、公式ガイドが非対応と明記しています。GitHubのリモートサーバーはOAuthに登録済みのGitHub App(またはOAuth App)を必要とし、Claude Desktopのコネクタ側はそれを用意していないためです。公式ガイドが勧めるのはローカル版(Docker)ですが、リモート版を使いたい場合は、stdioとHTTPを中継するNode.js製のプロキシ mcp-remote にPATを渡す方法があります。
{
"mcpServers": {
"github": {
"command": "npx",
"args": [
"-y",
"[email protected]",
"https://api.githubcopilot.com/mcp/readonly",
"--header",
"Authorization:${AUTH_HEADER}"
],
"env": {
"AUTH_HEADER": "Bearer YOUR_GITHUB_PAT"
}
}
}
}
Authorization:${AUTH_HEADER} のようにコロンの前後に空白を入れないのは、mcp-remoteのREADMEによると、Cursor・Codex CLI・Windows版Claude Desktopは args 内の空白をうまく扱えないためです。2026年10月19日に、この構成(mcp-remote 0.15.1・Node.js v26.5.0)をstdioで起動して initialize と tools/list を送ったところ、github-mcp-server から28個の読み取り専用ツールが返りました。旧来の解説にある「mcp-remoteを挟めば初回にブラウザでOAuth認証される」は、GitHubには当てはまりません。理由は次の章で説明します。Claude Desktop自体の設定ファイルの場所やMCP連携の全体はClaude Desktopとは?できること・料金・インストール・MCP連携を解説【2026年】で確認できます。
OAuthとPATの使い分け
OAuthを使えるクライアントならOAuthを選びます。GA時のGitHub Changelogは、OAuth 2.1+PKCEについて、トークンが短命で自動更新されるためPATより安全だと説明しています。PATを使うのは、OAuthに対応していないクライアントと、CIなどブラウザでの承認を挟めない自動化です。トークンの種類で、ツール一覧の見え方も変わります。
| 認証方式 | ツール一覧の見え方 | 権限が足りないとき |
|---|---|---|
| OAuth(リモート版) | 全ツールが見える | その場で追加スコープの承認を求める |
| classic PAT(ghp_) | スコープ不足のツールは非表示 | そもそも呼べない |
| fine-grained PAT(github_pat_) | 全ツールが見える | API呼び出し時にエラー |
| GitHub Appトークン(ghs_) | 全ツールが見える | アプリの権限でエラー |
classic PATで「必要なツールが出てこない」ときは、まずスコープ不足を疑います。サーバーは起動時に X-OAuth-Scopes ヘッダでトークンのスコープを調べ、足りないツールを隠すためです(PAT Scope Filtering)。ただし get_file_contents のように公開リポジトリで使える読み取りツールは、スコープが無くても表示されます。公式のガバナンス文書は、classic PATよりfine-grained PATを推奨しています。
OAuthでつながらないクライアントがある理由
MCP仕様2026-07-28は、クライアントIDの取得手段としてCIMD、事前登録、動的クライアント登録(DCR)を定めています。CIMDの対応を推奨し、DCRは後方互換性のために残す非推奨の方式です。2026年10月19日に確認したところ、リモートサーバーが案内する認可サーバーは https://github.com/login/oauth で、そのメタデータにはDCR用のエンドポイント(registration_endpoint)も、CIMDに対応する旨の項目(client_id_metadata_document_supported)もありませんでした。残る方式は事前登録だけなので、GitHubに登録済みのアプリを持たないクライアントはOAuthを始められません。公式READMEも「OAuthでリモート接続するには、ホストアプリ側がGitHub AppかOAuth Appを登録しておく必要がある」と書いています。
そのため、Copilot対応IDEのようにGitHubがアプリを用意しているホストはOAuthでつながり、それ以外はPATになります。mcp-remote も事前登録したクライアント情報を --static-oauth-client-info で渡せば技術的にはOAuthを通せますが、自分でGitHub Appを作って管理することになるため、個人の利用ならPATで十分です。CIMDの仕組みと各社の対応状況はCIMD(Client ID Metadata Documents)とは?MCPでDCRに代わるOAuthクライアント登録の仕組みと実装【2026年10月】で解説しています。
ツールセットと読み取り専用モード:実測したツール数
ツール定義を一括でモデルに渡すクライアントでは、ツールが多いほどコンテキストを消費し、似た名前のツールから選び間違える余地も増えます。Claude CodeのMCP tool searchのように必要な定義だけを遅延読み込みする実装もありますが、渡すツールそのものを絞るほうが確実です。2026年10月19日、MCPプロトコルバージョン2025-06-18を指定し、GitHub CLIのOAuthトークン(スコープ:repo・read:org・gist・project)でリモートサーバーに tools/list を送り、URLとヘッダごとに返ったツール数を数えました。
| 接続先・ヘッダ | ツール数 | うち読み取り |
|---|---|---|
| /mcp/(既定) | 46 | 28 |
| /mcp/readonly | 28 | 28 |
| /mcp/x/all | 95 | 63 |
| /mcp/x/all/readonly | 63 | 63 |
| /mcp/x/repos | 19 | 13 |
| /mcp/x/actions | 4 | 3 |
| X-MCP-Toolsets: repos,issues+Readonly | 19 | 19 |
| X-MCP-Tools: 2個指定 | 2 | 2 |
「読み取り」はツールの readOnlyHint 注釈で数えています。既定(context・repos・issues・pull_requests・users)でも46個あり、x/all にすると約2.1倍の95個になります。読み取り専用にすると、ファイルの作成・削除、PRのマージ、ブランチ作成など書き込み系の18個が消えます。数はアカウントの権限やライセンスで変わり、今回のアカウントでは、READMEがリモート専用として載せる create_pull_request_with_copilot は x/all にも出ませんでした(公式は、Copilot cloud agentを使うツールには有料のCopilotライセンスが必要としています)。
URLパスとヘッダの使い分け
URLパスで指定できるツールセットは1つだけです。/x/issues/readonly のように読み取り専用と組み合わせられますが、カンマ区切りで複数は書けません。複数を組み合わせるときはヘッダを使います。
{
"type": "http",
"url": "https://api.githubcopilot.com/mcp/",
"headers": {
"X-MCP-Toolsets": "repos,issues,actions",
"X-MCP-Readonly": "true",
"X-MCP-Exclude-Tools": "delete_file"
}
}
ヘッダは5種類が公式に載っています。X-MCP-Toolsets(ツールセット)、X-MCP-Tools(ツール単位)、X-MCP-Readonly(読み取り専用)、X-MCP-Lockdown(ロックダウン)、X-MCP-Insiders(先行機能)です。これに加えて X-MCP-Exclude-Tools で特定のツールを外せます。既定の接続で merge_pull_request,delete_file,push_files を外すと、46個が43個になりました。PRのマージだけ人の手に残したい、といった使い方ができます。
ツールセット名・ツール名の指定ミスとエラー挙動
設定を書き間違えたときの挙動が、ツールセットとツール単位で違います。存在しないツールセット名を X-MCP-Toolsets に書くと、エラーにならずツールが0個の状態でつながりました。ドキュメントも「未知のツールセットは黙って無視する」としており、画面上は「接続できたのにツールが無い」状態になります。一方、存在しないツール名を X-MCP-Tools に書くと、initialize の時点でHTTP 400(unknown tools specified in WithTools)が返り、接続自体が失敗します。ツール名は公式READMEの一覧と照合してください。
組織で使うときの管理設定とロックダウンモード
Copilot BusinessまたはCopilot Enterpriseを契約している組織のメンバーは、組織かエンタープライズで「MCP servers in Copilot」ポリシーが有効でないと、Copilot経由でMCPを使えません。GitHub Docsによると、このポリシーは既定で無効です。一方、Copilot Free・Pro・Pro+・Maxの個人利用はこのポリシーの対象外です。Claude CodeやCursorなどサードパーティのホストはこのポリシーでは止まらず、OAuth Appのアクセス制限、GitHub Appのインストール、PATのポリシーで管理します。公式のガバナンス文書は「すべてのMCP通信を1つのスイッチで止める設定は無い」と明記しているので、組織で止めたい場合は、これらを組み合わせて塞ぐ必要があります。
公開リポジトリを扱うエージェントには、ロックダウンモード(X-MCP-Lockdown: true)を検討します。Issueやコメントの作者がそのリポジトリにpush権限を持たない場合、その内容をツールの応答から外すか、エラーにする機能です。第三者がIssueに仕込んだ指示(プロンプトインジェクション)をエージェントに読ませないための対策ですが、公式は「ベストエフォートのフィルタで、セキュリティ境界ではない」と断っています。トークンが読める範囲は変わらないので、書き込み権限の最小化と併用します。エージェントを外部入力で乗っ取る攻撃の実例はAgentjackingとは?偽のSentryエラーでAIコーディングエージェントを乗っ取る攻撃と防御設定が参考になります。なお、公開リポジトリへのツール呼び出しには、秘密情報の混入を止めるプッシュ保護が自動で効きます。
社内のリポジトリやチケットとエージェントを安全につなぐ権限設計まで含めて検討する場合は、AIエージェント開発の支援内容も参考にしてください。
つながらない・ツールが出ないときの確認手順
クライアントの画面だけでは原因が切り分けにくいので、ターミナルから順に確かめます。
# 1. トークンがリモートサーバーに通るか(200なら認証は通っている。401はトークンの誤り・失効)
curl -s -o /dev/null -w "%{http_code}\n" \
-H "Authorization: Bearer $GITHUB_PAT" https://api.githubcopilot.com/mcp/_ping
# 2. classic PATのスコープを確認(足りないスコープのツールは一覧に出ない)
curl -sI -H "Authorization: Bearer $GITHUB_PAT" https://api.github.com/user | grep -i x-oauth-scopes
- _pingが401:トークンの貼り間違い、期限切れ、
Bearerの付け忘れ。fine-grained PATが組織の承認待ちの場合は401にはならず、その組織の非公開リソースだけが読めない状態になります。 - つながるがツールが0個:
X-MCP-Toolsetsのつづりの誤り。未知のツールセットは黙って無視されます。 - HTTP 400で接続できない:
X-MCP-Toolsに存在しないツール名がある。 - 特定のツールだけ出ない:classic PATのスコープ不足。fine-grained PATなら一覧には出て、実行時にエラーになります。
- VS CodeでOAuthの画面が出ない:VS Codeが1.101未満、または組織の「MCP servers in Copilot」ポリシーが無効。
よくある質問
GitHub Remote MCP Serverは無料で使えますか?
使えます。GitHub Docsは、GitHub MCPサーバーはプランを問わず全ユーザーが利用できると説明しています。ただし、Copilot cloud agentを呼ぶツールなど、有料のGitHub機能やCopilot機能に対応するツールは、その機能と同じライセンスが必要です。
リモートサーバーのURLは何ですか?
https://api.githubcopilot.com/mcp/ です。読み取り専用は /mcp/readonly、全ツールは /mcp/x/all、Issueだけなら /mcp/x/issues のようにパスを足します。データレジデンシー付きのGitHub Enterprise Cloudは https://copilot-api.<サブドメイン>.ghe.com/mcp です。
GitHub MCPを読み取り専用(readonly)にするには?
リモート版はURLの末尾に readonly を付けるか、X-MCP-Readonly: true ヘッダを送ります。実測では既定の46個が28個になり、ファイルの書き込みやPRのマージなどのツールが一覧から消えました。ローカル版は --read-only フラグか環境変数 GITHUB_READ_ONLY=1 です。
Claude DesktopからリモートのGitHub MCPに接続できますか?
カスタムコネクタからは接続できません。GitHubのOAuthに登録済みのアプリが必要なためです。mcp-remote を npx で起動し、--header でPATを渡せば接続できます。公式ガイドが勧めているのはローカル版(Docker)です。
GitHub Enterprise Serverでリモート版は使えますか?
使えません。GitHub Enterprise Serverはリモート版のホスティング対象外なので、ローカル版を GITHUB_HOST などでサーバーに向けて使います。データレジデンシー付きのGitHub Enterprise Cloud(ghe.com)はリモート版を使えます。
関連記事
- GitHub MCPサーバーとは|できること・toolset・リモート/ローカルのセットアップを解説
- MCP(Model Context Protocol)とは?AIと外部ツールをつなぐ標準規格の仕組みをわかりやすく解説
- CIMD(Client ID Metadata Documents)とは?MCPでDCRに代わるOAuthクライアント登録の仕組みと実装【2026年10月】
- MCP仕様2026-07-28版とは:ステートレス化の変更点と2025-11-25版からの移行手順
- Docker MCP Gatewayとは|docker mcp gateway runでMCPサーバーを安全に集約する使い方【2026年版】