Integrations
Provides tools for interacting with the GitHub API, enabling management of repositories, branches, issues, pull requests, files, and releases. Features include creating and listing repositories, managing branches, creating and tracking issues, handling pull request lifecycles, updating repository files, and creating tagged releases.
GitHub MCP サーバー
GitHub APIと連携するためのツールを提供するModel Context Protocol(MCP)サーバー。このサーバーにより、LLMエージェントは標準化されたインターフェースを通じてGitHubリポジトリ、課題、プルリクエスト、ブランチ、ファイル、リリースを管理できます。
目次
概要
github-mcp-server はモデルコンテキストプロトコル (MCP) を実装し、以下を通じて LLM と外部システム間の標準化された通信を可能にします。
- クライアント: Claude Desktop、IDE、およびその他の MCP 互換クライアント
- サーバー: プロジェクト管理とコラボレーションのためのツールとリソース
- LLM エージェント: GitHub 操作をプログラムで実行する機能を活用する AI モデル。
これは AI モデルと GitHub API 間のブリッジとして機能し、一貫したパターンに従い、認証、検証、エラー処理、レート制限を処理する、明確に定義された一連のツールを提供します。
主な機能:
- GitHub API 統合: GitHub の REST API との安全でシームレスな統合
- 包括的な GitHub 機能: リポジトリ、ブランチ、問題、PR などを完全に管理
- アトミック機能アーキテクチャ: 保守性を考慮した整理されたモジュールコード構造
- 入力検証: すべての操作に対して Zod スキーマによる堅牢な検証
- エラー処理: 一貫したエラー分類とレポート
- レート制限:GitHub API レート制限処理を組み込み
- パフォーマンス重視: 最適化された操作と応答フォーマット
アーキテクチャとコンポーネント
コアシステムアーキテクチャ:
コアコンポーネント:
- MCPプロトコル層:AIアシスタントとの通信を処理する
- 検証層: スキーマ検証を通じてデータの整合性を保証する
- GitHub サービス: GitHub REST API とのコア統合
- レートリミッター: APIレート制限の枯渇を防ぐ
- 機能モジュール: ドメイン固有のGitHub操作
- エラー処理: 包括的なエラー処理およびログ記録システム
特徴
リポジトリ管理
- 作成、一覧表示、取得: 新しいリポジトリを作成し、ユーザーのリポジトリを一覧表示し、詳細なリポジトリ情報を取得します。
- 検証と構成: リポジトリ設定を検証し、構成オプションを管理します
支店管理
- 作成、削除、リスト: 安全な検証による完全なブランチライフサイクル管理
- 保護されたブランチのサポート: 保護されたブランチのフィルタリングと操作
問題管理
- 作成とリスト: ラベルを使用して詳細な問題を作成し、フィルタリングオプションを使用して問題をリストします
- ステータス追跡: 問題の状態 (オープン、クローズ、すべて) でフィルタリング
プルリクエスト管理
- 作成、更新、マージ、リスト: 完全なプルリクエストライフサイクル管理
- レビューとコメントの統合: プルリクエストにレビューとコメントを追加する
- マージオプション: さまざまなマージ戦略 (マージ、スカッシュ、リベース) のサポート
ファイル管理
- ファイルの作成と更新: コミットメッセージを使用してリポジトリのコンテンツを追加および変更します
- Base64エンコードのサポート: テキストとバイナリファイルの両方のコンテンツを処理します
リリース管理
- リリースの作成: カスタマイズ可能なオプションでタグ付きリリースを作成します
- ドラフトとプレリリースのサポート: ドラフトとプレリリースのワークフローのサポート
インストール
前提条件
- Node.js (v16以降)
- 適切な権限を持つGitHub個人アクセストークン
設定
- リポジトリをクローンします。Copy
- 依存関係をインストールします:Copy
- GitHub トークンを使用して、プロジェクト ルートに
.env
ファイルを作成します。Copy - プロジェクトをビルドします。Copy
- サーバーを起動します。Copy
構成
サーバーは環境変数を通じて設定できます:
環境変数 | 説明 | デフォルト |
---|---|---|
GITHUB_TOKEN | GitHub 個人アクセス トークン (必須) | - |
LOG_LEVEL | ログレベル(デバッグ、情報、警告、エラー、致命的) | 情報 |
SERVER_NAME | MCPサーバー名 | github-mcp-server |
SERVER_VERSION | MCP サーバーバージョン | 0.1.0 |
API_TIMEOUT_MS | API 呼び出しのタイムアウト(ミリ秒) | 10000 |
RATE_LIMITING_ENABLED | レート制限が有効かどうか | 真実 |
RATE_LIMITING_MIN_REMAINING | スロットル前の残りのリクエストの最小数 | 100 |
RATE_LIMITING_RESET_BUFFER_MS | レート制限リセット時間に追加する時間バッファ | 5000 |
MCPクライアント設定
MCP クライアント設定に追加:
プロジェクト構造
このプロジェクトは、アトミックな機能指向のアーキテクチャ パターンに従います。
各機能ドメインは次のように分割されます。
- リソース: データを変更しない読み取り操作
- 変更: データを作成、更新、または削除する書き込み操作
各操作は次の独自のディレクトリに含まれています。
- 操作実装ファイル
- 型定義ファイル
- インデックスファイルをエクスポートする
ツール
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 |
問題管理ツール
道具 | 説明 |
---|---|
create_issue | リポジトリに新しい問題を作成しますパラメータ: owner 、 repo 、 title 、 body (オプション)、 labels (オプション) |
list_issues | リポジトリ内の問題を一覧表示するパラメータ: 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 固有の問題)
- システムエラー(予期しない障害)
- 詳細なログ記録: すべての操作とエラーの構造化されたログ記録
貢献
貢献を歓迎します!お気軽にプルリクエストを送信してください。
- リポジトリをフォークする
- 機能ブランチを作成します(
git checkout -b feature/amazing-feature
) - 変更をコミットします (
git commit -m 'Add some amazing feature'
) - ブランチにプッシュする (
git push origin feature/amazing-feature
) - プルリクエストを開く
ライセンス
This server cannot be installed
LLM エージェントが標準化されたインターフェースを通じて GitHub リポジトリ、問題、プル リクエスト、ブランチ、ファイル、リリースを管理できるようにするモデル コンテキスト プロトコル サーバー。