GitHub MCP サーバ:読み取り専用 vs 書き込み権限
github MCP サーバの Personal Access Token をどうスコープ設定するか — 閲覧用の読み取り専用と、PR 作成・Issue 更新用の読み書き構成。
Client Differences
詳細な説明
2 つのトークンプロファイル
github MCP サーバの能力はトークンの GitHub 権限で完全に決まります。同じサーババイナリ、同じ env 変数名でも、スコープによって影響範囲が大きく変わります。
プロファイル 1:読み取り専用(推奨デフォルト)
トークン権限:
- Repository → Contents: Read-only
- Repository → Issues: Read-only
- Repository → Pull requests: Read-only
- Repository → Metadata: Read-only(自動付与)
モデルにできること:
- 選択リポジトリ全体のコード検索
- Issue / PR の本文・コメント・ラベル読み取り
- ブランチ・コミット・リリース一覧
できないこと:
- Issue や PR の作成
- 既存 Issue へのコメント
- コードのプッシュ
これがデフォルトとして適切です。書き込み一切なしで「バックログには何がある?」に答えられます。
プロファイル 2:読み書き(選択的)
追加:
- Repository → Contents: Read and write(コミット・PR 作成)
- Repository → Issues: Read and write(新規 Issue + コメント)
- Repository → Pull requests: Read and write(PR 作成・レビュー)
変わること:
- モデルが
github.create_issue、github.create_pull_request等を呼べるようになります。 - 全ての書き込みは GitHub 監査ログにあなたのアカウントとして記録されます。
設定(両プロファイルで同一)
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_xxx"
}
}
}
}
トークンのスコープが実行時にどのツールが成功するかを決め、JSON 設定自体は同じです。
ベストプラクティス
PAT を 2 つ持ちます:日常用の読み取り専用 PAT と、明示的にモデルに行動させたいときだけ差し替える書き込み PAT です。設定スニペットを共有する前には シークレット秘匿ツール を通してトークンの偶発漏洩を防ぎます。
ユースケース
LLM に Issue を 50 件検索・要約させたいが、誤って close されたくないとき。逆に、意図した「トリアージ Day」セッションだけ書き込み権限を付与し、終わったら剝奪する運用にも使えます。