mcpField
G
GitHub Repos Manager MCP Server

GitHub Repos Manager MCP Server

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

GitHub Repos Manager MCP Server について

GitHub Repos Manager MCP Server は、GitHub の個人用アクセストークンを使って、MCP クライアントからリポジトリ、Issue、PR、ブランチ、コミットを管理できる Node.js 製の MCP サーバーです。Docker は不要で、GitHub API を直接呼び出します。利用可能なリポジトリとツールを制限することもできます。

主な機能

  1. 01リポジトリ、Issue、PR の管理
  2. 02ブランチとコミット履歴の参照
  3. 03コミットとブランチの比較
  4. 04リポジトリとツールの許可リスト
  5. 05既定リポジトリの設定
  6. 06Issue への画像アップロード

活用シーン

  1. 01AI クライアントから GitHub Issue を作成・管理する
  2. 02ブランチを確認しコミットを比較する
  3. 03アシスタントの操作を特定のリポジトリに限定する

MCP 対応

本プロジェクトは MCP サーバーであり、Claude Desktop、Cline、Cursor などの MCP クライアントに GitHub 関連の 89 個のツールを公開します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"github-repos-manager": {
"command": "npx",
"args": [
"-y",
"github-repos-manager-mcp"
],
"env": {
"GH_TOKEN": "<GH_TOKEN>"
}
}
}
}
起動コマンドnpx -y github-repos-manager-mcp
設定が必要な環境変数
GH_TOKENシークレット

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

パッケージ
npmgithub-repos-manager-mcp

ツール

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

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

詳細

GitHub の svgrepo ロゴ GitHub Repos Manager MCP サーバー

トークンベースの GitHub 自動化管理。最適なパフォーマンスを実現する Docker 不要の設計、きめ細かな制御が可能な柔軟な設定、API との直接連携による 89 個のツールを備えています。

MCP クライアント(Claude Desktop、Roo Code、Cline、Cursor、Windsurf など)から GitHub のパーソナルアクセストークンを使って GitHub リポジトリを操作できる、包括的な Model Context Protocol(MCP)サーバーです。

このツールを使うと、GitHub トークンだけで GitHub リポジトリを簡単に管理できます。Docker を使わないことで不要な複雑さを避け、API と直接連携して、迅速かつ効果的に処理します。

このサーバーは Node.js で構築されており、GitHub API を活用して最適なパフォーマンスを実現しながら、リポジトリ管理、Issue の追跡、コラボレーション管理などに対応する包括的なツールキットを提供します。

クイックセットアップと MCP クライアントの設定に移動

🚀 他の GitHub 自動化 MCP サーバーに対する主な利点

🎯 シンプルさ:トークンベースのアクセスにより、複雑さを解消します。 🌿 効率性:Docker が不要なため、軽量で最適なパフォーマンスを実現します。 💪 パワー:API と直接連携する 89 個のツールにより、比類のない柔軟性を提供します。 🔒 柔軟性:設定可能なツールにより、きめ細かな制御が可能です。

🎯 簡単なセットアップと操作

✅ Docker は不要 - どこでも実行できるシンプルな Node.js サーバーです
✅ トークンを 1 つ設定するだけ - GitHub のパーソナルアクセストークンだけで動作します
✅ API と直接連携 - gh CLI に依存せず、より高速で信頼性に優れています
✅ 設定不要 - トークンを設定するだけですぐに使えます

🔒 高度なセキュリティと制御

✅ 許可するリポジトリ - 特定のリポジトリまたはオーナーに操作を制限できます
✅ ツール管理 - 特定のツールを有効/無効にして、きめ細かく制御できます
✅ デフォルトリポジトリ - ワークフローを効率化するためのデフォルトリポジトリを設定できます
✅ 柔軟な権限設定 - サーバーがアクセスできる対象を正確に設定できます

💪 強力な機能

✅ 包括的なツールキット - GitHub のワークフロー全体に対応する、強力な 89 個のツール
✅ ブランチとコミットの管理 - ブランチの作成、履歴の確認、変更の比較
✅ 画像アップロード対応 - Issue に画像を直接アップロードして埋め込めます
✅ 高度なフィルタリング - 複数の条件で並べ替え、絞り込み、検索ができます
✅ レート制限への対応 - GitHub API のレート制限を処理する機能を内蔵しています

🎯 充実した機能

📁 リポジトリ管理
  • 公開/非公開/すべての表示設定や並べ替えオプションで絞り込めるスマートなリポジトリ一覧
  • 統計情報、URL、メタデータなどを含む詳細なリポジトリ情報
  • 特定のブランチやコミットにも対応したファイルとディレクトリの閲覧
  • 高度な並べ替え機能を備えた、GitHub 全体を対象とするリポジトリ検索
  • ワークフローを効率化するためのデフォルトリポジトリの設定
🎫 高度な Issue 管理
  • Issue のライフサイクル全体に対応 - 作成、編集、一覧表示、状態の管理
  • リッチコンテンツに対応 - Issue に画像を直接アップロードして埋め込めます
  • ラベル管理 - カスタムラベルの追加、削除、整理
  • 担当者管理 - チームメンバーの割り当てと解除
  • Issue のロックとロック解除 - 理由をカスタマイズできます
  • コメントシステム - Issue コメントの作成、編集、削除、一覧表示
  • 状態管理 - Issue のオープン、クローズ、進行状況の追跡
🔄 プルリクエスト管理
  • 状態での絞り込みと並べ替えができるプルリクエスト一覧
  • ブランチの詳細やステータスを含む包括的な PR 情報
🌿 ブランチとコミットの管理
  • ブランチ操作 - 保護ステータスと最新のコミットを含む、すべてのブランチの一覧表示
  • ブランチの作成 - 既存のブランチまたはコミットから新しいブランチを作成
  • コミット履歴 - 高度なフィルタリング(日付、作成者、ブランチ)でコミット履歴を確認
  • コミットの詳細 - ファイルの変更を含む、包括的なコミット情報を取得
  • コミットの比較 - 任意の2つのコミット、ブランチ、またはタグを比較して差分を確認
👥 コラボレーションとユーザー管理
  • 任意のGitHubユーザーまたは自身のアカウントのユーザープロフィール情報
  • 権限によるフィルタリングに対応したリポジトリコラボレーターの管理
  • アクセスと権限を管理するためのチームコラボレーションツール
🎨 高度な機能
  • 画像のアップロードと埋め込み - ローカルの画像をGitHubに直接アップロード
  • 一括操作 - 複数の担当者、ラベル、コメントを管理
  • 柔軟な認証 - GitHub APIへの安全なトークンベースのアクセス
  • スマートなエラー処理 - 包括的なエラー報告と復旧

前提条件

最小限の要件 — これだけで簡単です!
  1. Node.js(バージョン18以降)— 以上です!
  2. GitHub Personal Access Token(PAT) — 必要な設定はこれだけです
    • GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic) または Fine-grained tokens に移動します。
    • 次のスコープを少なくとも含めて、新しいトークンを生成します。
      • repo(プライベートリポジトリの完全な制御)— すべての機能を利用するには推奨です。
      • user:read または user:email(ユーザープロフィールデータの読み取り)。
      • read:org(組織情報へのアクセスが必要な場合)。
    • 重要:このトークンは安全に保管してください。このサーバー用のMCPクライアント設定に直接指定する必要があります(下記の手順3を参照)。

クイックセットアップ

npxを使用する(最も簡単 — インストール不要!)

Node.jsがインストールされていることを確認してから、npxを使用してサーバーを直接実行します。 GitHubトークンをGH_TOKENという名前の環境変数としてエクスポートするか、MCPクライアント設定に含めていることを確認してください。

クローンやインストールをせずに、このサーバーを直接実行できます。

# Run directly with npx
npx -y github-repos-manager-mcp

macOS/Linuxの場合:

{
  "mcpServers": {
    "github-repos-manager": {
      "command": "npx",
      "args": [
        "-y",
        "github-repos-manager-mcp"
      ],
      "env": {
        "GH_TOKEN": "ghp_YOUR_ACTUAL_TOKEN_HERE"
      }
    }
  }
}

Windowsの場合、環境によってはnpxの代わりにnpx.cmdを使用する必要があります:

{
  "mcpServers": {
    "github-repos-manager": {
      "command": "npx.cmd",
      "args": [
        "-y",
        "github-repos-manager-mcp"
      ],
      "env": {
        "GH_TOKEN": "ghp_YOUR_ACTUAL_TOKEN_HERE"
      }
    }
  }
}

このコマンドは、ローカルに何もインストールせずに、サーバーの最新バージョンを自動的にダウンロードして実行します。

クローン、インストールしてローカルで実行する

サーバーをローカルで実行する場合は、リポジトリをクローンして依存関係をインストールします。

git clone https://github.com/kurdin/github-repos-manager.git
cd github-repos-manager
npm install

次に、server.cjsのフルパスを使用してローカルサーバーを指定するよう、MCPクライアントを設定します。

{
  "mcpServers": {
    "github-repos-manager": {
      "command": "node",
      "args": ["/full/path/to/your/project/github-repos-manager-mcp/server.cjs"],
      "env": {
        "GH_TOKEN": "ghp_YOUR_ACTUAL_TOKEN_HERE"
      }
    }
  }
}

重要:"ghp_YOUR_ACTUAL_TOKEN_HERE"を実際のGitHub Personal Access Tokenに置き換えてください。

3. サーバーをテストする

MCPクライアントでserver.cjsへの正しいパスとGH_TOKENを設定すると、クライアントがいずれかのツールを使用しようとしたときに、サーバーが自動的に起動します。

基本的な認証を確認するためにサーバースクリプトを直接テストすることもできます。ただし、このテストでは、シェルでGH_TOKEN環境変数を一時的に設定する必要があります。

# For direct script testing ONLY (normal operation uses MCP client config)
export GH_TOKEN="ghp_YOUR_TEMPORARY_TEST_TOKEN"
node server.cjs
unset GH_TOKEN # Important: unset after testing

成功すると、「GitHub API authentication successful」と「GitHub Repos Manager MCP Server running on stdio」が表示されます。

注:デフォルトリポジトリが設定されるのは、環境変数やコマンドライン引数で明示的に設定するか、set_default_repoツールを使用した場合のみです。デフォルトリポジトリが自動的に設定されることはありません。

Claude Desktopのclaude_desktop_config.jsonのファイル保存場所の例:

  • macOS:~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows:%APPDATA%\Claude\claude_desktop_config.json
  • Linux:~/.config/Claude/claude_desktop_config.json(パスは異なる場合があります)

⚙️ 設定オプション

デフォルトリポジトリの設定

ワークフローを効率化し、すべてのコマンドでownerとrepoを指定する手間を省くため、デフォルトリポジトリを設定できます。設定方法は3通りあります。

1. 環境変数(MCP クライアントに推奨)

MCP クライアントの設定に環境変数を追加します。

npx を使用する場合:

{
  "mcpServers": {
    "github-repos-manager": {
      "command": "npx",
      "args": ["-y", "github-repos-manager-mcp"],
      "env": {
        "GH_TOKEN": "ghp_YOUR_ACTUAL_TOKEN_HERE",
        "GH_DEFAULT_OWNER": "octocat",
        "GH_DEFAULT_REPO": "Hello-World"
      }
    }
  }
}

ローカルインストールを使用する場合:

{
  "mcpServers": {
    "github-repos-manager": {
      "command": "node",
      "args": ["/full/path/to/your/project/github-repos-manager-mcp/server.cjs"],
      "env": {
        "GH_TOKEN": "ghp_YOUR_ACTUAL_TOKEN_HERE",
        "GH_DEFAULT_OWNER": "octocat",
        "GH_DEFAULT_REPO": "Hello-World"
      }
    }
  }
}
2. コマンドライン引数

サーバーを直接実行する際に、デフォルトのリポジトリ設定を指定できます。

node server.cjs --default-owner octocat --default-repo Hello-World
3. 実行時のツール呼び出し

会話中に set_default_repo ツールを使用して、デフォルトのリポジトリを設定または変更します。

  • 「デフォルトのリポジトリを microsoft/vscode に設定」
  • 「デフォルトを自分のリポジトリ username/my-project に変更」

設定の優先順位(高い順):

  1. コマンドライン引数(--default-owner、--default-repo)
  2. 環境変数(GH_DEFAULT_OWNER、GH_DEFAULT_REPO)
  3. 実行時のツール呼び出し(set_default_repo)

デフォルトのリポジトリを設定するメリット:

  • すべてのコマンドで owner と repo を指定する必要がなくなります
  • 主に1つのリポジトリを使用する場合、ワークフローが効率化されます
  • セッション中いつでも set_default_repo ツールを使用して変更できます
  • 任意の設定です。デフォルトのリポジトリを設定しなくても、すべてのツールを使用できます

デフォルトのリポジトリを設定すると、コマンドから owner と repo のパラメーターを省略できます。

  • 「microsoft/vscode のイシューを一覧表示」の代わりに
  • 「イシューを一覧表示」と言うだけで済みます(デフォルトに microsoft/vscode を設定した後)
リポジトリアクセス制御

GH_ALLOWED_REPOS 環境変数または --allowed-repos コマンドライン引数を使用して、サーバーがアクセスできるリポジトリを制限できます。これは、サーバーが承認済みのリポジトリに対してのみ操作できるようにするセキュリティ機能です。

許可するリポジトリの設定

1. 環境変数(MCP クライアント向け)

{
  "mcpServers": {
    "github-repos-manager": {
      "command": "node",
      "args": ["/path/to/server.cjs"],
      "env": {
        "GH_TOKEN": "ghp_YOUR_TOKEN",
        "GH_ALLOWED_REPOS": "owner1/repo1,owner2/repo2,owner3"
      }
    }
  }
}

2. コマンドライン引数

node server.cjs --allowed-repos "microsoft/vscode,facebook/react,google"

仕組み:

  • 完全なリポジトリパス(owner/repo):その特定のリポジトリのみが許可されます
  • オーナーのみ(owner):そのオーナーのすべてのリポジトリが許可されます
  • 組み合わせ:両方の形式を組み合わせて指定できます

例:

  • "microsoft/vscode" — Microsoft の vscode リポジトリのみ
  • "kurdin" — kurdin が所有するすべてのリポジトリ
  • "kurdin,microsoft/vscode,facebook/react" — kurdin のすべてのリポジトリと、指定したリポジトリ
ツールアクセス制御
特定のツールを無効にする

GH_DISABLED_TOOLS 環境変数を設定するか、--disabled-tools コマンドライン引数を使用して、利用できないようにするツールを無効にします。

特定のツールのみを許可する

セキュリティを最大限に高めるには、GH_ALLOWED_TOOLS 環境変数を設定するか、--allowed-tools コマンドライン引数を使用して、サーバーが特定のツールのみを許可するように制限できます。

重要: GH_ALLOWED_TOOLS と GH_DISABLED_TOOLS の両方が設定されている場合は、GH_ALLOWED_TOOLS が優先されます。

設定の完全な例

npx を使用する場合(macOS/Linux):

{
  "mcpServers": {
    "github-repos-manager": {
      "command": "npx",
      "args": ["-y", "github-repos-manager-mcp"],
      "env": {
        "GH_TOKEN": "ghp_YOUR_ACTUAL_TOKEN_HERE",
        "GH_DEFAULT_OWNER": "mycompany",
        "GH_DEFAULT_REPO": "main-project",
        "GH_ALLOWED_REPOS": "mycompany,trusted-org/specific-repo",
        "GH_ALLOWED_TOOLS": "list_issues,create_issue,list_prs,get_repo_info"
      }
    }
  }
}

npx を使用する場合(Windows):

{
  "mcpServers": {
    "github-repos-manager": {
      "command": "npx.cmd",
      "args": ["-y", "github-repos-manager-mcp"],
      "env": {
        "GH_TOKEN": "ghp_YOUR_ACTUAL_TOKEN_HERE",
        "GH_DEFAULT_OWNER": "mycompany",
        "GH_DEFAULT_REPO": "main-project",
        "GH_ALLOWED_REPOS": "mycompany,trusted-org/specific-repo",
        "GH_ALLOWED_TOOLS": "list_issues,create_issue,list_prs,get_repo_info"
      }
    }
  }
}

ローカルインストールを使用する場合:

{
  "mcpServers": {
    "github-repos-manager": {
      "command": "node",
      "args": ["/full/path/to/your/project/github-repos-manager-mcp/server.cjs"],
      "env": {
        "GH_TOKEN": "ghp_YOUR_ACTUAL_TOKEN_HERE",
        "GH_DEFAULT_OWNER": "mycompany",
        "GH_DEFAULT_REPO": "main-project",
        "GH_ALLOWED_REPOS": "mycompany,trusted-org/specific-repo",
        "GH_ALLOWED_TOOLS": "list_issues,create_issue,list_prs,get_repo_info"
      }
    }
  }
}

コマンドラインでの同等の設定:

node server.cjs \
  --default-owner mycompany \
  --default-repo main-project \
  --allowed-repos "mycompany,trusted-org/specific-repo" \
  --allowed-tools "list_issues,create_issue,list_prs,get_repo_info"

🛠️ ツールの完全なリファレンス

このサーバーは、GitHub ワークフローを包括的に管理するための89 個のツールを提供します。

プルリクエスト管理の強化
  • create_pull_request:タイトル、本文、ブランチの指定を含めて、新しいプルリクエストを作成します。
    • 引数:owner(string、任意)、repo(string、任意)、title(string、必須)、body(string、任意)、head(string、必須 - 変更を含むブランチ)、base(string、必須 - マージ先のブランチ)、draft(boolean、任意)、maintainer_can_modify(boolean、任意)
  • edit_pull_request:既存のプルリクエストのタイトル、本文、状態、またはベースブランチを更新します。
    • 引数:owner(string、任意)、repo(string、任意)、pull_number(integer、必須)、title(string、任意)、body(string、任意)、state(string、任意 - "open" または "closed")、base(string、任意)
  • get_pr_details:ステータスやマージの詳細を含む、プルリクエストの包括的な情報を取得します。
    • 引数:owner(string、任意)、repo(string、任意)、pull_number(integer、必須)
  • list_pr_reviews:ステータスやコメントとともに、プルリクエストに対するすべてのレビューを一覧表示します。
    • 引数:owner(string、任意)、repo(string、任意)、pull_number(integer、必須)、per_page(integer、任意、デフォルトは 30)
  • create_pr_review:コメントと承認ステータスを含むレビューをプルリクエストに送信します。
    • 引数:owner(string、任意)、repo(string、任意)、pull_number(integer、必須)、body(string、任意)、event(string、任意 - "APPROVE"、"REQUEST_CHANGES"、"COMMENT")、comments(array、任意)
  • list_pr_files:追加・削除の統計情報とともに、プルリクエストで変更されたすべてのファイルを一覧表示します。
    • 引数:owner(string、任意)、repo(string、任意)、pull_number(integer、必須)、per_page(integer、任意、デフォルトは 30)
ファイルとコンテンツの管理
  • create_file:コンテンツとコミットメッセージを指定して、リポジトリに新しいファイルを作成します。
    • 引数:owner(string、任意)、repo(string、任意)、path(string、必須)、content(string、必須)、message(string、必須)、branch(string、任意)、committer(object、任意)
  • update_file:新しいコミットを作成して、既存のファイルのコンテンツを更新します。
    • 引数:owner(string、任意)、repo(string、任意)、path(string、必須)、content(string、必須)、message(string、必須)、sha(string、必須 - 現在のファイル SHA)、branch(string、任意)
  • upload_file:ローカルファイルをリポジトリにアップロードします(バイナリファイルにも対応)。
    • 引数:owner(string、任意)、repo(string、任意)、local_path(string、必須)、repo_path(string、必須)、message(string、必須)、branch(string、任意)
  • delete_file:コミットメッセージを指定して、リポジトリからファイルを削除します。
    • 引数:owner(string、任意)、repo(string、任意)、path(string、必須)、message(string、必須)、sha(string、必須 - 現在のファイル SHA)、branch(string、任意)
セキュリティとアクセス管理
  • list_deploy_keys:リポジトリのデプロイキーを権限とともにすべて一覧表示します。
    • 引数:owner(文字列、任意)、repo(文字列、任意)、per_page(整数、任意、デフォルトは30)
  • create_deploy_key:安全にアクセスできるよう、リポジトリに新しいデプロイキーを追加します。
    • 引数:owner(文字列、任意)、repo(文字列、任意)、title(文字列、必須)、key(文字列、必須 - 公開 SSH キー)、read_only(ブール値、任意、デフォルトはtrue)
  • delete_deploy_key:リポジトリからデプロイキーを削除します。
    • 引数:owner(文字列、任意)、repo(文字列、任意)、key_id(整数、必須)
  • list_webhooks:リポジトリに設定されているすべての Webhook を一覧表示します。
    • 引数:owner(文字列、任意)、repo(文字列、任意)、per_page(整数、任意、デフォルトは30)
  • create_webhook:リポジトリのイベント用に新しい Webhook を作成します。
    • 引数:owner(文字列、任意)、repo(文字列、任意)、config(オブジェクト、必須 - url と content_type)、events(配列、任意、デフォルトは["push"])、active(ブール値、任意)
  • edit_webhook:Webhook の設定、イベント、または有効状態を更新します。
    • 引数:owner(文字列、任意)、repo(文字列、任意)、hook_id(整数、必須)、config(オブジェクト、任意)、events(配列、任意)、active(ブール値、任意)
  • delete_webhook:リポジトリから Webhook を削除します。
    • 引数:owner(文字列、任意)、repo(文字列、任意)、hook_id(整数、必須)
  • list_secrets:リポジトリのシークレットを一覧表示します(名前のみ。値は暗号化されています)。
    • 引数:owner(文字列、任意)、repo(文字列、任意)、per_page(整数、任意、デフォルトは30)
  • update_secret:Actions 用のリポジトリシークレットを作成または更新します。
    • 引数:owner(文字列、任意)、repo(文字列、任意)、secret_name(文字列、必須)、encrypted_value(文字列、必須)、key_id(文字列、必須)
GitHub Actions とワークフロー

注:これらのツールは、今後の GitHub Actions 統合に向けたプレースホルダーです。

  • list_workflows:リポジトリ内の GitHub Actions ワークフローをすべて一覧表示します。
  • list_workflow_runs:フィルタリングオプションを指定してワークフローの実行を一覧表示します。
  • get_workflow_run_details:ワークフローの実行に関する詳細情報を取得します。
  • trigger_workflow:ワークフローのディスパッチイベントを手動でトリガーします。
  • download_workflow_artifacts:ワークフローの実行からアーティファクトをダウンロードします。
  • cancel_workflow_run:実行中のワークフローをキャンセルします。
リポジトリの分析とインサイト
  • get_repo_stats:コントリビューターの活動を含む、リポジトリの包括的な統計情報を取得します。
    • 引数:owner(文字列、任意)、repo(文字列、任意)
  • list_repo_topics:リポジトリに関連付けられたトピック(タグ)をすべて一覧表示します。
    • 引数:owner(文字列、任意)、repo(文字列、任意)
  • update_repo_topics:リポジトリを見つけやすくするため、トピックを更新します。
    • 引数:owner(文字列、任意)、repo(文字列、任意)、names(文字列の配列、必須)
  • get_repo_languages:リポジトリで使用されているプログラミング言語を、バイト数とともに取得します。
    • 引数:owner(文字列、任意)、repo(文字列、任意)
  • list_stargazers:リポジトリにスターを付けたユーザーを一覧表示します。
    • 引数:owner(文字列、任意)、repo(文字列、任意)、per_page(整数、任意、デフォルトは30)
  • list_watchers:通知を受け取るためにリポジトリをウォッチしているユーザーを一覧表示します。
    • 引数:owner(文字列、任意)、repo(文字列、任意)、per_page(整数、任意、デフォルトは30)
  • list_forks:並べ替えオプションを指定して、リポジトリのフォークをすべて一覧表示します。
    • 引数:owner(文字列、任意)、repo(文字列、任意)、sort(文字列、任意 - "newest"、"oldest"、"stargazers")、per_page(整数、任意)
  • get_repo_traffic:閲覧数やクローン数を含むリポジトリのトラフィックデータを取得します(管理者アクセスが必要です)。
    • 引数:owner(文字列、任意)、repo(文字列、任意)
高度な検索と探索
  • search_issues: GitHub 全体からイシューとプルリクエストを検索します。
    • 引数: query(string、必須)、sort(string、任意 — "comments", "reactions", "interactions", "created", "updated")、order(string、任意 — "asc", "desc")、per_page(integer、任意)
  • search_commits: リポジトリ全体からコミットを検索します。
    • 引数: query(string、必須)、sort(string、任意 — "author-date", "committer-date")、order(string、任意)、per_page(integer、任意)
  • search_code: GitHub リポジトリ全体からコードを検索します。
    • 引数: query(string、必須)、sort(string、任意 — "indexed")、order(string、任意)、per_page(integer、任意)
  • search_users: ユーザーと組織を検索します。
    • 引数: query(string、必須)、sort(string、任意 — "followers", "repositories", "joined")、order(string、任意)、per_page(integer、任意)
  • search_topics: リポジトリのトピックを検索します。
    • 引数: query(string、必須)、per_page(integer、任意、デフォルト 30)
組織の管理
  • list_org_repos: 組織内のすべてのリポジトリを一覧表示します。
    • 引数: org(string、必須)、type(string、任意 — "all", "public", "private", "forks", "sources", "member")、sort(string、任意)、per_page(integer、任意)
  • list_org_members: 組織のメンバーを一覧表示します。
    • 引数: org(string、必須)、filter(string、任意 — "2fa_disabled", "all")、role(string、任意 — "all", "admin", "member")、per_page(integer、任意)
  • get_org_info: 組織の詳細情報を取得します。
    • 引数: org(string、必須)
  • list_org_teams: 組織内のすべてのチームを一覧表示します。
    • 引数: org(string、必須)、per_page(integer、任意、デフォルト 30)
  • get_team_members: 指定したチームのメンバーを一覧表示します。
    • 引数: org(string、必須)、team_slug(string、必須)、role(string、任意 — "member", "maintainer", "all")、per_page(integer、任意)
  • manage_team_repos: チームのリポジトリアクセス権を追加または削除します。
    • 引数: org(string、必須)、team_slug(string、必須)、owner(string、必須)、repo(string、必須)、permission(string、任意 — "pull", "push", "admin")、action(string、必須 — "add" または "remove")
プロジェクトと高度な機能

注: これらのツールの一部は、今後の機能強化に向けたプレースホルダーです。

  • list_repo_projects: リポジトリのプロジェクト(クラシックプロジェクト)を一覧表示します。
  • code_quality_checks: 今後追加予定のコード品質分析用プレースホルダーです。
  • custom_dashboards: カスタムダッシュボード作成用のプレースホルダーです。
  • automated_reporting: 自動レポート生成用のプレースホルダーです。
  • notification_management: 通知設定用のプレースホルダーです。
  • release_management: リリース管理機能用のプレースホルダーです。
  • dependency_analysis: 依存関係のスキャン用プレースホルダーです。
リポジトリ管理ツール
  • set_default_repo:以降のコマンドで使用するデフォルトのオーナーとリポジトリを設定し、ワークフローを効率化します。
    • 引数:owner(string、必須)、repo(string、必須)
  • list_repos:認証済みユーザーの GitHub リポジトリを、高度なフィルタリング機能を使って一覧表示します。
    • 引数:per_page(number、省略可、デフォルト 10、最大 100)、visibility(string、省略可、列挙値:"all"、"public"、"private"、デフォルト "all")、sort(string、省略可、列挙値:"created"、"updated"、"pushed"、"full_name"、デフォルト "updated")
  • get_repo_info:特定のリポジトリに関する統計情報やメタデータを含む包括的な情報を取得します。
    • 引数:owner(string、デフォルトが未設定の場合は必須)、repo(string、デフォルトが未設定の場合は必須)
  • search_repos:高度な並べ替えオプションを使って、GitHub 全体からリポジトリを検索します。
    • 引数:query(string、必須)、per_page(number、省略可、デフォルト 10、最大 100)、sort(string、省略可、列挙値:"stars"、"forks"、"help-wanted-issues"、"updated"、デフォルト "stars")
  • get_repo_contents:ブランチやコミットを指定して、あらゆるリポジトリ内のファイルやディレクトリを閲覧します。
    • 引数:owner(string、デフォルトが未設定の場合は必須)、repo(string、デフォルトが未設定の場合は必須)、path(string、省略可、デフォルト "")、ref(string、省略可、例:ブランチ名またはコミット SHA)
高度なイシュー管理ツール
  • list_issues:状態によるフィルタリングと包括的なページネーション機能を使って、イシューを一覧表示します。
    • 引数:owner(string、デフォルトが未設定の場合は必須)、repo(string、デフォルトが未設定の場合は必須)、state(string、省略可、列挙値:"open"、"closed"、"all"、デフォルト "open")、per_page(number、省略可、デフォルト 10、最大 100)
  • create_issue:画像のアップロード、ラベル、担当者の指定に対応した機能豊富なイシューを作成します。
    • 引数:owner(string、デフォルトが未設定の場合は必須)、repo(string、デフォルトが未設定の場合は必須)、title(string、必須)、body(string、省略可)、image_path(string、省略可、画像のローカルパス全体)、labels(文字列の配列、省略可)、assignees(文字列の配列、省略可)
  • edit_issue:タイトル、本文、状態、ラベル、担当者、画像のアップロードなど、既存のイシューを変更します。
    • 引数:owner(string、省略可)、repo(string、省略可)、issue_number(integer、必須)、title(string、省略可)、body(string、省略可)、state(string、省略可、列挙値:"open"、"closed")、image_path(string、省略可、画像のローカルパス全体)、labels(文字列の配列、省略可)、assignees(文字列の配列、省略可)
  • get_issue_details:特定のイシューに関する包括的な情報を取得します。
    • 引数:owner(string、省略可)、repo(string、省略可)、issue_number(integer、必須)
  • lock_issue:理由を指定してイシューをロックし、以降のコメントを防止します。
    • 引数:owner(string、省略可)、repo(string、省略可)、issue_number(integer、必須)、lock_reason(string、省略可、列挙値:"off-topic"、"too heated"、"resolved"、"spam")
  • unlock_issue:ロック済みのイシューを解除し、議論を再開できるようにします。
    • 引数:owner(string、省略可)、repo(string、省略可)、issue_number(integer、必須)
  • add_assignees_to_issue:イシューにチームメンバーを 1 人以上追加します。
    • 引数:owner(string、省略可)、repo(string、省略可)、issue_number(integer、必須)、assignees(文字列の配列、必須)
  • remove_assignees_from_issue:タスク管理を改善するため、イシューから担当者を削除します。
    • 引数:owner(string、省略可)、repo(string、省略可)、issue_number(integer、必須)、assignees(文字列の配列、必須)
Issue コメント管理ツール
  • list_issue_comments: タイムスタンプで絞り込んで、Issue のすべてのコメントを一覧表示します。
    • Args: owner (string, optional), repo (string, optional), issue_number (integer, required), per_page (integer, optional, default 30, max 100), since (string, optional, ISO 8601 format date-time)
  • create_issue_comment: 継続中の Issue の議論に新しいコメントを追加します。
    • Args: owner (string, optional), repo (string, optional), issue_number (integer, required), body (string, required)
  • edit_issue_comment: 修正や更新のために既存のコメントを編集します。
    • Args: owner (string, optional), repo (string, optional), comment_id (integer, required), body (string, required)
  • delete_issue_comment: コンテンツ管理上必要な場合にコメントを削除します。
    • Args: owner (string, optional), repo (string, optional), comment_id (integer, required)
Pull Request 管理ツール
  • list_prs: 状態で絞り込み、ページネーションを指定して Pull Request を一覧表示します。
    • Args: owner (string, required if no default), repo (string, required if no default), state (string, optional, enum: "open", "closed", "all", default "open"), per_page (number, optional, default 10, max 100)
ブランチとコミットの管理ツール
  • list_branches: 保護状態やコミット情報とともに、リポジトリ内のすべてのブランチを一覧表示します。
    • Args: owner (string, optional), repo (string, optional), protected_only (boolean, optional, default false), per_page (number, optional, default 30)
  • create_branch: 既存のブランチまたはコミットから新しいブランチを作成します。
    • Args: owner (string, optional), repo (string, optional), branch_name (string, required), from_branch (string, optional, defaults to repository default branch)
  • list_commits: 詳細情報や絞り込みオプションを指定して、リポジトリ内のコミットを一覧表示します。
    • Args: owner (string, optional), repo (string, optional), sha (string, optional, branch/tag/commit to list from), per_page (number, optional, default 20), since (string, optional, ISO 8601 date-time), until (string, optional, ISO 8601 date-time), author (string, optional, GitHub username or email)
  • get_commit_details: 変更されたファイルを含む、特定のコミットの詳細情報を取得します。
    • Args: owner (string, optional), repo (string, optional), commit_sha (string, required)
  • compare_commits: 2 つのコミットまたはブランチを比較して、差分を確認します。
    • Args: owner (string, optional), repo (string, optional), base (string, required, base branch or commit SHA), head (string, required, head branch or commit SHA)
ユーザーとコラボレーションのツール
  • get_user_info: 任意の GitHub ユーザーまたは自分のプロフィールの詳細情報を取得します。
    • Args: username (string, optional - defaults to authenticated user)
  • list_repo_collaborators: 権限に基づいて絞り込み、リポジトリのコラボレーターを一覧表示します。
    • Args: owner (string, optional), repo (string, optional), affiliation (string, optional, enum: "outside", "direct", "all", default "all"), permission (string, optional, enum: "pull", "triage", "push", "maintain", "admin"), per_page (integer, optional, default 30, max 100)
ラベルとマイルストーンの管理ツール
  • list_repo_labels:リポジトリ内のすべてのラベルを、色と説明とともに一覧表示します。
    • Args:owner(文字列、任意)、repo(文字列、任意)、per_page(整数、任意、デフォルト 30、最大 100)
  • create_label:課題を整理しやすくするため、色と説明を指定してカスタムラベルを作成します。
    • Args:owner(文字列、任意)、repo(文字列、任意)、name(文字列、必須)、color(文字列、任意、# を除いた 16 進数の色コード、デフォルト "f29513")、description(文字列、任意)
  • edit_label:名前、色、説明など、既存のラベルのプロパティを変更します。
    • Args:owner(文字列、任意)、repo(文字列、任意)、current_name(文字列、必須)、name(文字列、任意)、color(文字列、任意、# を除いた 16 進数の色コード)、description(文字列、任意)
  • delete_label:不要になったラベルをリポジトリから削除します。
    • Args:owner(文字列、任意)、repo(文字列、任意)、name(文字列、必須)
  • list_milestones:状態による絞り込みや並べ替えオプションを指定して、リポジトリのマイルストーンを一覧表示します。
    • Args:owner(文字列、任意)、repo(文字列、任意)、state(文字列、任意、列挙型:"open"、"closed"、"all"、デフォルト "open")、sort(文字列、任意、列挙型:"due_on"、"completeness"、デフォルト "due_on")、direction(文字列、任意、列挙型:"asc"、"desc"、デフォルト "asc")、per_page(整数、任意、デフォルト 30、最大 100)
  • create_milestone:プロジェクト計画のため、期限を指定して新しいマイルストーンを作成します。
    • Args:owner(文字列、任意)、repo(文字列、任意)、title(文字列、必須)、state(文字列、任意、列挙型:"open"、"closed"、デフォルト "open")、description(文字列、任意)、due_on(文字列、任意、ISO 8601 日時形式)
  • edit_milestone:タイトル、説明、状態、期限など、マイルストーンの詳細を更新します。
    • Args:owner(文字列、任意)、repo(文字列、任意)、milestone_number(整数、必須)、title(文字列、任意)、state(文字列、任意、列挙型:"open"、"closed")、description(文字列、任意)、due_on(文字列、任意、ISO 8601 日時形式)
  • delete_milestone:不要になったマイルストーンをリポジトリから削除します。
    • Args:owner(文字列、任意)、repo(文字列、任意)、milestone_number(整数、必須)

💡 使用例とワークフロー

設定が完了したら、MCP クライアント(例:Claude)に依頼して、さまざまな GitHub 操作を実行できます。

リポジトリの検索と管理
  • 「自分の GitHub リポジトリを一覧表示し、作成日順に並べ替えて、プライベートリポジトリだけを表示してください。」
  • 「ワークフローを簡単にするため、デフォルトのリポジトリを octocat/Spoon-Knife に設定してください。」
  • 「microsoft/vscode リポジトリの詳細情報を取得してください。」
  • 「develop ブランチにある microsoft/vscode の src/main.js ファイルの内容を表示してください。」
  • 「デフォルトのリポジトリの develop ブランチにある src/main.js ファイルの内容を表示してください。」(デフォルトのリポジトリの設定が必要です)
  • 「my-org/my-repo の管理者権限を持つすべてのコラボレーターを一覧表示してください。」
  • 「'tensorflow examples language:python' に一致するリポジトリを検索し、スター数順に並べ替えてください。」
高度なイシュー管理
  • "my-org/my-repo に、タイトル「Urgent: UI Bug」、本文「The login button is broken on mobile.」でイシューを作成します。user1 と user2 を割り当て、bug ラベルを追加します。"
  • "タイトル「Feature Request」でイシューを作成し、enhancement ラベルを追加します。" (デフォルトのリポジトリの設定が必要です)
  • "microsoft/vscode のイシュー #42 に、/Users/me/screenshots/bug_report.png のスクリーンショットをアップロードします。"
  • "デフォルトのリポジトリのイシュー #42 に、/Users/me/screenshots/bug_report.png のスクリーンショットをアップロードします。" (デフォルトのリポジトリの設定が必要です)
  • "イシュー #15 を編集します。タイトルを「Feature Request: Dark Mode」に変更し、enhancement ラベルを追加して、クローズします。"
  • "イシュー #23 を「resolved」の理由でロックし、これ以上の議論を防ぎます。"
  • "イシュー #7 のすべてのメタデータと現在の状態を含む詳細情報を取得します。"
  • "イシュー #12 から old-assignee を削除し、代わりに new-assignee を追加します。"
イシューのディスカッション管理
  • "先週のイシュー #7 のすべてのコメントを一覧表示します。"
  • "イシュー #15 に「This looks great! Ready for merge.」というコメントを追加します。"
  • "コメント ID 123456 を「Updated: This needs more testing before merge.」に編集します。"
  • "イシュー #20 からコメント ID 789012 を削除します。"
ラベルとマイルストーンの管理
  • "my-org/my-repo のすべてのラベルを一覧表示し、現在の整理方法を確認します。"
  • "デフォルトのリポジトリのすべてのラベルを一覧表示し、現在の整理方法を確認します。" (デフォルトのリポジトリの設定が必要です)
  • "「urgent」という新しいラベルを、赤色(#ff0000)、説明「Requires immediate attention」で作成します。"
  • "「bug」ラベルの色をオレンジ色(#FFA500)に変更し、説明を更新します。"
  • "リポジトリから古くなった「legacy」ラベルを削除します。"
  • "my-org/project-x のすべてのオープンマイルストーンを、期限順に一覧表示します。"
  • "期限「2025-12-31T23:59:59Z」、説明「Major version release」で「v2.0 Release」マイルストーンを作成します。"
  • "マイルストーン #3 のタイトルを「Q2 Goals」に変更し、期限を延長します。"
  • "プロジェクトに不要になったマイルストーン #5 を削除します。"
プルリクエストとコラボレーション
  • "microsoft/vscode のすべてのオープンプルリクエストを一覧表示します。"
  • "デフォルトのリポジトリのすべてのオープンプルリクエストを一覧表示します。" (デフォルトのリポジトリの設定が必要です)
  • "my-org/project-x の先月のクローズ済みプルリクエストを表示します。"
  • "自分の GitHub ユーザープロフィール情報を取得します。"
  • "github_username のユーザープロフィールの詳細を取得します。"
ブランチとコミットの管理
  • "my-org/my-repo のすべてのブランチを一覧表示し、保護状態を表示します。"
  • "デフォルトのリポジトリのすべてのブランチを一覧表示し、保護状態を表示します。" (デフォルトのリポジトリの設定が必要です)
  • "my-org/secure-repo の保護されたブランチのみを表示します。"
  • "develop ブランチから feature/dark-mode という新しい機能ブランチを作成します。"
  • "main ブランチの直近10件のコミットを一覧表示します。"
  • "先週の john-doe によるすべてのコミットを表示します。"
  • "すべてのファイル変更を含む、コミット abc123def の詳細情報を取得します。"
  • "main ブランチと feature/new-ui を比較し、違いを確認します。"
  • "タグ v1.0.0 と v2.0.0 の間のコミット履歴を表示します。"
ワークフロー自動化の例
  • "my-org/main-project をデフォルトに設定してから、自分に割り当てられたすべてのオープンイシューを一覧表示します。"
  • "タイトル「Login Error」のバグ報告イシューを作成し、/path/to/error.png のエラーのスクリーンショットをアップロードして、dev-team に割り当て、bug と high-priority のラベルを追加します。"
  • "イシュー #50 に、担当者 reviewer1 を追加し、「resolved」の理由でロックして、最後のコメント「Issue resolved in PR #51」を追加します。"

🔧 トラブルシューティング

認証に関する問題
  1. トークンの問題:

    • MCP クライアントの設定にある GH_TOKEN の値が正しく、タイプミスがないことを再確認してください
    • トークンの有効期限が切れていないこと、または取り消されていないことを確認してください
    • curl を使ってトークンの有効性を確認してください:
      export TEMP_TOKEN="ghp_YOUR_TOKEN_TO_TEST"
      curl -H "Authorization: token $TEMP_TOKEN" https://api.github.com/user
      unset TEMP_TOKEN
      
      GitHub のユーザー情報が返されるはずです。
  2. 設定に関する問題:

    • GH_TOKEN が MCP クライアントのサーバー設定にある env オブジェクト内に正しく配置されていることを確認してください
    • server.cjs へのパスが絶対パスで、正しいことを確認してください
    • Node.js のバージョンが 18 以上であることを確認してください:node --version
    • デフォルトリポジトリ:GH_DEFAULT_OWNER と GH_DEFAULT_REPO の環境変数を設定している場合は、値が正しく、リポジトリが存在することを確認してください
  3. 権限に関する問題:

    • トークンに必要なスコープが付与されていることを確認してください:
      • repo または public_repo(リポジトリへのアクセス用)
      • user(ユーザー情報用)
      • read:org(必要に応じて、組織へのアクセス用)
    • デフォルトリポジトリへのアクセス:デフォルトリポジトリを使用する場合、トークンがその特定のリポジトリにアクセスできることを確認してください
デフォルトリポジトリの設定に関する問題
  • 環境変数が機能しない:MCP クライアントの設定で GH_DEFAULT_OWNER と GH_DEFAULT_REPO のスペルを再確認してください
  • コマンドライン引数:--default-owner と --default-repo フラグを使用する際は、構文が正しいことを確認してください
  • ツール呼び出しに関する問題:set_default_repo ツールでは、owner/repo 形式の正確なリポジトリ名を使用してください
  • 上書きの動作:実行時のツール呼び出しで環境変数を上書きでき、コマンドライン引数は両方を上書きすることを覚えておいてください
パフォーマンスとレート制限
  • GitHub API のレート制限:認証済みユーザーは 1 時間あたり 5,000 リクエストまで
  • 制限に達した場合は、リセットまで待つか、別のトークンを使用してください
  • サーバーにはレート制限エラーの処理機能が組み込まれています
よくあるセットアップの問題
  • パスに関する問題:Claude Desktop の設定にある絶対パスが正しいことを確認してください
  • Node.js のバージョン:Node.js 18 以上を使用していることを確認してください
  • ファイルの権限:server.cjs が実行可能であることを確認してください:chmod +x server.cjs
画像アップロードのトラブルシューティング
  • 指定したローカルパスに画像ファイルが存在することを確認してください
  • 対応形式:PNG、JPG、JPEG、GIF、WebP
  • ファイルの権限とアクセス可能性を確認してください
  • ファイルが破損していないこと、またサイズが大きすぎないことを確認してください(GitHub にはサイズ制限があります)

🚦 API のレート制限とパフォーマンス

  • 標準のレート制限:GitHub API では、認証済みユーザーは 1 時間あたり 5,000 リクエストまで利用できます
  • 組み込みの処理機能:サーバーには、レート制限に関するレスポンスを包括的に処理する機能が備わっています
  • パフォーマンスの最適化:HTTP リクエストを直接送信することで、CLI ツールよりも高速なレスポンスを実現します
  • キャッシュに関する推奨事項:頻繁にアクセスするデータには、キャッシュ戦略の導入を検討してください

🔒 セキュリティのベストプラクティス

  • トークンのセキュリティ:GH_TOKEN をバージョン管理にコミットしたり、公開したりしないでください
  • 最小限の権限:用途に必要な最小限のスコープのみを持つトークンを使用してください
  • 環境変数:MCP クライアントの設定にある env ブロックを通じて、必ずトークンを指定してください
  • トークンのローテーション:セキュリティを強化するため、GitHub トークンを定期的にローテーションしてください
  • 安全な保存:システムの認証情報管理機能を使って、トークンを安全に保存してください

🔄 開発とコントリビューション

ローカル開発のセットアップ
# Clone and setup
mkdir github-repos-manager-mcp
cd github-repos-manager-mcp
# Add the server files
npm install
chmod +x server.cjs

# For development testing with nodemon
npm run dev
MCP クライアントでのテスト

推奨される方法は、MCP クライアント(例:Claude Desktop)に適切な GH_TOKEN を設定し、開発版を参照するよう構成することです。server.cjs を変更した場合は、サーバー接続を再起動する必要があります。

スクリプトの直接テスト
# Temporarily set token for quick verification
export GH_TOKEN="ghp_YOUR_DEVELOPMENT_TOKEN"
node server.cjs
unset GH_TOKEN  # Always clean up after testing

📜 ライセンス

MIT License - この MCP サーバーは自由に使用、変更、配布できます。

MseeP.ai Security Assessment Badge

コメント

MCP は初めてですか?

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

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