GitHub MCP Server について
GitHub MCP Serverは、リポジトリ、Issue、プルリクエストを扱うワークフロー向けに、GitHub APIの操作をMCPクライアントへ公開します。複数ファイルの変更と検索に対応し、ファイル操作時には必要なブランチを作成できます。
主な機能
- 01リポジトリファイルの作成・更新
- 02複数ファイルを1コミットで送信
- 03リポジトリ・コード・Issue・ユーザーの検索
- 04Issueとプルリクエストの管理
- 05不足するブランチの自動作成
- 06強制プッシュせずGit履歴を保持
活用シーン
- 01複数のリポジトリファイルをまとめてコミット
- 02コード・リポジトリ・GitHubユーザーを検索
- 03Issueの絞り込みと更新
- 04プルリクエストの確認・レビュー・マージ
MCP 対応
このMCPサーバーは、リポジトリ、ファイル、Issue、プルリクエスト、検索に関するGitHub API機能をツールとして提供します。READMEにはClaude DesktopでのDockerおよびnpxの設定例があります。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
GitHub MCP サーバー
重要:このプロジェクトはmodelcontextprotocol/servers/src/githubからのフォークです。
GitHub API 用の MCP サーバーです。ファイル操作、リポジトリ管理、検索機能などを利用できます。
機能
- ブランチの自動作成:ファイルの作成・更新や変更のプッシュ時に、ブランチが存在しない場合は自動的に作成します
- 包括的なエラー処理:よくある問題に対して明確なエラーメッセージを表示します
- Git 履歴の保持:強制プッシュを行わず、適切な Git 履歴を維持して操作します
- 一括操作:単一ファイルと複数ファイルの両方の操作に対応します
- 高度な検索:コード、イシュー/PR、ユーザーの検索に対応します
ツール
-
create_or_update_file- リポジトリ内の単一ファイルを作成または更新します
- 入力:
owner(string):リポジトリの所有者(ユーザー名または組織)repo(string):リポジトリ名path(string):ファイルを作成/更新するパスcontent(string):ファイルの内容message(string):コミットメッセージbranch(string):ファイルを作成/更新するブランチsha(optional string):置き換えるファイルの SHA(更新の場合)
- 戻り値:ファイルの内容とコミットの詳細
-
push_files- 複数のファイルを単一のコミットでプッシュします
- 入力:
owner(string):リポジトリの所有者repo(string):リポジトリ名branch(string):プッシュ先のブランチfiles(array):プッシュするファイル。各ファイルはpathとcontentを含みますmessage(string):コミットメッセージ
- 戻り値:更新されたブランチの参照
-
search_repositories- GitHub リポジトリを検索します
- 入力:
query(string):検索クエリpage(optional number):ページネーション用のページ番号perPage(optional number):1 ページあたりの結果数(最大 100)
- 戻り値:リポジトリの検索結果
-
create_repository- 新しい GitHub リポジトリを作成します
- 入力:
name(string):リポジトリ名description(optional string):リポジトリの説明private(optional boolean):リポジトリを非公開にするかどうかautoInit(optional boolean):README を作成して初期化するかどうか
- 戻り値:作成されたリポジトリの詳細
-
get_file_contents- ファイルまたはディレクトリの内容を取得します
- 入力:
owner(string):リポジトリの所有者repo(string):リポジトリ名path(string):ファイル/ディレクトリへのパスbranch(optional string):内容を取得するブランチ
- 戻り値:ファイル/ディレクトリの内容
-
create_issue- 新しいイシューを作成します
- 入力:
owner(string):リポジトリの所有者repo(string):リポジトリ名title(string):イシューのタイトルbody(optional string):イシューの説明assignees(optional string[]):割り当てるユーザー名labels(optional string[]):追加するラベルmilestone(optional number):マイルストーン番号
- 戻り値:作成されたイシューの詳細
-
create_pull_request- 新しいプルリクエストを作成します
- 入力:
owner(string):リポジトリの所有者repo(string):リポジトリ名title(string):PR のタイトルbody(optional string):PR の説明head(string):変更を含むブランチbase(string):マージ先のブランチdraft(optional boolean):ドラフト PR として作成するかどうかmaintainer_can_modify(optional boolean):メンテナーによる編集を許可するかどうか
- 戻り値:作成されたプルリクエストの詳細
-
fork_repository- リポジトリをフォークします
- 入力:
owner(string):リポジトリの所有者repo(string):リポジトリ名organization(optional string):フォーク先の組織
- 戻り値:フォークされたリポジトリの詳細
-
create_branch- 新しいブランチを作成します
- 入力:
owner(string):リポジトリの所有者repo(string):リポジトリ名branch(string):新しいブランチ名from_branch(optional string):元のブランチ(デフォルトはリポジトリのデフォルトブランチ)
- 戻り値:作成されたブランチの参照
-
list_issues- リポジトリのイシューを一覧表示して絞り込みます
- 入力:
owner(string):リポジトリの所有者repo(string):リポジトリ名state(optional string):状態で絞り込みます('open'、'closed'、'all')labels(optional string[]):ラベルで絞り込みますsort(optional string):並べ替えの基準('created'、'updated'、'comments')direction(optional string):並べ替えの順序('asc'、'desc')since(optional string):日付で絞り込みます(ISO 8601 タイムスタンプ)page(optional number):ページ番号per_page(optional number):1 ページあたりの結果数
- 戻り値:イシューの詳細の配列
-
update_issue- 既存のイシューを更新します
- 入力:
owner(string):リポジトリの所有者repo(string):リポジトリ名issue_number(number):更新するイシュー番号title(optional string):新しいタイトルbody(optional string):新しい説明state(optional string):新しい状態('open' または 'closed')labels(optional string[]):新しいラベルassignees(optional string[]):新しい担当者milestone(optional number):新しいマイルストーン番号
- 戻り値:更新されたイシューの詳細
-
add_issue_comment- イシューにコメントを追加します
- 入力:
owner(string):リポジトリの所有者repo(string):リポジトリ名issue_number(number):コメントするイシュー番号body(string):コメント本文
- 戻り値:作成されたコメントの詳細
-
search_code- GitHub リポジトリ全体からコードを検索します
- 入力:
q(string):GitHub のコード検索構文を使用した検索クエリsort(optional string):並べ替えフィールド('indexed' のみ)order(optional string):並べ替え順序('asc' または 'desc')per_page(optional number):1 ページあたりの結果数(最大 100)page(optional number):ページ番号
- 戻り値:リポジトリのコンテキストを含むコード検索結果
-
search_issues- イシューとプルリクエストを検索します
- 入力:
q(string):GitHub のイシュー検索構文を使用した検索クエリsort(optional string):並べ替えフィールド(comments、reactions、created など)order(optional string):並べ替え順序('asc' または 'desc')per_page(optional number):1 ページあたりの結果数(最大 100)page(optional number):ページ番号
- 戻り値:イシューとプルリクエストの検索結果
-
search_users- GitHub ユーザーを検索します
- 入力:
q(string):GitHub のユーザー検索構文を使用した検索クエリsort(optional string):並べ替えフィールド(followers、repositories、joined)order(optional string):並べ替え順序('asc' または 'desc')per_page(optional number):1 ページあたりの結果数(最大 100)page(optional number):ページ番号
- 戻り値:ユーザーの検索結果
-
list_commits
- リポジトリ内のブランチのコミットを取得します
- 入力:
owner(string):リポジトリの所有者repo(string):リポジトリ名page(optional string):ページ番号per_page(optional string):1 ページあたりのレコード数sha(optional string):ブランチ名
- 戻り値:コミットの一覧
get_issue
- リポジトリ内のイシューの内容を取得します
- 入力:
owner(string):リポジトリの所有者repo(string):リポジトリ名issue_number(number):取得するイシュー番号
- 戻り値:Github Issue オブジェクトと詳細
get_pull_request
- 特定のプルリクエストの詳細を取得します
- 入力:
owner(string):リポジトリのオーナーrepo(string):リポジトリ名pull_number(number):プルリクエスト番号
- 戻り値:差分やレビュー状況を含むプルリクエストの詳細
list_pull_requests
- リポジトリのプルリクエストを一覧表示し、絞り込みます
- 入力:
owner(string):リポジトリのオーナーrepo(string):リポジトリ名state(optional string):状態で絞り込みます('open'、'closed'、'all')head(optional string):head のユーザー/組織とブランチで絞り込みますbase(optional string):base ブランチで絞り込みますsort(optional string):並べ替え基準('created'、'updated'、'popularity'、'long-running')direction(optional string):並べ替え順('asc'、'desc')per_page(optional number):1ページあたりの結果数(最大100)page(optional number):ページ番号
- 戻り値:プルリクエストの詳細の配列
create_pull_request_review
- プルリクエストにレビューを作成します
- 入力:
owner(string):リポジトリのオーナーrepo(string):リポジトリ名pull_number(number):プルリクエスト番号body(string):レビューコメントのテキストevent(string):レビューアクション('APPROVE'、'REQUEST_CHANGES'、'COMMENT')commit_id(optional string):レビュー対象のコミットの SHAcomments(optional array):行ごとのコメント。各コメントには以下を指定します:path(string):ファイルパスposition(number):差分内の行位置body(string):コメントのテキスト
- 戻り値:作成されたレビューの詳細
merge_pull_request
- プルリクエストをマージします
- 入力:
owner(string):リポジトリのオーナーrepo(string):リポジトリ名pull_number(number):プルリクエスト番号commit_title(optional string):マージコミットのタイトルcommit_message(optional string):マージコミットの追加説明merge_method(optional string):マージ方法('merge'、'squash'、'rebase')
- 戻り値:マージ結果の詳細
get_pull_request_files
- プルリクエストで変更されたファイルの一覧を取得します
- 入力:
owner(string):リポジトリのオーナーrepo(string):リポジトリ名pull_number(number):プルリクエスト番号
- 戻り値:パッチとステータスの詳細を含む、変更されたファイルの配列
get_pull_request_status
- プルリクエストのすべてのステータスチェックを統合した結果を取得します
- 入力:
owner(string):リポジトリのオーナーrepo(string):リポジトリ名pull_number(number):プルリクエスト番号
- 戻り値:統合されたステータスチェック結果と個々のチェックの詳細
update_pull_request_branch
- base ブランチの最新の変更をプルリクエストのブランチに反映します(GitHub の「Update branch」ボタンと同等です)
- 入力:
owner(string):リポジトリのオーナーrepo(string):リポジトリ名pull_number(number):プルリクエスト番号expected_head_sha(optional string):プルリクエストの HEAD ref に期待される SHA
- 戻り値:ブランチが更新された際の成功メッセージ
get_pull_request_comments
- プルリクエストのレビューコメントを取得します
- 入力:
owner(string):リポジトリのオーナーrepo(string):リポジトリ名pull_number(number):プルリクエスト番号
- 戻り値:コメントのテキスト、投稿者、差分内の位置などの詳細を含む、プルリクエストのレビューコメントの配列
get_pull_request_reviews
- プルリクエストのレビューを取得します
- 入力:
owner(string):リポジトリのオーナーrepo(string):リポジトリ名pull_number(number):プルリクエスト番号
- 戻り値:レビュー状態(APPROVED、CHANGES_REQUESTED など)、レビュアー、レビュー本文などの詳細を含む、プルリクエストのレビューの配列
検索クエリ構文
コード検索
language:javascript:プログラミング言語で検索しますrepo:owner/name:特定のリポジトリ内を検索しますpath:app/src:特定のパス内を検索しますextension:js:ファイル拡張子で検索します- 例:
q: "import express" language:typescript path:src/
Issue 検索
is:issueまたはis:pr:種類で絞り込みますis:openまたはis:closed:状態で絞り込みますlabel:bug:ラベルで検索しますauthor:username:作成者で検索します- 例:
q: "memory leak" is:issue is:open label:bug
ユーザー検索
type:userまたはtype:org:アカウントの種類で絞り込みますfollowers:>1000:フォロワー数で絞り込みますlocation:London:所在地で検索します- 例:
q: "fullstack developer" location:London followers:>100
検索構文の詳細については、GitHub の検索ドキュメントをご覧ください。
セットアップ
Personal Access Token
適切な権限を持つ GitHub Personal Access Token を作成してください。
- Personal access tokens(GitHub の Settings > Developer settings 内)に移動します
- このトークンでアクセスするリポジトリ(Public、All、または Select)を選択します
repoスコープ(「プライベートリポジトリの完全な制御」)を指定してトークンを作成します- または、パブリックリポジトリのみを使用する場合は、
public_repoスコープのみを選択します
- または、パブリックリポジトリのみを使用する場合は、
- 生成されたトークンをコピーします
Claude Desktop での使用
Claude Desktop で使用するには、次の内容を claude_desktop_config.json に追加します。
Docker
{
"mcpServers": {
"github": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GITHUB_PERSONAL_ACCESS_TOKEN",
"mcp/github"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>"
}
}
}
}
NPX
{
"mcpServers": {
"github": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-github"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>"
}
}
}
}
ビルド
Docker ビルド:
docker build -t mcp/github -f src/github/Dockerfile .
ライセンス
この MCP サーバーは MIT License の下でライセンスされています。MIT License の利用規約に従うことを条件に、このソフトウェアを自由に使用、変更、配布できます。詳細については、プロジェクトリポジトリの LICENSE ファイルをご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。