GitHub MCP Server について
GitHub MCP Serverは、リポジトリ、Issue、プルリクエストの操作や検索に使うGitHub APIを提供します。複数ファイルの一括更新に対応し、変更時のGit履歴を保持します。
主な機能
- 01リポジトリのファイル作成と更新
- 02複数ファイルを1つのコミットでプッシュ
- 03リポジトリ、ブランチ、フォークの管理
- 04Issueとプルリクエストの作成と管理
- 05リポジトリ、コード、Issue、ユーザーの検索
- 06コミット、レビュー、プルリクエスト詳細の取得
活用シーン
- 01リポジトリ内の複数ファイルを更新
- 02GitHubのコードやIssueを検索
- 03プルリクエストをレビューしてマージ
- 04リポジトリを作成してブランチを管理
MCP 対応
MCPクライアント向けに、リポジトリ、ファイル、Issue、プルリクエスト、検索などのGitHub API操作をツールとして提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
GitHub MCP サーバー
GitHub API 用の MCP サーバーです。ファイル操作、リポジトリ管理、検索機能などを利用できます。
機能
- ブランチの自動作成:ファイルの作成・更新や変更のプッシュ時に、ブランチが存在しない場合は自動的に作成します
- 包括的なエラー処理:よくある問題をわかりやすいエラーメッセージで通知します
- Git 履歴の保持:強制プッシュを行わず、適切な Git 履歴を維持します
- 一括操作:単一ファイルと複数ファイルの両方の操作に対応します
- 高度な検索:コード、issue/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- issue を新規作成します
- 入力:
owner(string):リポジトリの所有者repo(string):リポジトリ名title(string):issue のタイトルbody(optional string):issue の説明assignees(optional string[]):割り当てるユーザー名labels(optional string[]):追加するラベルmilestone(optional number):マイルストーン番号
- 戻り値:作成した issue の詳細
-
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- リポジトリの Issue を一覧表示し、絞り込みます
- 入力:
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 ページあたりの結果数
- 戻り値:Issue 詳細の配列
-
update_issue- 既存の Issue を更新します
- 入力:
owner(string):リポジトリのオーナーrepo(string):リポジトリ名issue_number(number):更新する Issue 番号title(optional string):新しいタイトルbody(optional string):新しい説明state(optional string):新しい状態('open' または 'closed')labels(optional string[]):新しいラベルassignees(optional string[]):新しい担当者milestone(optional number):新しいマイルストーン番号
- 戻り値:更新された Issue の詳細
-
add_issue_comment- Issue にコメントを追加します
- 入力:
owner(string):リポジトリのオーナーrepo(string):リポジトリ名issue_number(number):コメントする Issue 番号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- Issue とプルリクエストを検索します
- 入力:
q(string):GitHub Issue 検索構文を使用した検索クエリsort(optional string):並べ替えフィールド(comments、reactions、created など)order(optional string):並べ替え順('asc' または 'desc')per_page(optional number):1 ページあたりの結果数(最大 100)page(optional number):ページ番号
- 戻り値:Issue とプルリクエストの検索結果
-
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
- リポジトリ内の Issue の内容を取得します
- 入力:
owner(string):リポジトリのオーナーrepo(string):リポジトリ名issue_number(number):取得する Issue 番号
- 戻り値: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):ヘッドのユーザー/組織とブランチで絞り込みますbase(optional string):ベースブランチで絞り込みます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
- ベースブランチの最新の変更をプルリクエストのブランチに反映します(GitHub の「Update branch」ボタンに相当)
- 入力:
owner(string):リポジトリの所有者repo(string):リポジトリ名pull_number(number):プルリクエスト番号expected_head_sha(optional string):プルリクエストのHEAD参照に期待される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 つのサーバーを複数のクライアントで再利用できます。