Easy MCP GitHub Tools Application について
Easy MCP GitHub Tools Applicationは、GitHubのリポジトリ、イシュー、ファイル、コミット、プルリクエスト、リリースを管理するMCPツールを提供します。easy-mcp-pythonの利用者向けで、GitHub OAuthで認証します。
主な機能
- 01ブランチの作成と管理
- 02イシューとコメントの追跡・編集
- 03リポジトリファイルの読み取りと変更
- 04コミット履歴と差分の確認
- 05プルリクエストの作成・確認・マージ
- 06GitHub検索とリリース管理
活用シーン
- 01リポジトリのブランチとファイルを管理
- 02イシューとコメントを追跡
- 03コミット履歴とファイル変更を確認
- 04プルリクエストを作成またはマージ
MCP 対応
easy-mcp-pythonを通じて、GitHub操作をツールとして提供します。GitHub OAuthで認証し、リクエストヘッダーにアクセストークンを指定します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
簡単に使える MCP GitHub ツールアプリケーション
これは、easy mcp サーバーと併用する GitHub 用のツールセットです。
https://github.com/ground-creative/easy-mcp-python
主な機能
- ブランチ管理:GitHub リポジトリでブランチを簡単に作成、削除できます。
- Issue の追跡:Issue の作成、更新、削除に加え、Issue のコメントを管理できます。
- コミット履歴:リポジトリ内の任意のブランチについて、詳細なコミット情報とコミット履歴を取得できます。
- ファイル管理:GitHub リポジトリ内のファイルの作成、更新、削除に加え、ファイルの内容や差分を取得できます。
- プルリクエスト:プルリクエストを作成、管理し、対象ブランチにマージできます。
- グローバル検索:GitHub 全体からリポジトリ、Issue、コードを検索できます。
- リリース管理:GitHub リポジトリ内のリリースを取得、管理できます。
- OAuth 認証:GitHub の OAuth サービスを使用して、ユーザーを安全に認証します。
認証
このアプリケーションは、GitHub の OAuth サービスを使用してユーザーを認証します。
このアプリを使用するには、GitHub で OAuth アプリケーションを作成する必要があります。
認証方法:
-
auth/login にアクセスして認証します
-
サーバーにリクエストを送信する際、リクエストヘッダーでパラメーター X-ACCESS-TOKEN を使用します。
GitHub アプリケーションの作成手順
このアプリを使用するには、まず GitHub で OAuth アプリケーションを作成する必要があります。次の手順に従ってください。
- GitHub アカウントの設定に移動します。
- Developer settings > OAuth Apps に移動します。
- New OAuth App をクリックします。
- 必要な項目を入力します:
- Application Name:アプリケーションの名前を選択します。
- Homepage URL:アプリケーションのメイン URL を入力します(例:
https://mcp.yourdomain.com)。 - Authorization callback URL:
http://{Your Host}:{Your Port}/auth/callbackに設定します。
- アプリケーションを作成すると、Client ID と Client Secret が発行されます。これらの認証情報は、
client_credentials.jsonファイルに追加する必要があるため、安全に保管してください。
インストール
- easy mcp のインストールルートフォルダーからリポジトリをクローンします:
git clone https://github.com/ground-creative/easy-mcp-github-tools-python.git app
- 必要なパッケージをインストールします:
pip install -r app/requirements.txt
- 暗号化キーを生成します:
python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
- env ファイルにパラメーターを追加します:
APP_HOST=Application Host ex: `https://mcp.yourdomain.com`
DB_PATH=storage/sqlite_credentials.db
CYPHER=Your Encryption Key Here
# Optional
SITE_URL=Main Application Site URL
SITE_NAME=MAin Application Site Name
- storage フォルダーに GitHub OAuth 認証情報を記載した json ファイル
client_credentials.jsonを作成します:
# Follow instructions of section "Create GitHub Application instructions" to create credentials
{
"client_id": "XXXXX",
"client_secret": "XXXXXXX"
}
- サーバーを起動します:
# Run via fastapi wrapper
python3 run.py -s fastapi
利用可能な MCP ツール
この MCP サーバーでは、次のツールを利用できます:
| ツール名 | 説明 | 必須パラメーター |
|---|---|---|
| ブランチを作成 | 既存のブランチを基に、指定した GitHub リポジトリに新しいブランチを作成します。 | new_branch (str), base_branch (Optional[str]), repo (str) |
| ブランチを削除 | GitHub リポジトリ内の指定したブランチを削除します。 | branch (str), repo (str), confirmation_token (Optional[str]) |
| Issue のコメントを削除 | GitHub リポジトリ内の Issue にある指定したコメントを削除します。 | comment_id (int), repo (str), confirmation_token (Optional[str]) |
| コミットの詳細を取得 | GitHub リポジトリから特定のコミットの詳細情報を取得します。 | sha (str), repo (str) |
| コミットを取得 | GitHub リポジトリからコミット履歴を取得します。 | branch (Optional[str]), repo (str), path (Optional[str]), per_page (Optional[int]), since (Optional[str]), until (Optional[str]) |
| ファイルを作成 | 指定したブランチ上の GitHub リポジトリに新しいファイルを追加します。 | file_path (str), content (str), repo (str), commit_message (Optional[str]), branch (Optional[str]) |
| ファイルを削除 | 指定したブランチの GitHub リポジトリから指定したファイルを削除します。 | file_paths (List[str]), repo (str), branch (Optional[str]), confirmation_token (Optional[str]) |
| ファイルの差分を取得 | GitHub リポジトリから特定のコミットのファイル差分を取得します。 | sha (str), files (List[str]), repo (str) |
| コミット前のファイルを取得 | 指定したコミット SHA より前の複数ファイルの内容を取得します。 | sha (str), files (List[str]), repo (str) |
| ファイルの内容を取得 | GitHub リポジトリから複数ファイルの内容を取得します。 | file_paths (List[str]), repo (str), branch (Optional[str]) |
| ファイルの詳細を取得 | GitHub リポジトリから複数ファイルの内容を除く詳細情報を取得します。 | files (List[str]), repo (str), branch (Optional[str]) |
| ファイル一覧 | git tree API を使用して、GitHub リポジトリのファイルパス一覧を取得します。 | folders (Optional[List[str]]), repo (str), branch (Optional[str]) |
| ファイルを検索 | GitHub リポジトリのファイル内で指定した文字列を検索します。 | search_string (str), repo (str), folders (Optional[List[str]]), sort (Optional[str]), order (Optional[str]), page (Optional[int]), per_page (Optional[int]) |
| グローバル検索 | 指定した検索タイプとクエリー文字列を基に、GitHub 全体を検索します。 | search_type (str), query (str), page (int), per_page (int) |
| ファイルを更新 | 指定したブランチ上の GitHub リポジトリにある既存のファイルを更新します。 | file_path (str), new_content (str), repo (str), commit_message (Optional[str]), branch (Optional[str]) |
| Issue のコメントを作成 | GitHub リポジトリ内の指定した Issue にコメントを追加します。 | issue_number (int), comment (str), repo (str) |
| Issue を作成 | GitHub リポジトリ内に新しい Issue を作成します。 | title (str), body (Optional[str]), repo (str), labels (Optional[list]) |
| Issue のコメントを取得 | GitHub リポジトリ内の特定の Issue のメッセージ(詳細とコメント)をすべて取得します。 | issue_number (int), repo (str), page (Optional[int]), per_page (Optional[int]), sort (Optional[str]), order (Optional[str]) |
| Issue の詳細を取得 | GitHub リポジトリ内の特定の Issue の詳細を取得します。 | issue_number (int), repo (str) |
| Issue を取得 | 任意のフィルターを指定して、指定した GitHub リポジトリから Issue を取得します。 | repo (str), state (Optional[str]), labels (Optional[str]), assignee (Optional[str]), milestone (Optional[str]), sort (Optional[str]), order (Optional[str]), per_page (Optional[int]), page (Optional[int]) |
| Issue を検索 | 任意のフィルターを指定して、指定した GitHub リポジトリの Issue を検索します。 | repo (str), state (Optional[str]), labels (Optional[str]), assignee (Optional[str]), milestone (Optional[str]), sort (Optional[str]), order (Optional[str]), per_page (Optional[int]), page (Optional[int]), search_comments (Optional[bool]), query (Optional[str]) |
| Issue のコメントを更新 | GitHub リポジトリ内の指定した Issue にある既存のコメントを更新します。 | comment_id (int), new_comment (str), repo (str) |
| Issue を更新 | GitHub リポジトリ内の既存の Issue を更新します。 | issue_number (int), title (Optional[str]), body (Optional[str]), state (Optional[str]), labels (Optional[list]), repo (str) |
| プルリクエストを作成 | 指定した GitHub リポジトリにプルリクエストを作成します。 | target_branch (str), base_branch (Optional[str]), repo (str), title (Optional[str]), body (Optional[str]) |
| プルリクエストの詳細を取得 | GitHub リポジトリから特定のプルリクエストの詳細情報を取得します。 | pull_number (int), repo (str) |
| プルリクエストを取得 | 指定した GitHub リポジトリからプルリクエストを取得します。 | repo (str), state (Optional[str]), sort (Optional[str]), order (Optional[str]), per_page (Optional[int]), page (Optional[int]) |
| プルリクエストをマージ | GitHub リポジトリ内の特定のプルリクエストをマージします。 | pull_number (int), repo (str), commit_message (Optional[str]) |
| リポジトリを作成 | GitHub に新しいリポジトリを作成します。 | name (str), description (Optional[str]), private (Optional[bool]), auto_init (Optional[bool]) |
| リポジトリを削除 | 指定した GitHub リポジトリを削除します。 | repo (str), confirmation_token (Optional[str]) |
| 名前でリポジトリを検索 | 指定したクエリー文字列を含む、特定のユーザーが所有するリポジトリを検索します。 | query (str), username (str) |
| リリースを取得 | GitHub リポジトリ内のリリースを取得します。 | per_page (Optional[int]), page (Optional[int]), repo (str), sort (Optional[str]), order (Optional[str]) |
| リポジトリを取得 | 特定の GitHub ユーザーのリポジトリをすべて取得します。 | username (str), type (Optional[str]), sort (Optional[str]), direction (Optional[str]), page (Optional[int]), per_page (Optional[int]) |
| リポジトリの詳細を取得 | GitHub から単一のリポジトリの詳細を取得します。 | repo (str) |
| タグまたはブランチを取得 | GitHub リポジトリ内のタグまたはブランチを一覧表示します。 | type (str), repo (str), per_page (Optional[int]), page (Optional[int]) |
サーバー情報ページ
ツール仕様 URL が記載されたサーバー情報ページは、.env ファイルで設定された {APP_HOST} パラメーターです。
スクリーンショット
サーバー情報ページ:

GitHub アプリケーションの OAuth ページ

ユーザー認証済みページ

コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。