mcpField
G
GitHub MCP Server

GitHub MCP Server

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

GitHub MCP Server について

GitHub MCP Serverは、GitHubのリポジトリ、ファイル、Issue、プルリクエスト、検索、Webhook操作をMCPクライアントに提供します。複数ファイルの一括変更、自動ブランチ作成、Git履歴を保つ更新に対応します。

主な機能

  1. 01リポジトリのファイル作成と更新
  2. 02複数ファイルの一括コミット
  3. 03リポジトリ、Issue、プルリクエストの管理
  4. 04リポジトリ、コード、Issue、ユーザーの検索
  5. 05リポジトリと組織のWebhook管理
  6. 06Git履歴の維持とブランチの自動作成

活用シーン

  1. 01リポジトリへの単一または複数ファイルのコミット
  2. 02Issueやプルリクエストの作成とレビュー
  3. 03リポジトリ、コード、GitHubユーザーの検索
  4. 04Webhookの設定と配信履歴の確認

MCP 対応

GitHub APIの操作をツールとしてMCPクライアントに提供するMCPサーバーです。リポジトリ、Issue、プルリクエスト、検索、Webhook管理に対応します。

設定

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

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

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

パッケージ
ocibuild

ツール

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

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

詳細

GitHub MCP サーバー

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

Mission Squad による変更

  • github pat はリクエストごとに動的に指定されるようになり、環境変数に含める必要がなくなりましたが、環境変数へのフォールバックも引き続き可能です。
  • 名前:mcp-github
機能
  • ブランチの自動作成:ファイルの作成・更新や変更のプッシュ時に、ブランチが存在しない場合は自動的に作成します
  • 包括的なエラー処理:よくある問題に対して明確なエラーメッセージを表示します
  • Git 履歴の保持:強制プッシュを行わず、適切な Git 履歴を維持します
  • 一括操作:単一ファイルと複数ファイルの両方の操作に対応しています
  • 高度な検索:コード、イシュー/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):1 ページあたりの結果数(最大 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

    • 新しいイシューを作成します
    • 入力:
      • owner (string):リポジトリの所有者
      • repo (string):リポジトリ名
      • title (string):イシューのタイトル
      • body (optional string):イシューの説明
      • assignees (optional string[]):割り当てるユーザー名
      • labels (optional string[]):追加するラベル
      • milestone (optional number):マイルストーン番号
    • 戻り値:作成されたイシューの詳細
  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 (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):ページあたりの結果数(最大 100)
    • page (optional number):ページ番号
  • 戻り値:プルリクエストの詳細の配列
  1. create_pull_request_review
  • プルリクエストにレビューを作成します
  • 入力:
    • owner (string):リポジトリのオーナー
    • repo (string):リポジトリ名
    • pull_number (number):プルリクエスト番号
    • body (string):レビューコメントのテキスト
    • event (string):レビューアクション('APPROVE'、'REQUEST_CHANGES'、'COMMENT')
    • commit_id (optional string):レビュー対象のコミットの SHA
    • comments (optional array):行ごとのコメント。各コメントには以下を含みます:
      • path (string):ファイルパス
      • position (number):差分内の行位置
      • body (string):コメントのテキスト
  • 戻り値:作成されたレビューの詳細
  1. 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')
  • 戻り値:マージ結果の詳細
  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
  • base ブランチの最新変更でプルリクエストのブランチを更新します(GitHub の「Update branch」ボタンと同等です)
  • 入力:
    • owner (string):リポジトリのオーナー
    • repo (string):リポジトリ名
    • pull_number (number):プルリクエスト番号
    • expected_head_sha (optional 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 など)、レビュアー、レビュー本文などの詳細を含む、プルリクエストレビューの配列

Webhook ツール

このサーバーは、既存の github_pat 認証モデルで利用できる、リポジトリおよび組織の Webhook REST 機能一式をサポートするようになりました。

リポジトリのWebhookツール
  • list_repository_webhooks
  • get_repository_webhook
  • create_repository_webhook
  • update_repository_webhook
  • delete_repository_webhook
  • get_repository_webhook_config
  • update_repository_webhook_config
  • ping_repository_webhook
  • list_repository_webhook_deliveries
  • get_repository_webhook_delivery
  • redeliver_repository_webhook_delivery
OrganizationのWebhookツール
  • list_organization_webhooks
  • get_organization_webhook
  • create_organization_webhook
  • update_organization_webhook
  • delete_organization_webhook
  • get_organization_webhook_config
  • update_organization_webhook_config
  • ping_organization_webhook
  • list_organization_webhook_deliveries
  • get_organization_webhook_delivery
  • redeliver_organization_webhook_delivery
権限

リポジトリのWebhook:

  • Classic PATでは通常、作成、編集、削除、ping、再配信に admin:repo_hook(または、より広範な repo)が必要です。
  • Fine-grained PATでは、一覧表示と取得に read、作成、更新、削除、ping、再配信に write のリポジトリ Webhooks 権限が必要です。

OrganizationのWebhook:

  • Classic PATには admin:org_hook が必要です。
  • Fine-grained PATでは、一覧表示と取得に read、作成、更新、削除、ping、再配信に write のOrganization Webhooks 権限が必要です。
使用上の注意
  • Webhookの作成・更新ツールでは、GitHubで必須の name: "web" が内部で固定されています。
  • リポジトリのWebhook設定では、url、content_type、secret、insecure_ssl に対応しています。
  • OrganizationのWebhook設定では、これらのフィールドに加えて、Basic認証用に任意の username と password に対応しています。
  • GitHubは、Webhookに secret を設定し、受信側サービスで配信署名を検証することを強く推奨しています。
  • insecure_ssl: "1" は証明書の検証を無効にするため、推奨されません。
デバッグの流れ
  • ping_*_webhook を使って、作成または更新後にテスト配信を実行します。
  • list_*_webhook_deliveries を使って、最近の試行を確認します。
  • get_*_webhook_delivery を使って、リクエストのペイロードとヘッダー、およびGitHubが記録したレスポンスを確認します。
  • redeliver_*_webhook_delivery を使って、失敗した配信や古い配信を再実行します。
対象外
  • このサーバーは、Webhook配信を受信するHTTPエンドポイントを実装していません。
  • このサーバーは、Webhookエンドポイントの配信署名を検証しません。
  • GitHub AppのWebhookエンドポイントは、この段階では対象外です。これらのAPIではPATではなく、JWTベースのアプリ認証が必要なためです。

検索クエリの構文

コード検索
  • 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 スコープ(「Full control of private repositories」)を付与したトークンを作成します
    • または、公開リポジトリのみを扱う場合は、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 つのサーバーを複数のクライアントで再利用できます。