mcpField
G
GitHub MCP Server

GitHub MCP Server

ローカル
github.com/minimind-orgバージョン管理082 週間前に更新

GitHub MCP Server について

GitHub MCP Serverは、リポジトリ、Issue、プルリクエストを扱うワークフロー向けに、GitHub APIの操作をMCPクライアントへ公開します。複数ファイルの変更と検索に対応し、ファイル操作時には必要なブランチを作成できます。

主な機能

  1. 01リポジトリファイルの作成・更新
  2. 02複数ファイルを1コミットで送信
  3. 03リポジトリ・コード・Issue・ユーザーの検索
  4. 04Issueとプルリクエストの管理
  5. 05不足するブランチの自動作成
  6. 06強制プッシュせずGit履歴を保持

活用シーン

  1. 01複数のリポジトリファイルをまとめてコミット
  2. 02コード・リポジトリ・GitHubユーザーを検索
  3. 03Issueの絞り込みと更新
  4. 04プルリクエストの確認・レビュー・マージ

MCP 対応

このMCPサーバーは、リポジトリ、ファイル、Issue、プルリクエスト、検索に関するGitHub API機能をツールとして提供します。READMEにはClaude DesktopでのDockerおよびnpxの設定例があります。

設定

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

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

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

パッケージ
ocibuild

ツール

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

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

詳細

GitHub MCP サーバー

重要:このプロジェクトはmodelcontextprotocol/servers/src/githubからのフォークです。

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

機能
  • ブランチの自動作成:ファイルの作成・更新や変更のプッシュ時に、ブランチが存在しない場合は自動的に作成します
  • 包括的なエラー処理:よくある問題に対して明確なエラーメッセージを表示します
  • 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):1ページあたりの結果数(最大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 など)、レビュアー、レビュー本文などの詳細を含む、プルリクエストのレビューの配列

検索クエリ構文

コード検索
  • 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 つのサーバーを複数のクライアントで再利用できます。