mcpField
G
GitHub MCP Server

GitHub MCP Server

ローカル
github.com/marcusdbバージョン管理079 週間前に更新

GitHub MCP Server について

GitHub MCP Serverは、MCPクライアントからGitHub APIを操作するTypeScript製サーバーです。リポジトリ、ファイル、イシュー、プルリクエスト、検索機能に加え、ブランチの自動作成と複数ファイルの更新に対応します。

主な機能

  1. 01リポジトリファイルの作成と更新
  2. 02複数ファイルを1コミットでプッシュ
  3. 03リポジトリ、ブランチ、フォークの管理
  4. 04イシューとプルリクエストの作成・管理
  5. 05コード、リポジトリ、イシュー、ユーザーの検索
  6. 06強制プッシュなしでGit履歴を維持

活用シーン

  1. 01リポジトリ内のファイルを更新
  2. 02コード、リポジトリ、ユーザーの検索
  3. 03プルリクエストのレビューとマージ
  4. 04リポジトリのイシューの作成・管理

MCP 対応

GitHub APIの操作をMCPクライアント向けツールとして公開し、リポジトリ、ファイル、イシュー、プルリクエスト、検索機能を提供します。GitHub公式のMCPサーバーではなく、独立したプロジェクトです。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"github-mcp-server-ts": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"build"
]
}
}
}
起動コマンドdocker run -i --rm build

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
ocibuild

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

GitHub MCP サーバー

免責事項!: これは公式の GitHub MCP サーバーではありません。公式版については、http://github.com/github/github-mcp-server リポジトリをご覧ください。これは、公式サーバーに不足していると考えた機能を独自に追加した TypeScript サーバーです。ベースコードは、modelcontextprotocol リポジトリの servers ディレクトリのものです。


ファイル操作、リポジトリ管理、検索機能などを利用できる、GitHub API 用の MCP サーバーです。

特長
  • ブランチの自動作成:ファイルの作成・更新時や変更のプッシュ時に、ブランチが存在しない場合は自動的に作成します
  • 包括的なエラー処理:よくある問題について、わかりやすいエラーメッセージを表示します
  • Git 履歴の保持:強制プッシュを行わず、適切な Git 履歴を維持して操作します
  • 一括操作:単一ファイルと複数ファイルの両方の操作に対応します
  • 高度な検索:コード、Issue/PR、ユーザーの検索に対応します

ツール

  1. create_or_update_file

    • リポジトリ内の単一ファイルを作成または更新します
    • 入力:
      • owner (string):リポジトリの所有者(ユーザー名または組織)
      • repo (string):リポジトリ名
      • path (string):ファイルを作成・更新するパス
      • content (string):ファイルの内容
      • message (string):コミットメッセージ
      • branch (string):ファイルを作成・更新するブランチ
      • sha (optional string):置き換えるファイルの SHA(更新の場合)
    • 戻り値:ファイルの内容とコミットの詳細
  2. push_files

    • 複数のファイルを単一のコミットでプッシュします
    • 入力:
      • owner (string):リポジトリの所有者
      • repo (string):リポジトリ名
      • branch (string):プッシュ先のブランチ
      • files (array):プッシュするファイル。それぞれに path と content を指定します
      • message (string):コミットメッセージ
    • 戻り値:更新されたブランチ参照
  3. search_repositories

    • GitHub リポジトリを検索します
    • 入力:
      • query (string):検索クエリ
      • page (optional number):ページネーション用のページ番号
      • perPage (optional number):ページあたりの検索結果数(最大 100)
    • 戻り値:リポジトリの検索結果
  4. create_repository

    • 新しい GitHub リポジトリを作成します
    • 入力:
      • name (string):リポジトリ名
      • description (optional string):リポジトリの説明
      • private (optional boolean):リポジトリを非公開にするかどうか
      • autoInit (optional boolean):README を追加して初期化するかどうか
    • 戻り値:作成したリポジトリの詳細
  5. get_file_contents

    • ファイルまたはディレクトリの内容を取得します
    • 入力:
      • owner (string):リポジトリの所有者
      • repo (string):リポジトリ名
      • path (string):ファイル/ディレクトリへのパス
      • branch (optional string):内容の取得元となるブランチ
    • 戻り値:ファイル/ディレクトリの内容
  6. create_issue

    • 新しい Issue を作成します
    • 入力:
      • owner (string):リポジトリの所有者
      • repo (string):リポジトリ名
      • title (string):Issue のタイトル
      • body (optional string):Issue の説明
      • assignees (optional string[]):割り当てるユーザー名
      • labels (optional string[]):追加するラベル
      • milestone (optional number):マイルストーン番号
    • 戻り値:作成した Issue の詳細
  7. 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):メンテナーによる編集を許可するかどうか
    • 戻り値:作成したプルリクエストの詳細
  8. fork_repository

    • リポジトリをフォークします
    • 入力:
      • owner (string):リポジトリの所有者
      • repo (string):リポジトリ名
      • organization (optional string):フォーク先の組織
    • 戻り値:フォークしたリポジトリの詳細
  9. create_branch

    • 新しいブランチを作成します
    • 入力:
      • owner (string):リポジトリの所有者
      • repo (string):リポジトリ名
      • branch (string):新しいブランチ名
      • from_branch (optional string):元のブランチ(デフォルトはリポジトリのデフォルトブランチ)
    • 戻り値:作成されたブランチの参照
  10. 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 ページあたりの結果数
    • 戻り値:イシューの詳細の配列
  11. 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):新しいマイルストーン番号
    • 戻り値:更新されたイシューの詳細
  12. add_issue_comment

    • イシューにコメントを追加します
    • 入力:
      • owner (string):リポジトリの所有者
      • repo (string):リポジトリ名
      • issue_number (number):コメントするイシュー番号
      • body (string):コメント本文
    • 戻り値:作成されたコメントの詳細
  13. search_code

    • GitHub リポジトリ全体からコードを検索します
    • 入力:
      • q (string):GitHub のコード検索構文を使用した検索クエリ
      • sort (optional string):並べ替えフィールド('indexed' のみ)
      • order (optional string):並べ替え順序('asc' または 'desc')
      • per_page (optional number):1 ページあたりの結果数(最大 100)
      • page (optional number):ページ番号
    • 戻り値:リポジトリのコンテキストを含むコード検索結果
  14. 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):ページ番号
    • 戻り値:イシューとプルリクエストの検索結果
  15. 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):ページ番号
    • 戻り値:ユーザーの検索結果
  16. list_commits

  • リポジトリ内のブランチのコミットを取得します
  • 入力:
    • owner (string):リポジトリの所有者
    • repo (string):リポジトリ名
    • page (optional string):ページ番号
    • per_page (optional string):1 ページあたりのレコード数
    • sha (optional string):ブランチ名
  • 戻り値:コミットの一覧
  1. get_issue
  • リポジトリ内のイシューの内容を取得します
  • 入力:
    • owner (string):リポジトリの所有者
    • repo (string):リポジトリ名
    • issue_number (number):取得するイシュー番号
  • 戻り値:Github Issue オブジェクトと詳細
  1. get_pull_request
  • 特定のプルリクエストの詳細を取得します
  • 入力:
    • owner (string):リポジトリのオーナー
    • repo (string):リポジトリ名
    • pull_number (number):プルリクエスト番号
  • 戻り値:差分とレビュー状況を含むプルリクエストの詳細
  1. 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):ページ番号
  • 戻り値:プルリクエストの詳細の配列
  1. create_pull_request_review
  • プルリクエストのレビューを作成します
  • 入力:
    • owner (string):リポジトリのオーナー
    • repo (string):リポジトリ名
    • pull_number (number):プルリクエスト番号
    • body (string):レビューコメントのテキスト
    • event (string):レビューアクション('APPROVE'、'REQUEST_CHANGES'、'COMMENT')
    • commit_id (任意の string):レビュー対象のコミットの SHA
    • comments (任意の array):行ごとのコメント。それぞれ次の項目を含みます:
      • path (string):ファイルパス
      • position (number):差分内の行位置
      • body (string):コメントのテキスト
  • 戻り値:作成されたレビューの詳細
  1. merge_pull_request
  • プルリクエストをマージします
  • 入力:
    • owner (string):リポジトリのオーナー
    • repo (string):リポジトリ名
    • pull_number (number):プルリクエスト番号
    • commit_title (任意の string):マージコミットのタイトル
    • commit_message (任意の string):マージコミットの追加詳細
    • merge_method (任意の string):マージ方法('merge'、'squash'、'rebase')
  • 戻り値:マージ結果の詳細
  1. get_pull_request_files
  • プルリクエストで変更されたファイルの一覧を取得します
  • 入力:
    • owner (string):リポジトリのオーナー
    • repo (string):リポジトリ名
    • pull_number (number):プルリクエスト番号
  • 戻り値:パッチとステータスの詳細を含む、変更されたファイルの配列
  1. get_pull_request_status
  • プルリクエストのすべてのステータスチェックの統合ステータスを取得します
  • 入力:
    • owner (string):リポジトリのオーナー
    • repo (string):リポジトリ名
    • pull_number (number):プルリクエスト番号
  • 戻り値:統合されたステータスチェックの結果と個々のチェックの詳細
  1. update_pull_request_branch
  • ベースブランチの最新の変更をプルリクエストのブランチに反映します(GitHub の「Update branch」ボタンと同等です)
  • 入力:
    • owner (string):リポジトリのオーナー
    • repo (string):リポジトリ名
    • pull_number (number):プルリクエスト番号
    • expected_head_sha (任意の string):プルリクエストの HEAD ref に期待される SHA
  • 戻り値:ブランチが更新された際の成功メッセージ
  1. get_pull_request_comments
  • プルリクエストのレビューコメントを取得します
  • 入力:
    • owner (string):リポジトリのオーナー
    • repo (string):リポジトリ名
    • pull_number (number):プルリクエスト番号
  • 戻り値:コメントのテキスト、作成者、差分内の位置などの詳細を含む、プルリクエストのレビューコメントの配列
  1. get_pull_request_reviews
  • プルリクエストのレビューを取得します
  • 入力:
    • owner (string):リポジトリのオーナー
    • repo (string):リポジトリ名
    • pull_number (number):プルリクエスト番号
  • 戻り値:レビュー状態(APPROVED、CHANGES_REQUESTED など)、レビュアー、レビュー本文などの詳細を含む、プルリクエストのレビューの配列
  1. list_sub_issues
  • 指定された issue のサブ issue の一覧を取得します
  • 入力:
    • owner (string):リポジトリの所有者
    • repo (string):リポジトリ名
    • issue_number (number):issue の番号
    • page (optional number):ページ番号
    • per_page (optional number):1 ページあたりの結果数
  • 戻り値:issue の詳細の配列
  1. reprioritize_sub_issue
  • sub_issue の順序を変更します
  • 入力:
    • owner (string):リポジトリの所有者
    • repo (string):リポジトリ名
    • pull_number (number):プルリクエスト番号
    • issue_number (number):issue の番号
    • sub_issue_id (number):優先順位を変更するサブ issue の ID
    • after_id (number):優先順位をこのサブ issue の後にする ID(位置指定引数の after または before のいずれかを指定してください)。
    • before_id (number):優先順位をこのサブ issue の前にする ID(位置指定引数の after または before のいずれかを指定してください)。
  • 戻り値:サブ issue の詳細
  1. remove_sub_issue
  • issue から sub_issue を削除します
  • 入力:
    • owner (string):リポジトリの所有者
    • repo (string):リポジトリ名
    • pull_number (number):プルリクエスト番号
    • issue_number (number):issue の番号
    • sub_issue_id (number):削除するサブ issue の ID
  • 戻り値:サブ issue の詳細
  1. add_sub_issue
  • プルリクエストのレビューを取得します
  • 入力:
    • owner (string):リポジトリの所有者
    • repo (string):リポジトリ名
    • pull_number (number):プルリクエスト番号
    • issue_number (number):issue の番号
    • sub_issue_id (number):サブ issue として追加する issue の ID
  • 戻り値:サブ issue の詳細
  1. list_labels_for_issue
  • issue のすべてのラベルを一覧表示します
  • 入力:
    • owner (string):リポジトリの所有者
    • repo (string):リポジトリ名
    • issue_number (number):issue 番号
    • per_page (optional number):1 ページあたりの結果数
    • page (optional number):ページ番号
  • 戻り値:ラベルの詳細の配列
  1. add_labels_to_issue
  • issue にラベルを追加します
  • 入力:
    • owner (string):リポジトリの所有者
    • repo (string):リポジトリ名
    • issue_number (number):issue 番号
    • labels (string[]):追加するラベル名の配列
  • 戻り値:issue に適用されたラベルの詳細の配列
  1. set_labels_for_issue
  • issue のラベルを設定し、既存のラベルをすべて置き換えます
  • 入力:
    • owner (string):リポジトリの所有者
    • repo (string):リポジトリ名
    • issue_number (number):issue 番号
    • labels (optional string[]):設定するラベル名の配列。すべてのラベルを削除するには、空の配列を指定します。
  • 戻り値:issue に適用されたラベルの詳細の配列
  1. remove_label_from_issue
  • issue からラベルを削除します
  • 入力:
    • owner (string):リポジトリの所有者
    • repo (string):リポジトリ名
    • issue_number (number):issue 番号
    • name (string):削除するラベルの名前
  • 戻り値:成功ステータス(通常は 204 No Content)
  1. remove_all_labels_from_issue
  • issue からすべてのラベルを削除します
  • 入力:
    • owner (string):リポジトリの所有者
    • repo (string):リポジトリ名
    • issue_number (number):issue 番号
  • 戻り値:成功ステータス(通常は 204 No Content)
  1. list_labels_for_repo
  • リポジトリのすべてのラベルを一覧表示します
  • 入力:
    • owner (string):リポジトリの所有者
    • repo (string):リポジトリ名
    • per_page (optional number):1 ページあたりの結果数
    • page (optional number):ページ番号
  • 戻り値:リポジトリのラベルの詳細の配列
  1. create_label
  • リポジトリにラベルを作成します
  • 入力:
    • owner(string):リポジトリのオーナー
    • repo(string):リポジトリ名
    • name(string):ラベル名
    • color(省略可能な string):先頭の # を除いた16進数カラーコード
    • description(省略可能な string):ラベルの簡単な説明
  • 戻り値:作成されたラベルの詳細
  1. get_label
  • リポジトリのラベルを1つ取得します
  • 入力:
    • owner(string):リポジトリのオーナー
    • repo(string):リポジトリ名
    • name(string):取得するラベル名
  • 戻り値:ラベルの詳細
  1. update_label
  • リポジトリの既存のラベルを更新します
  • 入力:
    • owner(string):リポジトリのオーナー
    • repo(string):リポジトリ名
    • name(string):更新するラベルの現在の名前
    • new_name(省略可能な string):ラベルの新しい名前
    • color(省略可能な string):新しい16進数カラーコード
    • description(省略可能な string):新しい説明
  • 戻り値:更新されたラベルの詳細
  1. delete_label
  • リポジトリからラベルを削除します
  • 入力:
    • owner(string):リポジトリのオーナー
    • repo(string):リポジトリ名
    • name(string):削除するラベル名
  • 戻り値:成功ステータス(通常は 204 No Content)
  1. list_labels_for_milestone
  • マイルストーン内のイシューに付けられたラベルを一覧表示します
  • 入力:
    • owner(string):リポジトリのオーナー
    • repo(string):リポジトリ名
    • milestone_number(number):マイルストーン番号
    • per_page(省略可能な number):1ページあたりの結果数
    • page(省略可能な number):ページ番号
  • 戻り値:マイルストーンのラベル詳細の配列
  1. list_milestones
  • リポジトリのマイルストーンを一覧表示します
  • 入力:
    • owner(string):リポジトリのオーナー
    • repo(string):リポジトリ名
    • state(省略可能な string):状態で絞り込みます('open'、'closed'、'all'、デフォルト:'open')
    • sort(省略可能な string):並べ替え基準('due_on'、'completeness'、デフォルト:'due_on')
    • direction(省略可能な string):並べ替え方向('asc'、'desc'、デフォルト:'asc')
    • per_page(省略可能な number):1ページあたりの結果数
    • page(省略可能な number):ページ番号
  • 戻り値:マイルストーン詳細の配列
  1. create_milestone
  • リポジトリにマイルストーンを作成します
  • 入力:
    • owner(string):リポジトリのオーナー
    • repo(string):リポジトリ名
    • title(string):マイルストーンのタイトル
    • state(省略可能な string):状態('open' または 'closed'、デフォルト:'open')
    • description(省略可能な string):マイルストーンの説明
    • due_on(省略可能な string):期限(ISO 8601 形式:YYYY-MM-DDTHH:MM:SSZ)
  • 戻り値:作成されたマイルストーンの詳細
  1. get_milestone
  • リポジトリのマイルストーンを1つ取得します
  • 入力:
    • owner(string):リポジトリのオーナー
    • repo(string):リポジトリ名
    • milestone_number(number):マイルストーン番号
  • 戻り値:マイルストーンの詳細
  1. update_milestone
  • リポジトリの既存のマイルストーンを更新します
  • 入力:
    • owner(string):リポジトリのオーナー
    • repo(string):リポジトリ名
    • milestone_number(number):更新するマイルストーン番号
    • title(省略可能な string):新しいタイトル
    • state(省略可能な string):新しい状態('open' または 'closed')
    • description(省略可能な string):新しい説明
    • due_on(省略可能な string):新しい期限(ISO 8601 形式)
  • 戻り値:更新されたマイルストーンの詳細
  1. delete_milestone
  • リポジトリからマイルストーンを削除します
  • 入力:
    • owner(string):リポジトリのオーナー
    • repo(string):リポジトリ名
    • milestone_number(number):削除するマイルストーン番号
  • 戻り値:成功ステータス(通常は 204 No Content)

検索クエリ構文

コード検索
  • 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 ファイルをご覧ください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。