Skip to main content
Glama
by AstroMined

PyGithub MCP サーバー

PyGithubを介してGitHub APIとやり取りするためのツールを提供するモデルコンテキストプロトコルサーバー。このサーバーにより、AIアシスタントは課題、リポジトリ、プルリクエストの管理といったGitHub操作を実行できるようになります。

特徴

  • モジュラーツールアーキテクチャ:

    • 有効化/無効化できる設定可能なツールグループ

    • ドメイン固有の組織(問題、リポジトリなど)

    • ファイルまたは環境変数による柔軟な設定

    • モジュール設計による明確な関心の分離

    • 一貫したパターンによる簡単な拡張

  • 完全な GitHub の問題管理:

    • 問題の作成と更新

    • 問題の詳細を取得し、リポジトリの問題を一覧表示する

    • コメントの追加、一覧表示、更新、削除

    • 問題ラベルを管理する

    • 担当者とマイルストーンを管理する

  • スマートなパラメータ処理:

    • オプションパラメータのための動的なkwargsの構築

    • GitHubオブジェクトの適切な型変換

    • すべての入力パラメータの検証

    • 無効な入力に対するエラーメッセージをクリアする

  • 堅牢な実装:

    • PyGithub 経由のオブジェクト指向 GitHub API のインタラクション

    • 一元化されたGitHubクライアント管理

    • 適切なエラー処理とレート制限

    • MCPツールによるクリーンなAPI抽象化

    • 包括的なページネーションサポート

    • デバッグのための詳細なログ

Related MCP server: GitHub Enterprise MCP Server

ドキュメント

包括的なガイドは、docs/guides ディレクトリで入手できます。

  • error-handling.md: エラーの種類、処理パターン、ベストプラクティス

  • security.md: 認証、アクセス制御、コンテンツセキュリティ

  • tool-reference.md: 例を含む詳細なツールドキュメント

PyGithub MCP サーバーの使用に関する詳細については、これらのガイドを参照してください。

使用例

発行業務

  1. 問題の作成

{ "owner": "username", "repo": "repository", "title": "Issue Title", "body": "Issue description", "assignees": ["username1", "username2"], "labels": ["bug", "help wanted"], "milestone": 1 }
  1. 問題の詳細を取得する

{ "owner": "username", "repo": "repository", "issue_number": 1 }
  1. 問題の更新

{ "owner": "username", "repo": "repository", "issue_number": 1, "title": "Updated Title", "body": "Updated description", "state": "closed", "labels": ["bug", "wontfix"] }

コメント操作

  1. コメントを追加する

{ "owner": "username", "repo": "repository", "issue_number": 1, "body": "This is a comment" }
  1. リストコメント

{ "owner": "username", "repo": "repository", "issue_number": 1, "per_page": 10 }
  1. コメントの更新

{ "owner": "username", "repo": "repository", "issue_number": 1, "comment_id": 123456789, "body": "Updated comment text" }

ラベル操作

  1. ラベルの追加

{ "owner": "username", "repo": "repository", "issue_number": 1, "labels": ["enhancement", "help wanted"] }
  1. ラベルの削除

{ "owner": "username", "repo": "repository", "issue_number": 1, "label": "enhancement" }

すべての操作はオプションのパラメータをインテリジェントに処理します。

  • API呼び出しには提供されたパラメータのみが含まれます

  • プリミティブ型を GitHub オブジェクトに変換します (例: マイルストーン番号をマイルストーン オブジェクトに変換)

  • 無効なパラメータに対して明確なエラーメッセージを表示します

  • 該当する場合はページ区切りを自動的に処理します

インストール

  1. 仮想環境を作成してアクティブ化します。

uv venv source .venv/bin/activate
  1. 依存関係をインストールします:

uv pip install -e .

構成

基本構成

サーバーを MCP 設定 (例: claude_desktop_config.jsonまたはcline_mcp_settings.json ) に追加します。

{ "mcpServers": { "github": { "command": "/path/to/repo/.venv/bin/python", "args": ["-m", "pygithub_mcp_server"], "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "your-token-here" } } } }

ツールグループの構成

サーバーは、設定を通じてツールグループを個別に有効化または無効化できます。これは以下の2つの方法で設定できます。

1. 設定ファイル

JSON 構成ファイル (例: pygithub_mcp_config.json ) を作成します。

{ "tool_groups": { "issues": {"enabled": true}, "repositories": {"enabled": true}, "pull_requests": {"enabled": false}, "discussions": {"enabled": false}, "search": {"enabled": true} } }

次に、環境でこのファイルを指定します。

export PYGITHUB_MCP_CONFIG=/path/to/pygithub_mcp_config.json

2. 環境変数

または、環境変数を使用してツール グループを構成します。

export PYGITHUB_ENABLE_ISSUES=true export PYGITHUB_ENABLE_REPOSITORIES=true export PYGITHUB_ENABLE_PULL_REQUESTS=false

デフォルトでは、 issuesツールグループのみが有効になっています。詳細な設定オプションについては、 README.config.mdご覧ください。

発達

テスト

このプロジェクトには包括的なテスト スイートが含まれています。

# Run all tests pytest # Run tests with coverage report pytest --cov # Run specific test file pytest tests/test_operations/test_issues.py # Run tests matching a pattern pytest -k "test_create_issue"

注: 現在、多くのテストが失敗しており、調査中です。これは既知の問題であり、現在積極的に取り組んでいます。

MCP Inspectorによるテスト

MCP インスペクターを使用して開発中に MCP ツールをテストします。

source .venv/bin/activate # Ensure venv is activated npx @modelcontextprotocol/inspector -e GITHUB_PERSONAL_ACCESS_TOKEN=your-token-here uv run pygithub-mcp-server

MCP Inspector の Web UI を使用して次の操作を行います。

  • 利用可能なツールを試してみる

  • 実際のGitHubリポジトリでテストする

  • 成功とエラーのケースを検証する

  • 作業ペイロードを文書化する

プロジェクト構造

tests/ ├── unit/ # Fast tests without external dependencies │ ├── config/ # Configuration tests │ ├── tools/ # Tool registration tests │ └── ... # Other unit tests └── integration/ # Tests with real GitHub API ├── issues/ # Issue tools tests └── ... # Other integration tests
src/ └── pygithub_mcp_server/ ├── __init__.py ├── __main__.py ├── server.py # Server factory (create_server) ├── version.py ├── config/ # Configuration system │ ├── __init__.py │ └── settings.py # Configuration management ├── tools/ # Modular tool system │ ├── __init__.py # Tool registration framework │ └── issues/ # Issue tools │ ├── __init__.py │ └── tools.py # Issue tool implementations ├── client/ # GitHub client functionality │ ├── __init__.py │ ├── client.py # Core GitHub client │ └── rate_limit.py # Rate limit handling ├── converters/ # Data transformation │ ├── __init__.py │ ├── parameters.py # Parameter formatting │ ├── responses.py # Response formatting │ ├── common/ # Common converters │ ├── issues/ # Issue-related converters │ ├── repositories/ # Repository converters │ └── users/ # User-related converters ├── errors/ # Error handling │ ├── __init__.py │ └── exceptions.py # Custom exceptions ├── operations/ # GitHub operations │ ├── __init__.py │ └── issues.py ├── schemas/ # Data models │ ├── __init__.py │ ├── base.py │ ├── issues.py │ └── ... └── utils/ # General utilities ├── __init__.py └── environment.py # Environment utilities

トラブルシューティング

  1. サーバーの起動に失敗しました:

    • MCP設定でvenv Pythonパスを確認する

    • すべての要件がvenvにインストールされていることを確認する

    • GITHUB_PERSONAL_ACCESS_TOKENが設定され有効であることを確認します

  2. ビルド エラー:

    • uv ビルドで --no-build-isolation フラグを使用する

    • Python 3.10以降が使用されていることを確認する

    • すべての依存関係がインストールされていることを確認する

  3. GitHub API エラー:

    • トークンの権限と有効性を確認する

    • 詳細なエラートレースはpygithub_mcp_server.logで確認してください。

    • レート制限を超えていないことを確認する

依存関係

  • Python 3.10以上

  • MCP Python SDK

  • ピダンティック

  • パイGitHub

  • UV パッケージ マネージャー

ライセンス

マサチューセッツ工科大学

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/AstroMined/pygithub-mcp-server'

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