Self-hosted GitHub MCP server について
複数のMCPクライアントを使う運用者向けの、セルフホスト可能なPython製GitHub MCPサーバーです。プルリクエスト、リポジトリファイル、Dependabotアラートに機能を絞っています。
主な機能
- 01PAT認証とKeychain対応
- 02プルリクエストの一覧・操作
- 03リポジトリファイルの読み書き
- 04Dependabotアラートの確認
- 05トークンとレート制限の確認
活用シーン
- 01MCPクライアントからのプルリクエスト確認・マージ
- 02リポジトリファイルの読み取り・更新
- 03Dependabotアラートとトークン状態の確認
MCP 対応
stdio経由でGitHub操作をMCPツールとして公開し、MCP準拠クライアントから利用できます。認証にはPersonal Access Tokenを使います。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
github-mcp
セルフホスト可能な GitHub MCP サーバーです。パーソナルアクセストークン認証と stdio トランスポートを採用し、トランスポートに依存しないため、Claude Code(どのアカウントでも)、Codex CLI、Cursor、その他の MCP 準拠クライアントで動作します。claude.ai OAuth への依存はありません。
FastMCP を基盤に Python で記述されています。他のコミュニティ製 Python MCP サーバーと同じインストール方法で導入できます。
このプロジェクトの目的
公式の github/github-mcp-server(Go 製、60 以上のツール)は、単一のエージェントプラットフォームの認証フローに結び付いた、あらゆる機能を備えたサーバーを求める場合に優れています。このサーバーは、次のような運用者向けに対象を絞っています。
- 複数の Claude アカウント、Codex CLI、Cursor、その他の MCP クライアントを切り替えて使い、それらすべてで同じ GitHub 認証を使用したい方。
- PR、リポジトリファイル、Dependabot の操作に絞った、小規模で監査可能なツール群を好む方。
- 他の MCP サーバーと並べて使える Python パッケージをインストールしたい方。
どちらにも当てはまらない場合は、代わりに github/github-mcp-server を実行してください。それが適切な選択です。
ツール一覧(v0.1.0)
| ツール | 用途 |
|---|---|
health_check | PAT が有効か確認し、レート制限の残り枠を報告します。接続設定時に最初に呼び出します。 |
list_prs | 状態フィルターを指定してプルリクエストを一覧表示します。 |
get_pr | チェック実行の状態とマージ可能状態を含む、単一の PR を取得します。 |
merge_pr | オプションでブランチを削除しながら、スカッシュ、マージ、リベースを行います。 |
list_dependabot_alerts | 重要度別の件数をまとめて、アラートを一括確認します。 |
get_file | Contents API 経由でファイルを読み取ります。 |
put_file | Contents API 経由でファイルを作成または更新します(SHA により冪等です)。 |
今後のバージョンでは、ワークフロー、リリース、Issue、ルールセット、シークレットスキャンのアラート、ブランチ保護、リポジトリ設定に対応する予定です。
シークレットの取り扱い(最初にお読みください)
v0.1.1 以降では、デフォルトで PAT を macOS Keychain から読み取ります。 macOS 以外の環境や CI では、引き続き環境変数へのフォールバックもサポートされています。ただし、シークレットが argv やプロセス環境に入らないため、Keychain を使う方法を推奨します。これにより、ps aux、pgrep -fl、lsof、/proc/<pid>/environ、パニックダンプ、CI ログ、デバッガー、内省コマンドを実行する LLM エージェントから安全に保護できます。
# One-time setup (macOS):
security add-generic-password -s github-mcp -a "$USER" -w "<your-fine-grained-PAT>"
# Update later (e.g. after rotation):
security delete-generic-password -s github-mcp -a "$USER" 2>/dev/null
security add-generic-password -s github-mcp -a "$USER" -w "<new-PAT>"
インラインの --env を使ってインストールしないでください。
# BAD — bakes the PAT into ~/.claude.json + every Claude child spawn's --mcp-config argv.
# Any pgrep / ps aux dumps it.
claude mcp add github --scope user --env GITHUB_TOKEN=github_pat_... -- <command>
# GOOD — no --env block. The server reads from Keychain at call time.
claude mcp add github --scope user -- <command>
PR/インシデントの経緯:pgrep -fl chrome-devtools-mcp によって PAT を含む claude プロセスがセッションのトランスクリプトに出力されたことを受け、この安全対策を 2026-05-19 に追加しました。adelaidasofia/github-mcp Keychain migration を参照してください(PR のマージ後にリンクを追加する予定です)。
macOS 以外の環境では、環境変数を使用してください。
export GITHUB_TOKEN=<your-PAT> # set in shell rc, NOT in argv
v0.1 のツール群で必要な最小限のスコープ:Contents の読み取り/書き込み、Pull requests の読み取り/書き込み、Dependabot の読み取り。
インストール
Claude Code を開き、次を貼り付けます。
/plugin marketplace add adelaidasofia/github-mcp
/plugin install github-mcp@github-mcp
以前のインストール方法
git clone https://github.com/adelaidasofia/github-mcp ~/.claude/github-mcp
cd ~/.claude/github-mcp
uv tool install --editable .
永続的にインストールせず、一度だけ実行する場合:
cd ~/.claude/github-mcp
uv run github-mcp
サーバーは、次の優先順位で環境変数から GitHub PAT を読み取ります。
GITHUB_TOKENGH_TOKEN
ファイン グレインドトークンを推奨します。
スコープ一覧
| 権限 | アクセス | 利用可能になる機能 |
|---|---|---|
| Metadata | 読み取り | 基本機能(他のリポジトリ権限を設定すると自動的に必須になります) |
| Contents | 読み取りと書き込み | get_file、put_file |
| Pull requests | 読み取りと書き込み | list_prs、get_pr、merge_pr |
| Dependabot alerts | 読み取り | list_dependabot_alerts |
| Administration | 読み取りと書き込み | 今後対応予定:ルールセット、ブランチ保護、allow_auto_merge の切り替え |
| Workflows | 読み取りと書き込み | 今後対応予定:.github/workflows/*.yml の読み取りと更新 |
| Actions | 読み取りと書き込み | 今後対応予定:ワークフロー実行のトリガーと確認 |
| Secret scanning alerts | 読み取り | 今後対応予定:全体を対象としたシークレットスキャン |
| Code scanning alerts | 読み取り | 今後対応予定:全体を対象とした CodeQL スキャン |
v0.1 で必要な権限:Metadata + Contents(読み取り/書き込み)+ Pull requests(読み取り/書き込み)+ Dependabot alerts(読み取り)があれば、このリリースのすべてのツールを使用できます。
将来への備え:今すぐ表のすべての権限を付与しておけば、PAT をローテーションせずに新しい MCP ツールを追加できます。ファイン グレインド PAT の UI で「すべてのリポジトリ権限」を選択するのと同等です。トレードオフとして、トークンが漏えいした場合の影響範囲が広がります。FileVault で暗号化されたノート PC 上の個人開発用トークンであれば妥当ですが、共有環境や本番環境で使う場合は再検討してください。
MCP は health_check を通じてスコープを確認します。設定後にこれを呼び出し、実際にトークンが持つ権限を確認してください。
任意の設定:GitHub Enterprise Server 用の GITHUB_API_BASE。既定値は https://api.github.com です。
MCP クライアントへの接続
Claude Code
~/.claude/.mcp.json(またはプロジェクトルートにある任意の .mcp.json)に追加します。
{
"mcpServers": {
"github": {
"command": "uv",
"args": ["run", "--project", "/Users/<you>/.claude/github-mcp", "github-mcp"],
"env": {
"GITHUB_TOKEN": "${GITHUB_TOKEN}"
}
}
}
}
Codex CLI
~/.codex/config.toml に追加します。
[mcp_servers.github]
command = "uv"
args = ["run", "--project", "/Users/<you>/.claude/github-mcp", "github-mcp"]
[mcp_servers.github.env]
GITHUB_TOKEN = "${GITHUB_TOKEN}"
Cursor
~/.cursor/mcp.json は Claude Code と同じ形式です。同じ環境変数ブロックを使用します。
その他の MCP 準拠クライアント
github-mcp コマンドを起動し、標準入出力をパイプするように設定します。サーバーは標準入出力経由で標準の MCP を使用します。
動作確認
GITHUB_TOKEN=ghp_yourpat uv run github-mcp
サーバーは標準入力で MCP の通信を待ちます。別のシェルから、クライアントを通じて health_check を実行してください。
テスト
uv pip install -e ".[dev]"
uv run pytest tests/ -v
テレメトリー
このプラグインは、特定のマシンで Claude Code のセッション中に初めて読み込まれた際、myceliumai.co に匿名のインストール通知を 1 回送信します。
送信される情報:
- プラグイン名(例:
slack-mcp) - プラグインのバージョン(例:
0.1.0)
送信されない情報:
- ユーザー識別子、氏名、メールアドレス、トークン、API キーは送信されません
- ファイルパス、メッセージ内容、作業に関する情報は送信されません
- 重複排除処理後に IP アドレスは保存されません
目的: メンテナーが実際にインストールされているプラグインを把握し、利用されているプラグインに注力できるようにします。
オプトアウト: Claude Code の起動前に、環境変数 MYCELIUM_NO_PING=1 を設定してください。フックはネットワーク呼び出しを完全にスキップします。すでに通知済みのインストールでは ~/.mycelium/onboarded-<plugin> にセンチネルファイルが作成されます。状態をリセットする場合は、これを削除してください。
ライセンス
MIT。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。