GitHub MCP Server

by tuanle96
Verified

Integrations

  • Preserves Git history for repository operations, with support for branch creation, commit management, and maintaining proper version control without force pushing.

  • Provides comprehensive access to GitHub's API, enabling file operations (creating, updating, retrieving), repository management (creating, forking, branching), search functionality across code/issues/users, and issue/PR workflows (creating, commenting, reviewing, merging).

GitHub MCP サーバー

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

特徴

  • 自動ブランチ作成: ファイルを作成/更新したり変更をプッシュしたりするときに、ブランチが存在しない場合は自動的に作成されます。
  • 包括的なエラー処理: 一般的な問題に対する明確なエラーメッセージ
  • Git 履歴の保存: 強制プッシュなしで適切な Git 履歴を維持する操作
  • バッチ操作: 単一ファイルと複数ファイルの操作の両方をサポート
  • 高度な検索: コード、問題/PR、ユーザーの検索をサポート
  • プロジェクト管理: プロジェクトの作成、列の管理、カードの操作など、GitHub プロジェクト (クラシック) 管理のための完全なツールセット

ツール

  1. create_or_update_file
    • リポジトリ内の単一のファイルを作成または更新する
    • 入力:
      • owner (文字列): リポジトリの所有者(ユーザー名または組織)
      • repo (文字列): リポジトリ名
      • path (文字列): ファイルを作成/更新するパス
      • content (文字列): ファイルの内容
      • message (文字列): コミットメッセージ
      • branch (文字列): ファイルを作成/更新するブランチ
      • sha (オプションの文字列): 置き換えられるファイルのSHA (更新用)
    • 戻り値: ファイルの内容とコミットの詳細
  2. push_files
    • 1回のコミットで複数のファイルをプッシュする
    • 入力:
      • owner (文字列): リポジトリの所有者
      • repo (文字列): リポジトリ名
      • branch (文字列): プッシュ先のブランチ
      • files (配列): プッシュするファイル。 pathcontentがそれぞれ指定されます。
      • message (文字列): コミットメッセージ
    • 戻り値: 更新されたブランチ参照
  3. search_repositories
    • GitHubリポジトリを検索する
    • 入力:
      • query (文字列): 検索クエリ
      • page (オプションの数値):ページ番号
      • perPage (オプションの数値):1ページあたりの結果数(最大100件)
    • 戻り値: リポジトリ検索結果
  4. create_repository
    • 新しいGitHubリポジトリを作成する
    • 入力:
      • name (文字列): リポジトリ名
      • description (オプションの文字列): リポジトリの説明
      • private (オプションのブール値): リポジトリを非公開にするかどうか
      • autoInit (オプションのブール値): READMEで初期化する
    • 戻り値: 作成されたリポジトリの詳細
  5. get_file_contents
    • ファイルまたはディレクトリの内容を取得する
    • 入力:
      • owner (文字列): リポジトリの所有者
      • repo (文字列): リポジトリ名
      • path (文字列): ファイル/ディレクトリへのパス
      • branch (オプションの文字列):コンテンツを取得するブランチ
    • 戻り値: ファイル/ディレクトリの内容
  6. create_issue
    • 新しい問題を作成する
    • 入力:
      • owner (文字列): リポジトリの所有者
      • repo (文字列): リポジトリ名
      • title (文字列): 問題のタイトル
      • body (オプションの文字列): 問題の説明
      • assignees (オプションの文字列[]):割り当てるユーザー名
      • labels (オプションの文字列[]):追加するラベル
      • milestone (オプションの番号):マイルストーン番号
    • 返品: 作成された問題の詳細
  7. create_pull_request
    • 新しいプルリクエストを作成する
    • 入力:
      • owner (文字列): リポジトリの所有者
      • repo (文字列): リポジトリ名
      • title (文字列): PRのタイトル
      • body (オプションの文字列): PRの説明
      • head (文字列): 変更を含むブランチ
      • base (文字列): マージ先のブランチ
      • draft (オプションのブール値): ドラフト PR として作成
      • maintainer_can_modify (オプションのブール値): メンテナーによる編集を許可する
    • 戻り値: 作成されたプルリクエストの詳細
  8. fork_repository
    • リポジトリをフォークする
    • 入力:
      • owner (文字列): リポジトリの所有者
      • repo (文字列): リポジトリ名
      • organization (オプションの文字列):フォーク先の組織
    • 戻り値: フォークされたリポジトリの詳細
  9. create_branch
    • 新しいブランチを作成する
    • 入力:
      • owner (文字列): リポジトリの所有者
      • repo (文字列): リポジトリ名
      • branch (文字列): 新しいブランチの名前
      • from_branch (オプションの文字列): ソースブランチ (デフォルトはリポジトリのデフォルト)
    • 戻り値: 作成されたブランチ参照
  10. list_issues
  • リポジトリの問題の一覧表示とフィルタリング
  • 入力:
    • owner (文字列): リポジトリの所有者
    • repo (文字列): リポジトリ名
    • state (オプションの文字列):状態(「open」、「closed」、「all」)でフィルタリング
    • labels (オプションの文字列[]):ラベルでフィルタリング
    • sort (オプションの文字列): ('created'、'updated'、'comments') で並べ替え
    • direction (オプションの文字列):並べ替えの方向('asc'、'desc')
    • since (オプションの文字列): 日付でフィルタリング (ISO 8601 タイムスタンプ)
    • page (オプションの数字):ページ番号
    • per_page (オプションの数値):1ページあたりの結果数
  • 戻り値: 問題の詳細の配列
  1. update_issue
  • 既存の問題を更新する
  • 入力:
    • owner (文字列): リポジトリの所有者
    • repo (文字列): リポジトリ名
    • issue_number (数値): 更新する問題番号
    • title (オプションの文字列):新しいタイトル
    • body (オプションの文字列): 新しい説明
    • state (オプションの文字列):新しい状態(「open」または「closed」)
    • labels (オプションの文字列[]):新しいラベル
    • assignees (オプションの文字列[]): 新しい担当者
    • milestone (オプションの番号):新しいマイルストーン番号
  • 返品: 問題の詳細を更新しました
  1. add_issue_comment
  • 問題にコメントを追加する
  • 入力:
    • owner (文字列): リポジトリの所有者
    • repo (文字列): リポジトリ名
    • issue_number (数値): コメントする問題番号
    • body (文字列): コメントテキスト
  • 戻り値: 作成されたコメントの詳細
  1. search_code
  • GitHubリポジトリ全体でコードを検索する
  • 入力:
    • q (文字列): GitHubコード検索構文を使用した検索クエリ
    • sort (オプションの文字列): ソートフィールド ('indexed' のみ)
    • order (オプションの文字列): ソート順 ('asc' または 'desc')
    • per_page (オプションの数値):1ページあたりの結果数(最大100件)
    • page (オプションの数字):ページ番号
  • 戻り値: リポジトリコンテキストを含むコード検索結果
  1. search_issues
  • 問題とプルリクエストを検索する
  • 入力:
    • q (文字列): GitHub の問題検索構文を使用した検索クエリ
    • sort (オプションの文字列): 並べ替えフィールド (コメント、反応、作成など)
    • order (オプションの文字列): ソート順 ('asc' または 'desc')
    • per_page (オプションの数値):1ページあたりの結果数(最大100件)
    • page (オプションの数字):ページ番号
  • 戻り値: 問題とプルリクエストの検索結果
  1. search_users
  • GitHubユーザーを検索
  • 入力:
    • q (文字列): GitHubユーザーの検索構文を使用した検索クエリ
    • sort (オプションの文字列): 並べ替えフィールド (フォロワー、リポジトリ、参加)
    • order (オプションの文字列): ソート順 ('asc' または 'desc')
    • per_page (オプションの数値):1ページあたりの結果数(最大100件)
    • page (オプションの数字):ページ番号
  • 返されるもの: ユーザー検索結果
  1. list_commits
  • リポジトリ内のブランチのコミットを取得します
  • 入力:
    • owner (文字列): リポジトリの所有者
    • repo (文字列): リポジトリ名
    • page (オプションの文字列):ページ番号
    • per_page (オプションの文字列):ページあたりのレコード数
    • sha (オプションの文字列): ブランチ名
  • 戻り値: コミットのリスト
  1. get_issue
  • リポジトリ内の問題の内容を取得します
  • 入力:
    • owner (文字列): リポジトリの所有者
    • repo (文字列): リポジトリ名
    • issue_number (数値): 取得する問題番号
  • 戻り値: Github Issueオブジェクトと詳細
  1. delete_issue
  • GraphQL API を使用して GitHub リポジトリから問題を削除します
  • 入力:
    • owner (文字列): リポジトリの所有者
    • repo (文字列): リポジトリ名
    • issue_number (数値): 削除する問題番号
  • 戻り値: リポジトリ情報を含む削除確認
  1. get_pull_request
  • 特定のプルリクエストの詳細を取得する
  • 入力:
    • owner (文字列): リポジトリの所有者
    • repo (文字列): リポジトリ名
    • pull_number (数値): プルリクエスト番号
  • 戻り値: 差分とレビューステータスを含むプルリクエストの詳細
  1. list_pull_requests
  • リポジトリのプルリクエストの一覧表示とフィルタリング
  • 入力:
    • owner (文字列): リポジトリの所有者
    • repo (文字列): リポジトリ名
    • state (オプションの文字列):状態(「open」、「closed」、「all」)でフィルタリング
    • head (オプションの文字列): ヘッドユーザー/組織とブランチでフィルタリング
    • base (オプションの文字列): ベースブランチでフィルタリング
    • sort (オプションの文字列): ('created'、'updated'、'popularity'、'long-running') で並べ替え
    • direction (オプションの文字列):並べ替えの方向('asc'、'desc')
    • per_page (オプションの数値):1ページあたりの結果数(最大100件)
    • page (オプションの数字):ページ番号
  • 戻り値: プルリクエストの詳細の配列
  1. create_pull_request_review
  • プルリクエストのレビューを作成する
  • 入力:
    • owner (文字列): リポジトリの所有者
    • repo (文字列): リポジトリ名
    • pull_number (数値): プルリクエスト番号
    • body (文字列): レビューコメントのテキスト
    • event (文字列):レビューアクション('APPROVE'、'REQUEST_CHANGES'、'COMMENT')
    • commit_id (オプションの文字列): レビューするコミットのSHA
    • comments (オプションの配列): 行固有のコメント。それぞれ次の内容が含まれます。
      • path (文字列): ファイルパス
      • position (数値):diff内の行位置
      • body (文字列): コメントテキスト
  • 返品: 作成されたレビューの詳細
  1. merge_pull_request
  • プルリクエストをマージする
  • 入力:
    • owner (文字列): リポジトリの所有者
    • repo (文字列): リポジトリ名
    • pull_number (数値): プルリクエスト番号
    • commit_title (オプションの文字列): マージコミットのタイトル
    • commit_message (オプションの文字列):マージコミットの詳細
    • merge_method (オプションの文字列): マージ方法 ('merge'、'squash'、'rebase')
  • 戻り値: マージ結果の詳細
  1. get_pull_request_files
  • プルリクエストで変更されたファイルのリストを取得する
  • 入力:
    • owner (文字列): リポジトリの所有者
    • repo (文字列): リポジトリ名
    • pull_number (数値): プルリクエスト番号
  • 戻り値: パッチとステータスの詳細を含む変更されたファイルの配列
  1. get_pull_request_status
  • プルリクエストのすべてのステータスチェックを組み合わせたステータスを取得します
  • 入力:
    • owner (文字列): リポジトリの所有者
    • repo (文字列): リポジトリ名
    • pull_number (数値): プルリクエスト番号
  • 戻り値: ステータスチェックの結果と個々のチェックの詳細を組み合わせたもの
  1. update_pull_request_branch
  • ベースブランチからの最新の変更でプルリクエストブランチを更新します(GitHub の「ブランチを更新」ボタンに相当)
  • 入力:
    • owner (文字列): リポジトリの所有者
    • repo (文字列): リポジトリ名
    • pull_number (数値): プルリクエスト番号
    • expected_head_sha (オプションの文字列): プルリクエストのHEAD参照の予想されるSHA
  • 戻り値: ブランチが更新されたときの成功メッセージ
  1. get_pull_request_comments
  • プルリクエストのレビューコメントを取得する
  • 入力:
    • owner (文字列): リポジトリの所有者
    • repo (文字列): リポジトリ名
    • pull_number (数値): プルリクエスト番号
  • 戻り値: コメントテキスト、作成者、差分内の場所などの詳細を含むプルリクエストレビューコメントの配列
  1. get_pull_request_reviews
  • プルリクエストのレビューを取得する
  • 入力:
    • owner (文字列): リポジトリの所有者
    • repo (文字列): リポジトリ名
    • pull_number (数値): プルリクエスト番号
  • 戻り値: レビュー状態 (APPROVED、CHANGES_REQUESTED など)、レビュー担当者、レビュー本文などの詳細を含むプル リクエスト レビューの配列
  1. create_project
  • GitHubリポジトリに新しいプロジェクトを作成する
  • 入力:
    • owner (文字列): リポジトリの所有者(ユーザー名または組織)
    • repo (文字列): リポジトリ名
    • name (文字列): プロジェクトの名前
    • body (オプションの文字列): プロジェクトの説明
  • 戻り値: 作成されたプロジェクトの詳細
  1. get_project
  • 特定のプロジェクトの詳細を取得する
  • 入力:
    • owner (文字列): リポジトリの所有者(ユーザー名または組織)
    • repo (文字列): リポジトリ名
    • project_number (数値): プロジェクト番号
  • 返品: プロジェクトの詳細
  1. update_project
  • 既存のプロジェクトの詳細を更新する
  • 入力:
    • project_id (数値): プロジェクトの一意の識別子
    • name (オプションの文字列): プロジェクトの新しい名前
    • body (オプションの文字列): プロジェクトの新しい説明
    • state (オプションの文字列):プロジェクトの状態(「オープン」または「クローズ」)
  • 返品: 更新されたプロジェクトの詳細
  1. list_projects
  • GitHubリポジトリ内のすべてのプロジェクトを一覧表示する
  • 入力:
    • owner (文字列): リポジトリの所有者(ユーザー名または組織)
    • repo (文字列): リポジトリ名
    • state (オプションの文字列):状態(「オープン」、「クローズ」、「すべて」)でプロジェクトをフィルタリングします
    • page (オプションの数字):ページ番号(1から始まる)
    • per_page (オプションの数値):ページあたりの結果数(最大100)
  • 戻り値: プロジェクトの詳細の配列
  1. create_project_column
  • プロジェクトに新しい列を作成する
  • 入力:
    • owner (文字列): リポジトリの所有者(ユーザー名または組織)
    • repo (文字列): リポジトリ名
    • project_number (数値): プロジェクト番号
    • name (文字列): 列の名前
  • 戻り値: 作成された列の詳細
  1. list_project_columns
  • プロジェクト内のすべての列を一覧表示する
  • 入力:
    • project_id (数値): プロジェクトの一意の識別子
    • page (オプションの数字):ページ番号(1から始まる)
    • per_page (オプションの数値):ページあたりの結果数(最大100)
  • 戻り値: プロジェクト列の詳細の配列
  1. update_project_column
  • 既存のプロジェクト列を更新する
  • 入力:
    • column_id (数値): 列の一意の識別子
    • name (文字列): 列の新しい名前
  • 戻り値: 更新された列の詳細
  1. delete_project_column
  • プロジェクト列を削除する
  • 入力:
    • column_id (数値): 列の一意の識別子
  • 戻り値: 成功メッセージ
  1. add_card_to_column
  • プロジェクト列に新しいカードを追加する
  • 入力:
    • owner (文字列): リポジトリの所有者(ユーザー名または組織)
    • repo (文字列): リポジトリ名
    • column_id (文字列): カードを追加する列のID
    • content_type (文字列): カードのコンテンツの種類 ('Issue'、'PullRequest'、'Note')
    • content_id (オプションの数値): 問題またはプルリクエストのID (content_typeがIssueまたはPullRequestの場合は必須)
    • note (オプションの文字列):カードのメモ内容(content_typeがNoteの場合は必須)
  • 返品: 作成されたカードの詳細
  1. list_column_cards
  • プロジェクト列のすべてのカードを一覧表示する
  • 入力:
    • column_id (数値): 列の一意の識別子
    • archived_state (オプションの文字列): カードのアーカイブ状態でフィルタリング ('all'、'archived'、'not_archived')
    • page (オプションの数字):ページ番号(1から始まる)
    • per_page (オプションの数値):ページあたりの結果数(最大100)
  • 戻り値: カード詳細の配列
  1. move_card
  • カードを別の位置または列に移動する
  • 入力:
    • card_id (数値): カードの一意の識別子
    • position (文字列): カードの位置 ('top'、'bottom'、または 'after:<card_id>')
    • column_id (オプションの数値): カードを移動する列のID
  • 戻り値: 成功メッセージ
  1. delete_card
  • プロジェクトからカードを削除する
  • 入力:
    • card_id (数値): カードの一意の識別子
  • 戻り値: 成功メッセージ
  1. list_organization_projects
  • GitHub 組織内のすべてのプロジェクトを一覧表示する(リポジトリ レベルではなく組織レベルで)
  • 入力:
    • org (文字列): 組織名
    • state (オプションの文字列):状態(「オープン」、「クローズ」、「すべて」)でプロジェクトをフィルタリングします
    • page (オプションの数値):ページ番号
    • per_page (オプションの数値):ページあたりの結果数(最大100)
  • 戻り値: 組織プロジェクトの詳細の配列

プロジェクト V2 ツール (GitHub の新しいプロジェクト エクスペリエンス)

  1. list_organization_projects_v2
  • GraphQL API を使用して GitHub 組織内のプロジェクト V2 を一覧表示する
  • 入力:
    • org (文字列): 組織名
    • first (オプションの数値):取得するプロジェクトの数(最大100)
    • after (オプションの文字列): ページ区切りのカーソル
    • orderBy (オプションオブジェクト): プロジェクトの順序付け方法
  • 戻り値: ページ区切り情報を含むプロジェクトの配列
  1. get_project_v2
  • GraphQL API を使用して GitHub プロジェクト V2 の詳細を取得する
  • 入力:
    • id (文字列): プロジェクトのノードID
  • 戻り値: フィールドとビューを含む詳細なプロジェクト情報
  1. create_project_v2
  • GraphQL APIを使用して新しいGitHubプロジェクトV2を作成する
  • 入力:
    • ownerId (文字列): 組織またはユーザーのノードID
    • title (文字列): プロジェクトのタイトル
    • description (オプションの文字列): プロジェクトの説明
  • 戻り値: 作成されたプロジェクトの詳細
  1. update_project_v2
  • GraphQL API を使用して GitHub プロジェクト V2 を更新する
  • 入力:
    • projectId (文字列): プロジェクトのノードID
    • title (オプションの文字列): プロジェクトの新しいタイトル
    • description (オプションの文字列): プロジェクトの新しい説明
    • closed (オプションのブール値):プロジェクトを閉じるかどうか
  • 返品: 更新されたプロジェクトの詳細
  1. add_item_to_project_v2
  • GraphQL API を使用して GitHub プロジェクト V2 に問題またはプルリクエストを追加する
  • 入力:
    • projectId (文字列): プロジェクトのノードID
    • contentId (文字列): 追加する問題またはプルリクエストのノードID
  • 返品: 商品の詳細を追加しました
  1. list_project_v2_items
  • GraphQL API を使用して GitHub プロジェクト V2 内のアイテムを一覧表示する
  • 入力:
    • projectId (文字列): プロジェクトのノードID
    • first (オプションの数値): 取得するアイテムの数 (最大 100)
    • after (オプションの文字列): ページ区切りのカーソル
    • filterBy (オプションオブジェクト): アイテムのフィルター
  • 戻り値: フィールド値を持つプロジェクト項目の配列
  1. update_project_v2_item_field
  • GraphQL API を使用して GitHub プロジェクト V2 内のアイテムのフィールド値を更新する
  • 入力:
    • projectId (文字列): プロジェクトのノードID
    • itemId (文字列): アイテムのノードID
    • fieldId (文字列): フィールドのノードID
    • value (任意): フィールドの新しい値
  • 返品: 商品詳細を更新しました

プロジェクト管理ノート

廃止に関する警告:GitHubは、新しいプロジェクトエクスペリエンスへの移行に伴い、プロジェクト(クラシック)が廃止されることを発表しました。ツール27~39は、将来的に削除される可能性のあるクラシックバージョンのプロジェクトで動作します。新しいGitHubプロジェクトエクスペリエンスでは、ツール40~46をご利用ください。

検索クエリ構文

コード検索

  • 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の設定>開発者設定)
  • このトークンでアクセスするリポジトリを選択します(パブリック、すべて、または選択)
  • repoスコープ(「プライベートリポジトリのフルコントロール」)を持つトークンを作成します
    • あるいは、パブリックリポジトリのみで作業する場合は、 public_repoスコープのみを選択します。
    • Projects V2ツールを使用する場合は、 projectスコープも含めるようにしてください。
  • 生成されたトークンをコピーする

Claude Desktopでの使用

Claude Desktop でこれを使用するには、 claude_desktop_config.jsonに以下を追加します。

ドッカー

{ "mcpServers": { "github": { "command": "docker", "args": [ "run", "-i", "--rm", "-e", "GITHUB_PERSONAL_ACCESS_TOKEN", "ghcr.io/tuanle96/mcp-github" ], "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>" } } } }

NPX

{ "mcpServers": { "github": { "command": "npx", "args": [ "-y", "@earnbasejs/mcp-github" ], "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>" } } } }

建てる

Dockerビルド:

docker build -t mcp/github -f src/github/Dockerfile .

ライセンス

このMCPサーバーはMITライセンスに基づいてライセンスされています。つまり、MITライセンスの条件に従って、ソフトウェアを自由に使用、改変、配布することができます。詳細については、プロジェクトリポジトリのLICENSEファイルをご覧ください。

-
security - not tested
F
license - not found
-
quality - not tested

ファイル管理、リポジトリ管理、問題追跡、高度なコード検索など、自然言語による包括的な GitHub 操作を可能にします。

  1. Features
    1. Tools
      1. Projects V2 Tools (GitHub's New Projects Experience)
        1. Project Management Notes
          1. Search Query Syntax
            1. Code Search
            2. Issues Search
            3. Users Search
          2. Setup
            1. Personal Access Token
            2. Usage with Claude Desktop
            3. NPX
          3. Build
            1. License
              ID: 2aknx2eopg