GitHub MCP Server

by cyanheads
Verified

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個人アクセストークン

設定

  1. リポジトリをクローンします。
    git clone https://github.com/cyanheads/github-mcp-server.git cd github-mcp-server
  2. 依存関係をインストールします:
    npm install
  3. GitHub トークンを使用して、プロジェクト ルートに.envファイルを作成します。
    GITHUB_TOKEN=your_github_personal_access_token LOG_LEVEL=info SERVER_NAME=github-mcp-server
  4. プロジェクトをビルドします。
    npm run build
  5. サーバーを起動します。
    node build/index.js

構成

サーバーは環境変数を通じて設定できます:

環境変数説明デフォルト
GITHUB_TOKENGitHub 個人アクセス トークン (必須)-
LOG_LEVELログレベル(デバッグ、情報、警告、エラー、致命的)情報
SERVER_NAMEMCPサーバー名github-mcp-server
SERVER_VERSIONMCP サーバーバージョン0.1.0
API_TIMEOUT_MSAPI 呼び出しのタイムアウト(ミリ秒)10000
RATE_LIMITING_ENABLEDレート制限が有効かどうか真実
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特定のリポジトリに関する詳細情報を取得します。パラメータ: ownerrepo
list_repositories認証されたユーザーのリポジトリを一覧表示しますパラメータ: type (オプション)、 sort (オプション)
create_repository新しい GitHub リポジトリを作成するパラメータ: namedescription (オプション)、 private (オプション)

ブランチ管理ツール

道具説明
list_branchesリポジトリ内のブランチを一覧表示します。パラメータ: ownerrepoprotected (オプション)、 per_page (オプション)
create_branch新しいブランチを作成するパラメータ: ownerrepobranchsha
delete_branchブランチを削除するパラメータ: ownerrepobranch

問題管理ツール

道具説明
create_issueリポジトリに新しい問題を作成しますパラメータ: ownerrepotitlebody (オプション)、 labels (オプション)
list_issuesリポジトリ内の問題を一覧表示するパラメータ: ownerrepostate (オプション)、 labels (オプション)

プルリクエスト管理ツール

道具説明
create_pull_request新しいプルリクエストを作成するパラメータ: ownerrepotitleheadbasebody (オプション)
merge_pull_requestプルリクエストをマージするパラメータ: ownerrepopull_numbercommit_title (オプション)、 commit_message (オプション)、 merge_method (オプション)
update_pull_request既存のプルリクエストを更新するパラメータ: ownerrepopull_numbertitle (オプション)、 body (オプション)、 state (オプション)、 base (オプション)、 maintainer_can_modify (オプション)
list_pull_requestsリポジトリ内のプルリクエストを一覧表示します。パラメータ: ownerrepostate (オプション)、 head (オプション)、 base (オプション)、 sort (オプション)、 direction (オプション)

ファイル管理ツール

道具説明
update_fileリポジトリ内のファイルを作成または更新します。パラメータ: ownerrepopathmessagecontentsha (オプション)、 branch (オプション)

リリース管理ツール

道具説明
create_release新しいリリースを作成しますパラメータ: ownerrepotag_namename (オプション)、 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 固有の問題)
    • システムエラー(予期しない障害)
  • 詳細なログ記録: すべての操作とエラーの構造化されたログ記録

貢献

貢献を歓迎します!お気軽にプルリクエストを送信してください。

  1. リポジトリをフォークする
  2. 機能ブランチを作成します( git checkout -b feature/amazing-feature
  3. 変更をコミットします ( git commit -m 'Add some amazing feature' )
  4. ブランチにプッシュする ( git push origin feature/amazing-feature )
  5. プルリクエストを開く

ライセンス

Apacheライセンス2.0


-
security - not tested
A
license - permissive license
-
quality - not tested

LLM エージェントが標準化されたインターフェースを通じて GitHub リポジトリ、問題、プル リクエスト、ブランチ、ファイル、リリースを管理できるようにするモデル コンテキスト プロトコル サーバー。

  1. Table of Contents
    1. Overview
      1. Architecture & Components
    2. Features
      1. Repository Management
      2. Branch Management
      3. Issue Management
      4. Pull Request Management
      5. File Management
      6. Release Management
    3. Installation
      1. Prerequisites
      2. Setup
    4. Configuration
      1. MCP Client Settings
    5. Project Structure
      1. Tools
        1. Repository Management Tools
        2. Branch Management Tools
        3. Issue Management Tools
        4. Pull Request Management Tools
        5. File Management Tools
        6. Release Management Tools
      2. Development
        1. Project Structure
        2. Scripts
      3. Error Handling
        1. Contributing
          1. License
            ID: cey1omi620