Server Github MCP (PR Comment) について
Server Github MCP (PR Comment) は、GitHub APIをMCPクライアントから利用し、リポジトリ作業や検索、Issueとプルリクエストの管理を行うサーバーです。Git履歴を保ちながら複数ファイルを変更でき、存在しないブランチも自動作成します。
主な機能
- 01単一・複数ファイルの作成と更新
- 02リポジトリ、ブランチ、Issue、プルリクエストの管理
- 03コード、リポジトリ、Issue、ユーザーの検索
- 04コミット、ファイル、レビュー、チェック状態の取得
- 05強制プッシュを使わないGit履歴の維持
活用シーン
- 01リポジトリへのファイル変更のコミット
- 02コード、リポジトリ、GitHubユーザーの検索
- 03プルリクエストの作成とレビュー
- 04リポジトリのIssueの追跡と更新
MCP 対応
GitHub APIの操作をMCPクライアント向けのツールとして公開し、ファイル操作、検索、リポジトリやプルリクエストの管理を可能にします。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
28掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| owner | string | はい | リポジトリの所有者(ユーザー名または組織) |
| repo | string | はい | リポジトリ名 |
| path | string | はい | ファイルを作成または更新するパス |
| content | string | はい | ファイルの内容 |
| message | string | はい | コミットメッセージ |
| branch | string | はい | ファイルを作成または更新するブランチ |
| sha | string | いいえ | 置き換えるファイルの SHA(既存ファイルの更新時に必須) |
詳細
GitHub MCP サーバー
非推奨のお知らせ: このプロジェクトの開発は、https://github.com/195440/server-github-mcp リポジトリの 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(任意の string):状態で絞り込みます('open'、'closed'、'all')head(任意の string):ヘッドユーザー/組織とブランチで絞り込みますbase(任意の string):ベースブランチで絞り込みますsort(任意の string):並べ替え基準('created'、'updated'、'popularity'、'long-running')direction(任意の string):並べ替え順('asc'、'desc')per_page(任意の number):1 ページあたりの結果数(最大 100)page(任意の number):ページ番号
- 戻り値:プルリクエストの詳細の配列
create_pull_request_review
- プルリクエストのレビューを作成します
- 入力:
owner(string):リポジトリのオーナーrepo(string):リポジトリ名pull_number(number):プルリクエスト番号body(string):レビューコメントのテキストevent(string):レビューアクション('APPROVE'、'REQUEST_CHANGES'、'COMMENT')commit_id(任意の string):レビュー対象のコミットの SHAcomments(任意の array):行ごとのコメント。それぞれ次の項目を含みます:path(string):ファイルパスposition(number):差分内の行位置body(string):コメントのテキスト
- 戻り値:作成されたレビューの詳細
merge_pull_request
- プルリクエストをマージします
- 入力:
owner(string):リポジトリのオーナーrepo(string):リポジトリ名pull_number(number):プルリクエスト番号commit_title(任意の string):マージコミットのタイトルcommit_message(任意の string):マージコミットの追加詳細merge_method(任意の 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(任意の 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 など)、レビュアー、レビュー本文などの詳細を含む、プルリクエストのレビューの配列
add_pr_summary_comment
- プルリクエストに概要コメントを追加します
- 入力:
owner(string):リポジトリの所有者repo(string):リポジトリ名pull_number(number):プルリクエスト番号body(string):コメント本文
- 戻り値:作成されたコメントの詳細
add_pr_line_comment
- プルリクエストに行を指定したコメントを追加します
- 入力:
owner(string):リポジトリの所有者repo(string):リポジトリ名
検索クエリ構文
コード検索
language:javascript:プログラミング言語で検索repo:owner/name:特定のリポジトリを検索path:app/src:特定のパスを検索extension:js:ファイル拡張子で検索- 例:
q: "import express" language:typescript path:src/
イシュー検索
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 の検索に関するドキュメントを参照してください。
セットアップ
個人用アクセストークン
適切な権限を持つGitHub 個人用アクセストークンを作成します。
- 個人用アクセストークンに移動します(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",
"@rz195440/server-github-mcp"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>"
}
}
}
}
NPX
{
"mcpServers": {
"github": {
"command": "npx",
"args": [
"-y",
"@rz195440/server-github-mcp"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "${input:github_token}"
}
}
}
}
ビルド
Docker のビルド:
docker build -t mcp/github -f src/github/Dockerfile .
ライセンス
この MCP サーバーは MIT ライセンスの下でライセンスされています。MIT ライセンスの利用規約に従うことを条件に、ソフトウェアを自由に使用、変更、配布できます。詳細については、プロジェクトリポジトリ内の LICENSE ファイルを参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。