Claude Code に GitHub MCP をインストールする方法(リモート・ローカル)
Claude Code に GitHub MCP をインストールする方法。PAT で公式リモートサーバーに接続、または Docker の OAuth でローカル実行し、ツールセットと読み取り専用モードを選び、エラーを解決します。
結論
Claude Code に GitHub MCP をインストールするには、GitHub の個人アクセストークン(PAT)を作成し、claude mcp add --transport http github https://api.githubcopilot.com/mcp/ --header "Authorization: Bearer $GITHUB_PAT" を実行してから claude を起動し、/mcp で github にチェックマークが付いていることを確認します。これは GitHub 公式のホスト型サーバーへの接続なので、インストールや更新の手間はありません。
トークンを管理したくない場合は、Docker でローカルにサーバーを動かす方法もあります。初回利用時にブラウザで GitHub のログインが開き、トークンはメモリ上にのみ保持されます。どちらも github/github-mcp-server の公式 GitHub MCP サーバーを使います。
リモートかローカルか
| リモート(GitHub がホスト) | ローカル(Docker またはバイナリ) | |
|---|---|---|
| エンドポイント | https://api.githubcopilot.com/mcp/ | 自分のマシンで stdio として動作 |
| Claude Code での認証 | Authorization ヘッダーの PAT | 組み込みの OAuth ログインまたは PAT |
| Docker | 不要 | Docker またはリリース版バイナリ |
| 更新 | 自動 | イメージやバイナリを自分で更新 |
| 追加ツール | copilot_spaces などリモート専用のツールセット | コアのツールセット |
| ツールの選び方 | URL パスまたは X-MCP-* ヘッダー | GITHUB_TOOLSETS、--toolsets |
| GitHub Enterprise Server | 本記事では扱わない | ローカルサーバーで対応 |
ほとんどの人はリモートから始めるのがよいでしょう。長期間有効なトークンの代わりに OAuth を使いたい、GitHub Enterprise Server が必要、あるいは通信を自分のマシン内に留めたい場合はローカルを選びます。
前提条件
- Claude Code がインストール済みであること。GitHub 公式ガイドの推奨どおり、プロジェクトのディレクトリ内で起動すると設定の適用範囲が明確になります。
- リモートサーバーまたは PAT ベースのローカル設定には GitHub の個人アクセストークンが必要です。github.com/settings/personal-access-tokens/new で作成します。
- ローカルの Docker 方式には、インストール済みで起動中の Docker が必要です。
トークンを作成する
必要な権限だけを付与します。GitHub の README では、以下のクラシックスコープが基本として挙げられています。
| スコープ | 用途 |
|---|---|
repo | リポジトリ、Issue、Pull Request の操作 |
read:org | Organization とチームへのアクセス |
read:packages | Docker イメージへのアクセス |
Fine-grained トークンの場合は、対象のリポジトリと、有効にする予定のツールセットに合った権限を選びます。Organization によっては PAT が制限されていたり、承認が必要だったりします。プロジェクトごとに別のトークンを使い、定期的にローテーションし、絶対にコミットしないでください。
トークンがシェル履歴に残らないよう、環境変数か gitignore 済みの .env ファイルに入れておきます。
export GITHUB_PAT="your_token_here" # placeholder, not a real token
方法 1:リモートサーバー(推奨)
ステップ 1:サーバーを追加する
Claude Code の MCP ドキュメントにある書き方です。
claude mcp add --transport http github https://api.githubcopilot.com/mcp/ \
--header "Authorization: Bearer $GITHUB_PAT"
GitHub の Claude 向けインストールガイドでは、Claude Code 2.1.1 以降向けに add-json を使っています。
claude mcp add-json github \
'{"type":"http","url":"https://api.githubcopilot.com/mcp","headers":{"Authorization":"Bearer '"$GITHUB_PAT"'"}}'
どちらも保存される内容は同じです。Claude Code が読む前にシェルが $GITHUB_PAT を実際の値に置き換えるため、Claude Code の設定に保存されるのは変数名ではなくトークンそのものです。
ステップ 2:スコープを選ぶ
| スコープ | フラグ | 保存先 | 向いている場面 |
|---|---|---|---|
| local(デフォルト) | なし | ~/.claude.json、このプロジェクトのみ | 1 つのリポジトリを自分だけで使う |
| user | --scope user | ~/.claude.json、全プロジェクト | どこでも GitHub を使いたい(最も一般的) |
| project | --scope project | リポジトリの .mcp.json | チーム全員に配りたい |
project スコープでは、トークンを .mcp.json に貼り付けてはいけません。Claude Code はこのファイル内の環境変数を展開するので、次の内容をコミットし、各メンバーに自分で GITHUB_PAT を設定してもらいます。
{
"mcpServers": {
"github": {
"type": "http",
"url": "https://api.githubcopilot.com/mcp/",
"headers": {
"Authorization": "Bearer ${GITHUB_PAT}"
}
}
}
}
リモートサーバーで OAuth は使える?
GitHub の README によると、リモートサーバーで OAuth を使うには、各ホストアプリが GitHub App または OAuth App を登録している必要があり、リモートサーバーに対応するホストならどれでも PAT 認証が使えます。そのため GitHub の Claude 向けガイドは PAT を使っています。トークンの代わりにブラウザでログインしたい場合は、OAuth が組み込まれた次のローカルサーバーを使ってください。
方法 2:Docker でローカルサーバーを動かす
OAuth ログイン(トークン不要)
公式イメージには GitHub の OAuth アプリの認証情報が組み込まれているので、github.com なら何も用意する必要はありません。固定のコールバックポートをループバックに公開します。
claude mcp add github -e GITHUB_OAUTH_CALLBACK_PORT=8085 -- \
docker run -i --rm -p 127.0.0.1:8085:8085 \
-e GITHUB_OAUTH_CALLBACK_PORT ghcr.io/github/github-mcp-server
最初のツール呼び出しで、サーバーが GitHub の認可ページを開きます。トークンはメモリ上にのみ保持されるため、サーバーの再起動後は再度サインインが必要になります。
PAT を使う
PAT は OAuth より優先されます。
claude mcp add github -e GITHUB_PERSONAL_ACCESS_TOKEN=$GITHUB_PAT -- \
docker run -i --rm -e GITHUB_PERSONAL_ACCESS_TOKEN ghcr.io/github/github-mcp-server
-e が 2 回出てくる点に注意してください。1 回目は -- の前(Claude Code が変数を設定)、2 回目は docker run コマンドの中(Docker がコンテナに渡す)です。
Docker なし:リリース版バイナリ
リリースページからバイナリをダウンロードし、PATH に置きます。公式ビルドなら OAuth にフラグは不要で、ランダムなループバックポートが使われます。
claude mcp add github -- github-mcp-server stdio
GitHub のガイドにあるように PAT を使う場合はこちらです。
claude mcp add-json github \
'{"command":"github-mcp-server","args":["stdio"],"env":{"GITHUB_PERSONAL_ACCESS_TOKEN":"YOUR_GITHUB_PAT"}}'
ツールセット、読み取り専用、Lockdown
デフォルトでは context、repos、issues、pull_requests、users のツールセットが有効です。必要なものだけを有効にすると、Claude が正しいツールを選びやすくなり、コンテキストも小さく保てます。ほかにも actions、code_security、dependabot、discussions、gists、notifications、orgs、projects、labels などがあり、all ですべて有効になります。
| 設定 | リモートサーバー | ローカルサーバー |
|---|---|---|
| ツールセットを選ぶ | X-MCP-Toolsets: repos,issues ヘッダー、または https://api.githubcopilot.com/mcp/x/issues のようなツールセット URL | GITHUB_TOOLSETS="repos,issues" または --toolsets |
| 個別のツールを選ぶ | X-MCP-Tools ヘッダー | GITHUB_TOOLS または --tools |
| 読み取り専用 | X-MCP-Readonly: true、または URL の末尾に /readonly | GITHUB_READ_ONLY=1 または --read-only |
| Lockdown | X-MCP-Lockdown: true | GITHUB_LOCKDOWN_MODE=1 または --lockdown-mode |
| 先行機能 | /insiders の URL または X-MCP-Insiders: true | GITHUB_INSIDERS=true または --insiders |
repos、issues、pull requests に限定した読み取り専用のリモート設定を .mcp.json に書くと次のようになります。
{
"mcpServers": {
"github": {
"type": "http",
"url": "https://api.githubcopilot.com/mcp/",
"headers": {
"Authorization": "Bearer ${GITHUB_PAT}",
"X-MCP-Toolsets": "repos,issues,pull_requests",
"X-MCP-Readonly": "true"
}
}
}
}
Lockdown モードは、公開リポジトリでプッシュ権限のない作者によるコンテンツを非表示にします。信頼できない Issue やコメントからのプロンプトインジェクションに対するベストエフォートのフィルターであり、セキュリティ境界ではありませんが、Claude に公開リポジトリを読ませるならオンにする価値があります。MCP セキュリティのベストプラクティスも参照してください。
接続を確認する
claude mcp list
claude mcp get github
セッション内では、/mcp で github にチェックマークが表示されるはずです。claude mcp add は認証情報を検証しないため、誤ったトークンでも追加時には受け付けられ、ここで初めて失敗し、失敗の詳細に 401 が表示されます。
プロンプト例
- 「このリポジトリのオープンな Pull Request を一覧にして、それぞれの変更内容を要約して。」
- 「Issue 123 を読んで、該当するコードを見つけ、修正案を出して。」
- 「main の最新の GitHub Actions 実行はなぜ失敗した? 失敗したステップを見せて。」
- 「ブランチを作り、さっきの変更をコミットして、Issue 123 にリンクしたドラフト PR を開いて。」
- 「PR 45 をレビューして、リスクがありそうな箇所にコメントを残して。」
- 「このリポジトリに未対応の Dependabot やコードスキャンのアラートはある?」
最後の 2 つには、actions、dependabot、code_security のツールセットの有効化と、対応するトークン権限が必要です。
トラブルシューティング
| 症状 | 考えられる原因 | 対処法 |
|---|---|---|
/mcp で ✘ と 401 | トークンがない、期限切れ、または誤り | 新しい PAT を作成し、claude mcp remove github してから再追加 |
| 一部のリポジトリや Organization で 403 | トークンの権限不足、または Organization が PAT を制限 | スコープやリポジトリを追加し、Organization のオーナーに承認を依頼 |
add-json が Invalid input を返す(Windows) | 既知のクォートの問題 | claude mcp add --transport http の書き方を使う |
PowerShell で missing required argument 'name' | 引数の順序 | claude mcp add の直後に github を置く |
| Docker のサーバーが起動しない | Docker が起動していない、またはイメージ未取得 | Docker Desktop を起動し、docker pull ghcr.io/github/github-mcp-server を実行 |
| 期待したツールが見当たらない | ツールセットが無効、または読み取り専用がオン | ヘッダー、URL、GITHUB_TOOLSETS でツールセットを追加 |
| 大きな差分で出力サイズの警告 | ツールの出力が長すぎる | 1 ファイルずつ依頼するか、MAX_MCP_OUTPUT_TOKENS を引き上げる |
すでに gh CLI を使っていますか? Claude Code はシェル経由でそれを呼び出せるため、多くの作業は MCP なしでもこなせます。シェルを自由に使わせる代わりに、構造化されたツール、ツールセットの制限、読み取り専用モード、Lockdown が欲しいときにこそ MCP サーバーが役立ちます。
次のステップ
GitHub を接続したら、そこに仕事を流し込むサーバーを追加しましょう。PR を開く前にブラウザで修正を確認する Playwright MCP や、データベースの変更を扱う Supabase MCP がおすすめです。ほかの開発ツールは MCP サーバーディレクトリで探せます。スコープ、OAuth、サーバー管理については Claude Code MCP ガイドをご覧ください。
よくある質問
GitHub MCP サーバーを Claude Code に追加するには?
- GitHub の個人アクセストークンを作成し、トークンを含む 'Authorization: Bearer' の値を付けて 'claude mcp add --transport http github https://api.githubcopilot.com/mcp/ --header' を実行します。Claude Code を起動し、/mcp で github にチェックマークが付いているか確認します。
個人アクセストークンなしで Claude Code から GitHub MCP サーバーを使える?
- はい、Docker かリリース版バイナリでローカルサーバーを動かします。公式ビルドには OAuth が組み込まれており、初回利用時にブラウザで GitHub のログインが開き、トークンはメモリ上にのみ保持されます。
GitHub MCP サーバーに必要なトークンのスコープは?
- GitHub は、リポジトリ・Issue・PR の操作に repo、Organization へのアクセスに read:org、イメージに read:packages を挙げています。有効にするツールセットに必要な分だけを付与し、特定のリポジトリに限定した Fine-grained トークンを優先しましょう。
GitHub MCP サーバーを読み取り専用にするには?
- リモートサーバーでは値を true にした X-MCP-Readonly ヘッダーを送るか、URL の末尾に /readonly を付けます。ローカルサーバーでは GITHUB_READ_ONLY=1 を設定するか --read-only を渡します。