mcpField
G
GitHub MCP Server

GitHub MCP Server

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

GitHub MCP Server について

GitHub MCP Serverは、リポジトリ、Issue、プルリクエストの操作や検索に使うGitHub APIを提供します。複数ファイルの一括更新に対応し、変更時のGit履歴を保持します。

主な機能

  1. 01リポジトリのファイル作成と更新
  2. 02複数ファイルを1つのコミットでプッシュ
  3. 03リポジトリ、ブランチ、フォークの管理
  4. 04Issueとプルリクエストの作成と管理
  5. 05リポジトリ、コード、Issue、ユーザーの検索
  6. 06コミット、レビュー、プルリクエスト詳細の取得

活用シーン

  1. 01リポジトリ内の複数ファイルを更新
  2. 02GitHubのコードやIssueを検索
  3. 03プルリクエストをレビューしてマージ
  4. 04リポジトリを作成してブランチを管理

MCP 対応

MCPクライアント向けに、リポジトリ、ファイル、Issue、プルリクエスト、検索などのGitHub API操作をツールとして提供します。

設定

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

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

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

パッケージ
ocibuild

ツール

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

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

詳細

GitHub MCP サーバー

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):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

    • 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

    • リポジトリの 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 詳細の配列
  11. 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 の詳細
  12. add_issue_comment

    • Issue にコメントを追加します
    • 入力:
      • owner (string):リポジトリのオーナー
      • repo (string):リポジトリ名
      • issue_number (number):コメントする Issue 番号
      • 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

    • 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 とプルリクエストの検索結果
  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
  • リポジトリ内の Issue の内容を取得します
  • 入力:
    • owner (string):リポジトリのオーナー
    • repo (string):リポジトリ名
    • issue_number (number):取得する Issue 番号
  • 戻り値: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):ヘッドのユーザー/組織とブランチで絞り込みます
    • 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):ページ番号
  • 戻り値:プルリクエストの詳細の配列
  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
  • ベースブランチの最新の変更をプルリクエストのブランチに反映します(GitHub の「Update branch」ボタンに相当)
  • 入力:
    • owner (string):リポジトリの所有者
    • repo (string):リポジトリ名
    • pull_number (number):プルリクエスト番号
    • expected_head_sha (optional string):プルリクエストのHEAD参照に期待される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 つのサーバーを複数のクライアントで再利用できます。