概要
GitHub MCP Server (github/github-mcp-server) は、Model Context Protocol (MCP) を通じてAIアシスタントがGitHubプラットフォームに直接接続し、
リポジトリ・Issue・Pull Request等を自然言語で操作するための標準化されたツールインターフェースを提供するサーバである。
GitHubが公式に開発・提供しており、MITライセンスの下でGo言語で実装されている。
Claude Desktop、Claude Code、OpenCode、VS Code (v1.101以降)、Cursor、Windsurf等の主要なMCPクライアント環境で動作する。
デプロイメント方式は2種類あり、GitHubがホストするリモートサーバ (https://api.githubcopilot.com/mcp/) を利用する方式と、Dockerを使用してローカルで実行する方式がある。
リモートサーバ方式はOAuth認証に対応しており、Docker不要で利用できるため、HTTPトランスポートに対応したクライアントで推奨される。
主な特徴は以下の通りである。
- GitHubの公式MCP実装であり、リポジトリ・Issue・Pull Requestを自然言語で操作可能
- リモートサーバ方式とローカルDockerサーバ方式の2つのデプロイメント方式をサポート
- OAuth認証およびPersonal Access Token (PAT) 認証に対応
--toolsetsフラグによるツールグループの有効化・無効化が可能で、LLMのコンテキストサイズを削減できる。- GitHub Enterprise Serverにも対応
- Windows、MacOS、Linuxの主要なOSで動作
GitHub MCP Serverの機能
GitHub MCP Serverは、リポジトリ操作、Issue操作、Pull Request操作、ブランチ操作等のカテゴリで30以上のツールを提供する。
リポジトリ操作ツール
リポジトリの管理・操作に関するツールを以下に示す。
| ツール | 説明 |
|---|---|
| create_or_update_file | リポジトリ内のファイルを作成または更新する。 |
| push_files | 複数ファイルの変更をコミット・プッシュする。 |
| search_repositories | GitHubリポジトリを検索する。 |
| create_repository | 新規リポジトリを作成する。 |
| get_file_contents | ファイルやディレクトリの内容を取得する。 |
| fork_repository | リポジトリをフォークする。 |
| list_commits | リポジトリのコミット履歴を一覧表示する。 |
Issue操作ツール
Issueの作成・管理に関するツールを以下に示す。
| ツール | 説明 |
|---|---|
| create_issue | 新規Issueを作成する。 |
| list_issues | Issueを一覧表示・フィルタリングする。 |
| update_issue | Issueのタイトル・説明・状態を更新する。 |
| get_issue | Issueの詳細情報を取得する。 |
| add_issue_comment | Issueにコメントを追加する。 |
| search_issues | Issueを検索する。 |
Pull Request操作ツール
Pull Requestの作成・管理に関するツールを以下に示す。
| ツール | 説明 |
|---|---|
| create_pull_request | 新規Pull Requestを作成する。 |
| list_pull_requests | Pull Requestを一覧表示・フィルタリングする。 |
| merge_pull_request | Pull Requestをマージする。 |
| get_pull_request | Pull Requestの詳細情報を取得する。 |
| get_pull_request_diff | Pull Requestの差分を取得する。 |
| get_pull_request_reviews | Pull Requestのレビューを取得する。 |
| create_pull_request_review | Pull Requestにレビューを投稿する。 |
| update_pull_request | Pull Requestを更新する。 |
ブランチ操作ツール
ブランチの管理に関するツールを以下に示す。
| ツール | 説明 |
|---|---|
| create_branch | 新規ブランチを作成する。 |
| list_branches | リポジトリのブランチを一覧表示する。 |
| get_branch | ブランチの詳細情報を取得する。 |
その他のツール
コード検索、GitHub Actions、セキュリティ、通知等に関するツールを以下に示す。
| ツール | 説明 |
|---|---|
| search_code | GitHub上のコードを検索する |
| list_workflows | GitHub Actionsワークフローを一覧表示する |
| get_workflow_run | ワークフロー実行の詳細を取得する |
| list_workflow_runs | ワークフロー実行を一覧表示する |
| get_dependabot_alerts | Dependabotセキュリティアラートを取得する |
| list_notifications | 通知を一覧表示する |
| get_code_scanning_alerts | Code Scanningアラートを取得する |
ツールセット制御
--toolsets フラグまたは環境変数 GITHUB_TOOLSETS を使用することにより、機能グループの有効化・無効化が可能である。
これにより、LLMコンテキストサイズを削減できる。
下表に、利用可能なツールセットを示す。
| ツールセット | 説明 |
|---|---|
| repos | リポジトリ操作ツール |
| issues | Issue操作ツール |
| pull_requests | Pull Request操作ツール |
| code_security | Code Scanningおよびセキュリティ関連ツール |
| experiments | 実験的機能のツール |
| actions | GitHub Actionsワークフロー関連ツール |
| users | ユーザ情報関連ツール |
| notifications | 通知関連ツール |
| discussions | ディスカッション関連ツール |
ツールセットを指定する例を以下に示す。
--toolsets repos,issues,pull_requests
動作要件
共通の要件
OS問わず共通して必要な要件を以下に示す。
- GitHub Personal Access Token (PAT) またはOAuth認証
- GitHubのリポジトリやリソースにアクセスするための認証情報が必要
- HTTPトランスポートに対応したMCPクライアント (リモートサーバ方式の場合)
- Claude Code、OpenCode等のHTTPトランスポート対応クライアントで使用可能
リモートサーバ方式の要件
リモートサーバ方式を使用する場合の要件を以下に示す。
- Dockerのインストールは不要
- HTTPトランスポートに対応したMCPクライアント
- Claude Desktop はHTTP転送に非対応のため、リモートサーバ方式は使用できない。
ローカルサーバ方式の要件
ローカルDockerサーバ方式を使用する場合の要件を以下に示す。
- Dockerのインストールが必要
- Dockerデーモンが起動していることが必要
- GitHub Personal Access Token (PAT)
- OAuthによる自動認証は利用できないため、PATが必須
GitHub Personal Access Tokenの取得
取得手順
GitHub Personal Access Token (PAT) の取得手順を以下に示す。
- GitHubにログインする
- 右上のアカウントアイコンを選択して、[Settings]を開く。
- 左サイドバーの最下部にある[Developer settings]を選択する。
- [Personal access tokens] - [Tokens (classic)]を選択する。
- [Generate new token (classic)]を選択する。
- トークンに名前を付ける。
- 例: GitHub MCP Server
- 有効期限を設定する。
- 推奨: 90日または1年。無期限の設定は避ける。
- 必要なスコープを選択する。
- [Generate token]を選択する。
- 生成されたトークンをコピーして安全な場所に保存する。
生成されたトークンはページを離れた後に再度表示されないため、必ずコピーして保存すること。
推奨スコープ
下表に、GitHub MCP Serverで使用する際の推奨スコープを示す。
| スコープ | 説明 | 必須 |
|---|---|---|
repo |
リポジトリへのフルアクセス | はい |
workflow |
GitHub Actionsワークフロー操作 | いいえ (Actions使用時に必要) |
read:org |
組織情報の読み取り | いいえ |
read:discussion |
ディスカッションの読み取り | いいえ |
read:packages |
パッケージの読み取り | いいえ |
Fine-grained Personal Access Token (ファイングレインドPAT) も使用可能である。
ファイングレインドPATを使用することにより、必要最小限のリポジトリとスコープのみを付与できるため、セキュリティの点から推奨される。
設定
設定ファイルの場所
各MCPクライアントの設定ファイルの場所は以下の通りである。
Claude Desktopの設定ファイルを以下に示す。
- Linux
- ~/.config/Claude/claude_desktop_config.json
- MacOS
- ~/Library/Application Support/Claude/claude_desktop_config.json
- Windows
- %APPDATA%\Claude\claude_desktop_config.json
Claude Codeの設定ファイルを以下に示す。
- Linux
- ~/.config/claude/settings.json
- MacOS
- ~/Library/Application Support/claude/settings.json
- Windows
- %APPDATA%\claude\settings.json
OpenCodeの設定ファイルを以下に示す。
- Linux / MacOS / Windows (共通)
- $HOME/.opencode.json
Claude Desktopでの設定
Claude DesktopはHTTP転送をサポートしていないため、Dockerベースのローカルサーバセットアップが必須である。
Claude Desktopの設定ファイルに以下の内容を追記する。
{
"mcpServers": {
"github": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GITHUB_PERSONAL_ACCESS_TOKEN",
"ghcr.io/github/github-mcp-server"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "<GitHubのPersonal Access Token>"
}
}
}
}
特定のツールセットのみを有効化する場合は、args に "--toolsets" と使用するツールセット名を追加する。
{
"mcpServers": {
"github": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GITHUB_PERSONAL_ACCESS_TOKEN",
"ghcr.io/github/github-mcp-server",
"--toolsets",
"repos,issues,pull_requests"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "<GitHubのPersonal Access Token>"
}
}
}
}
設定ファイルを保存した後、Claude Desktopを完全に再起動して設定を反映する。
Claude Codeでの設定
Claude CodeはHTTPトランスポートをサポートしているため、リモートサーバの使用を推奨する。
リモートサーバ (推奨) を使用する場合は、以下のコマンドを実行する。
claude mcp add --transport http github https://api.githubcopilot.com/mcp/
ローカルDockerサーバを使用する場合は、以下のコマンドを実行する。
claude mcp add --transport stdio github -- docker run -i --rm -e <GITHUB_PERSONAL_ACCESS_TOKEN> ghcr.io/github/github-mcp-server
設定ファイルに直接記述する場合 (ローカルDockerサーバ) は、以下の内容を settings.json ファイルに追記する。
{
"mcpServers": {
"github": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GITHUB_PERSONAL_ACCESS_TOKEN",
"ghcr.io/github/github-mcp-server"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "<GitHubのPersonal Access Token>"
}
}
}
}
OpenCodeでの設定
OpenCodeはリモートMCPサーバをサポートしており、OAuthフローによる自動認証に対応している。
OpenCodeの設定ファイル (~/.opencode.json) に以下の内容を追記する。
{
"mcpServers": {
"github": {
"type": "remote",
"url": "https://api.githubcopilot.com/mcp/"
}
}
}
VS Codeでの設定
VS Code v1.101以降でGitHub MCP Serverを使用できる。
以下のコマンドを実行してMCPサーバを追加する。
code --add-mcp '{"name":"github","command":"docker","args":["run","-i","--rm","-e","GITHUB_PERSONAL_ACCESS_TOKEN","ghcr.io/github/github-mcp-server"],"env":{"GITHUB_PERSONAL_ACCESS_TOKEN":"<GitHubのPersonal Access Token>"}}'
環境変数
下表に、GitHub MCP Serverの動作をカスタマイズするための環境変数を示す。
| 環境変数 | 説明 |
|---|---|
GITHUB_PERSONAL_ACCESS_TOKEN |
GitHub Personal Access Token |
GITHUB_TOOLSETS |
有効化するツールセット (カンマ区切りで複数指定可能) |
GITHUB_HOST |
GitHub Enterprise Serverのホスト名 デフォルト: github.com |
GITHUB_MCP_TOOL_ADD_ISSUE_COMMENT_DESCRIPTION |
add_issue_comment ツールのカスタム説明文 |
使用方法
GitHub MCP Serverの各ツールは、AIアシスタントが自然言語の指示を受けて自動的に呼び出す。
リポジトリの操作例
リポジトリの閲覧・管理に関する操作例を以下に示す。
- リポジトリのディレクトリ構造を表示する場合
# プロンプト例 : リポジトリのディレクトリ構造を表示してください。
- README.mdファイルの内容を確認する場合
# プロンプト例 : README.mdファイルの内容を確認してください。
- 新しいリポジトリを作成する場合
# プロンプト例 : 「my-new-project」という名前の新しいリポジトリを作成してください。
Issueの操作例
Issueの作成・管理に関する操作例を以下に示す。
- オープン中のIssue一覧を表示する場合
# プロンプト例 : オープン中のIssue一覧を表示してください。
- バグを報告するIssueを作成する場合
# プロンプト例 : ログイン画面でパスワードのバリデーションが機能しないバグを報告するIssueを作成してください。
- Issueにコメントを追加する場合
# プロンプト例 : Issue #123に「対応中です。近日中に修正します。」というコメントを追加してください。
Pull Requestの操作例
Pull Requestの作成・管理に関する操作例を以下に示す。
- オープン中のPull Requestを一覧表示する場合
# プロンプト例 : オープン中のPull Requestを一覧表示してください。
- Pull Requestの差分を確認してレビューする場合
# プロンプト例 : PR #456の差分を確認して、コードの問題点をレビューしてください。
- Pull Requestを作成する場合
# プロンプト例 : feature/new-uiブランチからmainブランチへのPull Requestを作成してください。
コードレビューの操作例
コードの分析・レビューに関する操作例を以下に示す。
- Pull Requestのコード変更をレビューして改善点を提案する場合
# プロンプト例 : PR #789のコード変更をレビューして、改善点を提案してください。
- 最新のコミットメッセージを表示する場合
# プロンプト例 : mainブランチの最新10件のコミットメッセージを表示してください。
トラブルシューティング
共通の問題
下表に、OS問わず発生する可能性がある問題と対処法を示す。
| 問題 | 対処法 |
|---|---|
| 認証エラー (401) が発生する | PATが有効であり、必要なスコープを持っているか確認する。 |
| MCPサーバが表示されない | 設定ファイルのJSON構文を確認し、アプリケーションを完全に再起動する。 |
| 権限エラー (403) が発生する | PATのスコープが十分であることを確認する。 (リポジトリアクセスには repo スコープが必須)
|
| コンテキスト超過が発生する | ツールセットを制限して使用するツール数を削減する。 |
Docker関連の問題
下表に、Dockerを使用したローカルサーバ方式で発生する可能性がある問題と対処法を示す。
| 問題 | 対処法 |
|---|---|
| Dockerがインストールされていない | Dockerをインストールする。 リモートサーバ方式を使用する場合はDocker不要 |
| Dockerイメージのプルに失敗する | ネットワーク接続を確認する。 ghcr.ioへのアクセスが許可されているか確認する。 |
| コンテナの起動に失敗する | Dockerデーモンが起動しているか確認する。docker ps コマンドで確認する。
|
認証・権限の問題
下表に、認証および権限に関する問題と対処法を示す。
| 問題 | 対処法 |
|---|---|
| PATの有効期限が切れている | GitHubでPATを再生成する。 有効期限を適切に設定する。 |
| OAuth認証エラーが発生する | 一部クライアントではOAuth認証に問題がある場合がある。 PAT認証に切り替える。 |
| プライベートリポジトリにアクセスできない | PATに repo スコープが付与されているか確認する。
|
関連リソース
- 公式リポジトリ (github/github-mcp-server)
- GitHub Docs - GitHub MCP Serverの使い方
- Claude用インストールガイド
- GitHub Personal Access Tokenの管理