
GitHub MCP Serverの使い方——リモートかローカルか、ツールセットの絞り方、読み取り専用で始める
AIにGitHubを触らせたい。でも、何をどこまで触られるのかが分からないまま鍵を渡すのは怖い。
その両方を、同時に解決しているOSSがあります。
GitHub MCP Server。GitHubが自分で作って公開している、MCPのサーバーです。GitHubのリポジトリのREADMEの1行目は「The GitHub MCP Server connects AI tools directly to GitHub's platform」。AIの道具をGitHubに直接つなぐ。
この記事では、GitHub MCP Serverの使い方を、最初に決める1つ(リモートかローカルか)、入れる手順、触らせる範囲の絞り方、の順に並べます。根拠はREADMEと、同じリポジトリにあるClaude向けの導入ガイドだけです。確認日は2026年9月14日です。
GitHub MCP Serverとは——AIにリポジトリ・Issue・PRを読み書きさせる公式の窓口
前提を1つ。
MCPは、AIがツールを呼ぶための共通の口です。GitHub MCP Serverは、その口の向こうにGitHubを置く。READMEには、使い道としてリポジトリの閲覧と検索、IssueとPRの作成・更新、GitHub Actionsの実行状況の監視、コードスキャンやDependabotの結果の確認、Discussionsや通知の扱いが並んでいます。
つまり、AIに「このリポジトリのPRを見て、失敗したCIの原因を探して」と言える状態を作るものです。
僕が気に入っているのは、作っているのがGitHub自身だという点です。第三者が作った非公式の窓口と違って、GitHub側の変更に追従する責任が本人にある。
ここまで前提。ここから手順です。
ステップ1:リモートかローカルかを、先に決める
GitHub MCP Serverには、動かし方が2つあります。
1つ目、リモート。GitHubがホストしているサーバーに、URLでつなぐ。READMEには「hosted by GitHub and provides the easiest method」とあります。URLは https://api.githubcopilot.com/mcp/ で、認証はOAuthかGitHubのPersonal Access Token(PAT)。
2つ目、ローカル。自分のマシンでDockerか実行ファイルとして動かす。イメージは ghcr.io/github/github-mcp-server。github.com なら初回にブラウザでOAuthログインが開き、トークンはメモリにだけ保持される。PATを使うなら GITHUB_PERSONAL_ACCESS_TOKEN で渡す。
どっちがいいの?
迷うなら、リモートです。Dockerを入れなくていいし、設定はURLを1行書くだけ。READMEも、リモートに対応していないホストのときにローカルを使え、という順番で書いています。
ローカルを選ぶのは、GitHub Enterprise Serverのようにリモートが使えない環境か、通信を自分の管理下に置きたいときです。

ステップ2:Claude Codeに入れる——1行と、再起動と、listで確認
僕が使っているClaude Codeでの入れ方を、公式の導入ガイドどおりに書きます。
前提は3つ。Claude Codeが入っていること、GitHubのPATを作ってあること、そして「プロジェクトのディレクトリの中でClaude Codeを開く」こと。ガイドが推奨として書いています。
リモートなら、ターミナルで次の1行です(Claude Code 2.1.1以降)。
claude mcp add-json github '{"type":"http","url":"https://api.githubcopilot.com/mcp","headers":{"Authorization":"Bearer YOUR_GITHUB_PAT"}}'
YOUR_GITHUB_PAT の部分に、自分のトークンを入れる。ガイドは、トークンを .env に置いて環境変数から読む形も載せています。
そのあと、Claude Codeを再起動する。最後に claude mcp list を打って、github が並んでいれば入っています。
スコープを指定したいときは、末尾に --scope を足します。既定の local は、いまのプロジェクトで自分だけ。project は .mcp.json に書かれてチームで共有。user は自分の全プロジェクト。
ローカル(Docker)で入れるなら、こちらです。
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で済ませたいなら、-e GITHUB_PERSONAL_ACCESS_TOKEN で渡す形もガイドにあります。

ステップ3:触らせる範囲を、ツールセットで絞る
入ったら、次は「何を触らせるか」です。ここを飛ばすと、AIにGitHubの全部を渡すことになります。
GitHub MCP Serverは、道具を「ツールセット」という束で管理しています。READMEによれば、何も指定しないときの default は context、repos、issues、pull_requests、users の5つ。Actionsやコードスキャン、Dependabot、Discussions、Gist、Projectsなどは、明示的に足したときだけ有効になります。
足し方は環境変数です。GITHUB_TOOLSETS="repos,issues,pull_requests,actions" のように並べる。既定を残して足すなら GITHUB_TOOLSETS="default,stargazers"。逆に、個別の道具だけを名指しするなら GITHUB_TOOLS="get_file_contents,issue_read,create_pull_request"。
いや、最初から全部にしておいた方が楽じゃない?
「all」という指定もあります。ただ、僕はおすすめしません。理由は次の節に書きますが、AIが呼べる道具が多いほど、意図しない操作の入口も増えるからです。最初は default のままで足りることがほとんどです。
読み取り専用で始める——READ_ONLYとLockdown
ここが、この記事でいちばん伝えたいところです。
GitHub MCP Serverには、読み取り専用モードがあります。実行ファイルなら --read-only、Dockerなら GITHUB_READ_ONLY=1。READMEには、読み取りの道具だけを提供し、リポジトリ・Issue・PRへの変更を防ぐ、とあります。
最初の1週間は、これで動かしてください。
AIに「このPRのレビューをして」「失敗したワークフローのログを読んで」と頼む分には、書き込みは要りません。読むだけで価値の大半が出る。書き込みが必要になった時点で、必要な道具だけを足す。この順番が、事故を一番減らします。
もう1つ、Lockdown Mode。--lockdown-mode か GITHUB_LOCKDOWN_MODE=1。
これは、公開リポジトリの中身で、書き込み権限(push access)を持たない人が書いた内容を、サーバーが表に出さないようにする仕組みです。READMEの説明は「best-effort content filter intended to reduce the risk of prompt injection」。Issueやコメントに仕込まれた「AIへの指示」を、AIが読んでしまうリスクを減らす。
ただし、READMEははっきり書いています。「not an authorization boundary」。これは権限の境界ではない。トークンが読めるものは、別の道具や直接のAPIからは読める。だから、Lockdownは「トークンのスコープを最小にする」の代わりにはなりません。
トークンについては、READMEのベストプラクティスに3つ。最小のスコープだけ許可する。トークンは環境変数か .env に置く。.env は .gitignore に入れる。

使う前に知っておく2つ——ホストごとの差と、消えないトークン
最後に、READMEの注意書きから2つだけ。
1つ目、ホストによって対応が違う。リモート版をOAuthで使うには、ホスト側がGitHub AppかOAuth Appの設定を持っている必要があります。PAT認証なら、リモートMCPに対応しているホストなら基本的に動く。詳しくはホストの側のドキュメントを見ろ、とREADMEにあります。VS Code、Claude Code、Codex、Cursor、Zedなど、ホスト別の導入ガイドが同じリポジトリに揃っています。
2つ目、環境変数の対応もホストによって違う。READMEには、Windsurfのように設定ファイルにトークンを直書きしないといけないホストもある、と書かれています。直書きするなら、その設定ファイルを絶対にリポジトリに入れない。
まとめ:GitHub MCP Serverの使い方は、リモートで入れて、絞って、読み取り専用から
まとめます。
GitHub MCP Serverは、GitHub自身が作ったMCPサーバー。AIにリポジトリ・Issue・PR・Actionsを読み書きさせる公式の窓口。
迷ったらリモート。Claude Codeなら claude mcp add-json の1行、再起動、claude mcp list。
触らせる範囲は GITHUB_TOOLSETS で絞る。既定は context・repos・issues・pull_requests・users の5つ。
最初は GITHUB_READ_ONLY=1 で読み取り専用。Lockdownは補助であって権限の境界ではない。トークンは最小スコープで .env に。
まず今日、読み取り専用で入れて、AIに「このリポジトリで一番古い未解決のIssueを教えて」と聞いてみてください。答えが返ってきたら、窓口は開いています。
▶ 関連記事: Apify MCP Serverの使い方——数千のスクレイパーをAIの道具にする前に決める2つ
▶ 関連記事: OpenWork の使い方——スキルとMCPを1箇所に置いて、どのAIからでも同じものを呼ぶ
OSS活用の型をまとめた6大特典は 👉 オープンソース研究所の6大特典を受け取る