Skip to main content
Glama

GitHub MCP サーバー

タイプスクリプト モデルコンテキストプロトコルバージョンライセンス状態 GitHub

GitHub APIと連携するためのツールを提供するModel Context Protocol(MCP)サーバー。このサーバーにより、LLMエージェントは標準化されたインターフェースを通じてGitHubリポジトリ、課題、プルリクエスト、ブランチ、ファイル、リリースを管理できます。

目次

Related MCP server: GitHub MCP Server

概要

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 レート制限処理を組み込み

  • パフォーマンス重視: 最適化された操作と応答フォーマット

アーキテクチャとコンポーネント

コアシステムアーキテクチャ:

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操作

  • エラー処理: 包括的なエラー処理およびログ記録システム

特徴

リポジトリ管理

  • 作成、一覧表示、取得: 新しいリポジトリを作成し、ユーザーのリポジトリを一覧表示し、詳細なリポジトリ情報を取得します。

  • 検証と構成: リポジトリ設定を検証し、構成オプションを管理します

支店管理

  • 作成、削除、リスト: 安全な検証による完全なブランチライフサイクル管理

  • 保護されたブランチのサポート: 保護されたブランチのフィルタリングと操作

問題管理

  • 作成とリスト: ラベルを使用して詳細な問題を作成し、フィルタリングオプションを使用して問題をリストします

  • ステータス追跡: 問題の状態 (オープン、クローズ、すべて) でフィルタリング

プルリクエスト管理

  • 作成、更新、マージ、リスト: 完全なプルリクエストライフサイクル管理

  • レビューとコメントの統合: プルリクエストにレビューとコメントを追加する

  • マージオプション: さまざまなマージ戦略 (マージ、スカッシュ、リベース) のサポート

ファイル管理

  • ファイルの作成と更新: コミットメッセージを使用してリポジトリのコンテンツを追加および変更します

  • 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_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 クライアント設定に追加:

{ "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

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/cyanheads/github-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server