Claude Media
GitHub MCPサーバーの使い方 — Claude CodeでのIssue・PR自動化

GitHub MCPサーバーの使い方 — Claude CodeでのIssue・PR自動化

GitHub MCPサーバーの導入手順をまとめます。リモート・ローカルの接続方法、有効にするtoolsetsの絞り方、read-onlyモードとlockdownモードの違い、つまずき対処まで扱います。

GitHub MCPサーバーは、GitHub自身が公開する公式MCPサーバーです。Issueやプルリクエストの読み書き、GitHub Actionsのログ確認、コードスキャンの結果参照までを、Claude Codeから自然文の指示で実行できます。Claude CodeはもともとghコマンドをBashツール経由で呼べますが、MCPサーバーはツール呼び出し単位で権限を絞れる点と、GitHub Actions・Dependabot・Secret Scanningのような構造化データを直接扱える点で役割が異なります。

以下では接続方法(リモート / ローカル)、有効にする機能範囲(toolsets)の絞り方、読み取り専用に固定するread-onlyモードまで確認します。MCPプロトコル自体の仕組みはMCPとは、権限ルールの一般的な書き方はMCPセキュリティガイドが対応します。

GitHub MCPサーバーとは

GitHub MCPサーバーとは、AIツールをGitHubのプラットフォームに直接接続する公式MCPサーバーです。リポジトリの閲覧・検索、Issue / PRの作成と管理、コミット履歴の分析、GitHub Actionsのワークフロー監視、Dependabotアラートやコードスキャン結果の確認といった操作を、ツール呼び出しとして提供します。

接続先は2種類あります。GitHubがホストするリモートサーバーと、Docker等でローカルに立てるサーバーです。リモートのほうが立ち上げが速く、認証もOAuthかPersonal Access Token(PAT)のどちらかで済みます。

Claude CodeにGitHub MCPを追加する

リモートサーバーを使う(推奨)

GitHubの個人アクセストークン設定で、対象リポジトリへのアクセス権を持つfine-grainedトークンを発行し、ヘッダー経由で渡します。

claude mcp add --transport http github https://api.githubcopilot.com/mcp/ \
  --header "Authorization: Bearer YOUR_GITHUB_PAT"

claude mcp addはトークンの有効性を検証せずに設定を保存するため、プレースホルダーの値でも追加自体は成功します。接続確認は/mcpを実行し、githubconnectedと表示されるかで判断します。認証情報が誤っているとfailedと表示され、失敗の詳細にGitHub側が返したHTTPステータス(401など)が含まれます。

ローカルサーバーを使う(Docker)

チームでの一元的なトークン管理を避けたい場合や、GitHub Enterprise Serverに接続する場合はローカルのDockerサーバーを使います。github.com向けであればOAuthログインが既定で、ブラウザーでの初回ログイン後はトークンをメモリ上にのみ保持します。

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

PATでの認証を優先したい場合はGITHUB_PERSONAL_ACCESS_TOKENを設定します(設定するとOAuthより優先されます)。

claude mcp add github -e GITHUB_PERSONAL_ACCESS_TOKEN=YOUR_GITHUB_PAT \
  -- docker run -i --rm -e GITHUB_PERSONAL_ACCESS_TOKEN ghcr.io/github/github-mcp-server

toolsetsで有効にする範囲を絞る

GitHub MCPサーバーが持つ機能は、toolsetsという単位でグループ化されています。何も指定しなければ、次の5つ(default)だけが有効になります。

既定で有効(default)内容
context内容現在のユーザー・GitHubコンテキストの取得(強く推奨)
repos内容リポジトリ関連の操作
issues内容Issue関連の操作
pull_requests内容プルリクエスト関連の操作
users内容ユーザー関連の操作

これ以外にも、actions(GitHub Actions・CI/CD)、code_security(コードスキャン)、dependabotdiscussionsgistsgitlabelsnotificationsorgsprojectssecret_protectionsecurity_advisoriesstargazerscode_qualityといったtoolsetsが用意されており、必要なものだけを追加で有効化できます。

ローカルサーバーではフラグまたは環境変数で指定します。

GITHUB_TOOLSETS="default,actions,code_security" ./github-mcp-server

リモートサーバーではHTTPヘッダーで指定します。claude mcp add-jsonでヘッダーを複数渡す形が確実です。

claude mcp add-json github '{"type":"http","url":"https://api.githubcopilot.com/mcp/","headers":{"Authorization":"Bearer YOUR_GITHUB_PAT","X-MCP-Toolsets":"default,actions,code_security"}}'

リモートサーバーにはローカルサーバーに無い追加のtoolsetsもあります。copilot(Copilot Coding Agent関連)、copilot_spacesgithub_support_docs_search(GitHubの製品・サポート文書を検索する)の3つで、いずれもGitHub Copilotのエコシステムと連携する機能です。ローカルのDocker版だけを使っている場合、これらのtoolsetsは選択肢に出てきません。

read-onlyモードとlockdownモードの違い

似た名前の2つの安全機構がありますが、目的が異なります。

モード何をするか位置付け
--read-only / GITHUB_READ_ONLY何をするか書き込み系ツールを一切登録しない。--toolsで明示指定しても書き込み系は無効化される位置付け最優先で効く。他のどの設定より強い
--lockdown-mode / GITHUB_LOCKDOWN_MODE何をするかコンテンツフィルターとして働く位置付け「ベストエフォートの内容フィルターであり、セキュリティ境界ではない」と公式ドキュメントが明記

read-onlyモードは、コードレビューや調査目的でGitHub MCPを使わせたいが、PRのマージやIssueのクローズまでは自動化したくない場合に有効です。

claude mcp add-json github '{"type":"http","url":"https://api.githubcopilot.com/mcp/","headers":{"Authorization":"Bearer YOUR_GITHUB_PAT","X-MCP-Readonly":"true"}}'

read-onlyモードは他のすべての設定に優先します。--toolsで書き込み系のツール名を明示的に指定していても、read-onlyが有効なら登録されません。一方lockdown modeはセキュリティ境界として設計されていないため、権限を確実に絞りたい場面ではread-onlyモードか、Claude Code側の権限ルール(mcp__github__*単位のdeny設定)を使う判断になります。

よくあるつまずき

Added ...と出たのに動かない

claude mcp addはトークンを検証しません。追加コマンドが成功しても、トークンが無効・権限不足なら実際の呼び出しで失敗します。/mcpでステータスがconnectedかを必ず確認します。

目的のツールが見当たらない

既定で有効なのはcontext repos issues pull_requests usersの5つだけです。GitHub Actionsやコードスキャンを扱いたい場合は、actionscode_securityをtoolsetsに明示的に足す必要があります。

書き込み操作が急に効かなくなった

read-onlyモードが有効になっていないか確認します。--toolsで個別ツールを指定していても、read-onlyが優先されるため書き込み系は無効のままです。

除外したはずのツールがまだ見える

--exclude-tools--toolsets--toolsより優先されます。除外リストに載っているツールは、toolsetで一括有効化していても常に除外されます。優先順位を勘違いしていると原因が分かりにくいので、意図通りに絞れないときはまず除外リストの中身を確認します。

よくある質問

GitHub MCPサーバーとネイティブなghコマンドの違いは何ですか

Claude CodeはBashツール経由でghコマンドを直接実行できますが、これはコマンド単位の権限になります。GitHub MCPサーバーはツール単位(mcp__github__create_pull_requestのように)で権限を管理できるため、「PRの作成だけ許可し、マージは常に確認させる」といった細かい制御がしやすくなります。

リモートとローカル、どちらを選ぶべきですか

個人利用や標準的なgithub.comの利用ならリモートが手軽です。GitHub Enterprise Serverに接続する場合、あるいは組織のポリシーでトークン管理を自前で行いたい場合はローカル(Docker)を選びます。

有効なtoolsetsは後から変更できますか

変更できます。リモートサーバーであればclaude mcp remove githubで一度削除し、X-MCP-Toolsetsヘッダーの値を変えてclaude mcp add-jsonし直します。ローカルサーバーであればGITHUB_TOOLSETS環境変数を書き換えて再起動します。

PATに必要な権限はどこまで絞れますか

fine-grainedトークンを使えば、対象リポジトリと権限スコープを個別に選べます。使うtoolsetsに対応する権限だけを付与し、それ以外は含めないのが安全です。読み取りしか使わないなら、書き込み系の権限は最初から付与しない運用が確実です。

--read-onlyと権限ルールのdenyはどちらを使うべきですか

用途が異なります。read-onlyモードはサーバー起動時点で書き込み系ツールの存在自体をなくす設計で、確実性が高い代わりに全体一括です。Claude Codeの権限ルールはmcp__github__create_pull_requestのようにツール単位で細かく制御できますが、サーバー側の設定を書き換えるわけではありません。細かい制御と確実な遮断を両方使い分けたいなら併用します。

まとめ

GitHub MCPサーバーの導入は、リモートならPATをヘッダーに渡す1コマンドで完結します。決めるべきはその先です。どのtoolsetsを有効にするか、書き込みまで許すかread-onlyに固定するか。既定の5toolsetsは最小構成なので、Actionsやコードスキャンを扱いたければ明示的に足す必要があります。read-onlyモードは他設定より優先される最も強い制約で、lockdown modeはセキュリティ境界ではないベストエフォートのフィルターです。この違いを取り違えると「絞ったつもり」で絞れていない事態になるため、確実に遮断したい操作にはread-onlyモードか権限ルールのdeny設定を使います。ほかのMCPサーバーの選び方はおすすめMCPサーバー10選も参考にしてください。

この記事を共有:XはてブLinkedIn