Skip to main content
Glama
AstroMined

PyGithub MCP Server

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