GitHub MCP Server について
GitHub MCP Serverは、GitHub API向けの非推奨MCPサーバーです。READMEではGitHub公式MCPサーバーの利用を推奨しており、リポジトリ、ブランチ、Issue、プルリクエスト、ファイル、リリースを管理するツールを備えていました。
主な機能
- 01リポジトリの取得と作成
- 02ブランチの一覧、作成、削除
- 03Issueとプルリクエストの管理
- 04リポジトリファイルの作成と更新
- 05リリースの作成
- 06入力検証とAPIレート制限への対応
活用シーン
- 01GitHubリポジトリの確認や作成
- 02ブランチとIssueの管理
- 03プルリクエストの作成、更新、マージ
- 04リポジトリファイルの更新やリリース作成
MCP 対応
MCPクライアントにGitHub API操作のツールを公開していました。プロジェクトは非推奨で、READMEはGitHub公式MCPサーバーを推奨しています。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
🚨 このリポジトリは非推奨です。🚨
代わりに、公式の GitHub MCP サーバーをご利用ください:https://github.com/github/github-mcp-server
🚨 このリポジトリは非推奨です。🚨
GitHub MCP サーバー
GitHub API と連携するためのツールを提供する、Model Context Protocol(MCP)サーバーです。このサーバーを使うと、LLM エージェントが標準化されたインターフェースを通じて、GitHub リポジトリ、イシュー、プルリクエスト、ブランチ、ファイル、リリースを管理できます。
目次
概要
github-mcp-server は Model Context Protocol(MCP)を実装し、以下を通じて LLM と外部システム間の標準化された通信を実現します。
- クライアント:Claude Desktop、IDE、その他の MCP 互換クライアント
- サーバー:プロジェクト管理とコラボレーションのためのツールとリソース
- LLM エージェント:GitHub の操作をプログラムから実行する機能を活用する AI モデル
AI モデルと GitHub API をつなぐブリッジとして機能し、一貫したパターンに従う明確に定義されたツール群を提供します。これらのツールは、認証、検証、エラー処理、レート制限に対応します。
主な機能:
- GitHub API との連携:GitHub の REST API と安全かつシームレスに連携
- 包括的な GitHub 機能:リポジトリ、ブランチ、イシュー、PR などを包括的に管理
- アトミックな機能アーキテクチャ:保守性に優れた、整理されたモジュール式のコード構成
- 入力検証:すべての操作に対し、Zod スキーマを使った堅牢な検証
- エラー処理:一貫したエラー分類と報告
- レート制限:GitHub API のレート制限に標準で対応
- パフォーマンス重視:最適化された操作とレスポンス形式
アーキテクチャとコンポーネント
コアシステムのアーキテクチャ:
クリックして Mermaid 図を展開
flowchart TB
subgraph API["API Layer"]
direction LR
MCP["MCP Protocol"]
Val["Validation"]
Rate["Rate Limiting"]
MCP --> Val --> Rate
end
subgraph Features["Feature Modules"]
direction LR
Repo["Repository Management"]
Branch["Branch Management"]
Issue["Issue Management"]
PR["Pull Request Management"]
File["File Management"]
Release["Release Management"]
Repo <--> Branch
Repo <--> Issue
Repo <--> PR
Repo <--> File
Branch <--> PR
end
subgraph Services["Services Layer"]
direction LR
GitHub["GitHub Service"]
Mapper["Response Mapper"]
RateLimiter["Rate Limiter"]
GitHub <--> RateLimiter
GitHub <--> Mapper
end
Rate --> Repo
Rate --> Branch
Rate --> Issue
Rate --> PR
Rate --> File
Rate --> Release
Repo --> GitHub
Branch --> GitHub
Issue --> GitHub
PR --> GitHub
File --> GitHub
Release --> GitHub
classDef layer fill:#2d3748,stroke:#4299e1,stroke-width:3px,rx:5,color:#fff
classDef component fill:#1a202c,stroke:#a0aec0,stroke-width:2px,rx:3,color:#fff
classDef api fill:#3182ce,stroke:#90cdf4,stroke-width:2px,rx:3,color:#fff
classDef features fill:#319795,stroke:#81e6d9,stroke-width:2px,rx:3,color:#fff
classDef services fill:#2f855a,stroke:#9ae6b4,stroke-width:2px,rx:3,color:#fff
class API,Features,Services layer
class MCP,Val,Rate api
class Repo,Branch,Issue,PR,File,Release features
class GitHub,Mapper,RateLimiter services
コアコンポーネント:
- MCP プロトコルレイヤー:AI アシスタントとの通信を処理します
- 検証レイヤー:スキーマ検証によってデータの整合性を確保します
- GitHub サービス:GitHub REST API とのコア連携機能です
- レートリミッター:API のレート制限超過を防ぎます
- 機能モジュール:ドメイン固有の GitHub 操作を提供します
- エラー処理:包括的なエラー処理とログ記録のシステムです
機能
リポジトリ管理
- 作成、一覧表示、取得:新しいリポジトリの作成、ユーザーのリポジトリ一覧の表示、リポジトリの詳細情報の取得を行います
- 検証と設定:リポジトリ設定を検証し、構成オプションを管理します
ブランチ管理
- 作成、削除、一覧表示:安全な検証を備えた、ブランチのライフサイクル全体を管理します
- 保護されたブランチのサポート:保護されたブランチのフィルタリングと操作に対応します
Issue 管理
- 作成と一覧表示:ラベル付きの詳細な Issue を作成し、フィルタリングオプションを使って Issue を一覧表示します
- ステータス追跡:Issue の状態(open、closed、all)でフィルタリングします
Pull Request 管理
- 作成、更新、マージ、一覧表示:Pull Request のライフサイクル全体を管理します
- レビューとコメントの連携:Pull Request にレビューやコメントを追加します
- マージオプション:さまざまなマージ戦略(merge、squash、rebase)に対応します
ファイル管理
- ファイルの作成と更新:コミットメッセージを付けてリポジトリのコンテンツを追加、変更します
- Base64 エンコードのサポート:テキストとバイナリの両方のファイルコンテンツを処理します
リリース管理
- リリースの作成:カスタマイズ可能なオプションを使って、タグ付きリリースを作成します
- ドラフトとプレリリースのサポート:ドラフトおよびプレリリースのワークフローに対応します
インストール
前提条件
- Node.js(v16 以降)
- 適切な権限を持つ GitHub 個人アクセストークン
セットアップ
-
リポジトリをクローンします:
git clone https://github.com/cyanheads/github-mcp-server.git cd github-mcp-server -
依存関係をインストールします:
npm install -
プロジェクトのルートに
.envファイルを作成し、GitHub トークンを設定します:GITHUB_TOKEN=your_github_personal_access_token LOG_LEVEL=info SERVER_NAME=github-mcp-server -
プロジェクトをビルドします:
npm run build -
サーバーを起動します:
node build/index.js
設定
サーバーは環境変数で設定できます:
| 環境変数 | 説明 | デフォルト |
|---|---|---|
GITHUB_TOKEN | GitHub 個人アクセストークン(必須) | - |
LOG_LEVEL | ログレベル(debug、info、warn、error、fatal) | info |
SERVER_NAME | MCP サーバー名 | github-mcp-server |
SERVER_VERSION | MCP サーバーのバージョン | 0.1.0 |
API_TIMEOUT_MS | API 呼び出しのタイムアウト(ミリ秒) | 10000 |
RATE_LIMITING_ENABLED | レート制限を有効にするかどうか | true |
RATE_LIMITING_MIN_REMAINING | スロットリング開始前の最低残りリクエスト数 | 100 |
RATE_LIMITING_RESET_BUFFER_MS | レート制限のリセット時間に加算する時間バッファ | 5000 |
MCP クライアントの設定
MCP クライアントの設定に追加します:
{
"mcpServers": {
"github": {
"command": "node",
"args": ["/path/to/github-mcp-server/build/index.js"],
"env": {
"GITHUB_TOKEN": "your_github_personal_access_token",
"LOG_LEVEL": "info",
"SERVER_NAME": "github-mcp-server"
}
}
}
}
プロジェクト構成
このプロジェクトでは、アトミックな機能指向アーキテクチャのパターンを採用しています:
/src
/configuration // Application configuration
/dependencyInjection // Tool registry and DI container
/features // Feature modules organized by domain
/repositoryManagement
/resources // Read operations
/modifications // Write operations
/branchManagement
/issueManagement
/pullRequestManagement
/fileManagement
/releaseManagement
/services // External service integrations
/githubAccess // GitHub API client and utilities
/types // Core type definitions
/utilities // Helper functions and utilities
各機能ドメインは次のように分割されています:
- リソース:データを変更しない読み取り操作
- 変更操作:データを作成、更新、削除する書き込み操作
各操作は専用のディレクトリに格納され、次のファイルを含みます:
- 操作の実装ファイル
- 型定義ファイル
- エクスポート用インデックスファイル
ツール
GitHub MCP Server は、GitHub を操作するための包括的なツール一式を提供します:
リポジトリ管理ツール
| ツール | 説明 |
|---|---|
get_repository | 特定のリポジトリの詳細情報を取得します パラメーター: owner、repo |
list_repositories | 認証済みユーザーのリポジトリ一覧を取得します パラメーター: type(任意)、sort(任意) |
create_repository | 新しい GitHub リポジトリを作成します パラメーター: name、description(任意)、private(任意) |
ブランチ管理ツール
| ツール | 説明 |
|---|---|
list_branches | リポジトリ内のブランチ一覧を取得します パラメーター: owner、repo、protected(任意)、per_page(任意) |
create_branch | 新しいブランチを作成します パラメーター: owner、repo、branch、sha |
delete_branch | ブランチを削除します パラメーター: owner、repo、branch |
Issue 管理ツール
| ツール | 説明 |
|---|---|
create_issue | リポジトリに新しい Issue を作成します パラメーター: owner、repo、title、body(任意)、labels(任意) |
list_issues | リポジトリ内の Issue 一覧を取得します パラメーター: owner、repo、state(任意)、labels(任意) |
プルリクエスト管理ツール
| ツール | 説明 |
|---|---|
create_pull_request | 新しいプルリクエストを作成します パラメーター: owner、repo、title、head、base、body(任意) |
merge_pull_request | プルリクエストをマージします パラメーター: owner、repo、pull_number、commit_title(任意)、commit_message(任意)、merge_method(任意) |
update_pull_request | 既存のプルリクエストを更新します パラメーター: owner、repo、pull_number、title(任意)、body(任意)、state(任意)、base(任意)、maintainer_can_modify(任意) |
list_pull_requests | リポジトリ内のプルリクエスト一覧を取得します パラメーター: owner、repo、state(任意)、head(任意)、base(任意)、sort(任意)、direction(任意) |
ファイル管理ツール
| ツール | 説明 |
|---|---|
update_file | リポジトリ内のファイルを作成または更新します パラメーター: owner、repo、path、message、content、sha(任意)、branch(任意) |
リリース管理ツール
| ツール | 説明 |
|---|---|
create_release | 新しいリリースを作成します パラメーター: owner、repo、tag_name、name(任意)、body(任意)、draft(任意)、prerelease(任意) |
開発
プロジェクト構成
このプロジェクトでは、厳格な命名規則とディレクトリ構成を採用しています。
- ファイル名:
action.entity.type.ts(例:create.repository.operation.ts) - 各モジュールの目的が明確に定義されています
- 型は実装と同じ場所に配置されています
- すべてのエクスポートはインデックスファイルを通じて一元管理されています
スクリプト
npm run build- プロジェクトをビルドしますnpm run watch- 変更を監視して再ビルドしますnpm run inspector- MCP インスペクターツールを実行しますnpm run clean- ビルド成果物をクリーンアップしますnpm run rebuild- プロジェクトをクリーンアップして再ビルドしますnpm run tree- ディレクトリツリーを生成します
エラー処理
サーバーでは、包括的なエラー処理戦略を実装しています。
- 標準化されたエラーオブジェクト:分類された一貫性のあるエラー形式
- 入力検証:Zod スキーマによる事前検証
- レート制限への対策:GitHub API のレート制限を自動的に処理
- エラーの分類:
- ネットワークエラー(接続の問題)
- 認証エラー(トークンの問題)
- 検証エラー(無効な入力)
- GitHub API エラー(API 固有の問題)
- システムエラー(予期しない障害)
- 詳細なロギング:すべての操作とエラーを構造化して記録
コントリビューション
コントリビューションを歓迎します!Pull Request をお気軽に送信してください。
- リポジトリをフォークします
- 機能ブランチを作成します(
git checkout -b feature/amazing-feature) - 変更をコミットします(
git commit -m 'Add some amazing feature') - ブランチにプッシュします(
git push origin feature/amazing-feature) - Pull Request を作成します
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。