ghコマンドを活用したGitHub MCPサーバーの認証自動化
GitHub公式のMCPサーバー(github-mcp-server)をローカル環境で使用する際、認証にはPersonal Access Token(PAT)の発行が求められます。既にgh auth token
で認証情報を取得できるのに別途PATを管理するのは冗長だと感じたため、既存の認証情報を使い回しつつMCPサーバを起動するghコマンドの拡張機能を開発しました。
開発の動機
gh-mcpを実装した理由は3つあります:
- OAuth認証の回避: GitHub公式のリモートMCPサーバーはOAuth認証を要求するが、Claude Codeでは2025年6月27日現在エラーが発生して利用できない
- PAT管理の撤廃: ローカル実行ではPATの発行と管理が必要で、過剰な権限を長期間利用可能なトークンを発行してしまうリスクがある
-
既存認証の活用: すでに
gh auth login
で認証済みの情報を使い回すことができれば、わざわざリスクがあり煩雑なPAT発行の必要が無い
github-mcp-serverはローカル利用においては認証の煩雑さが導入の障壁となっていました。gh-mcpはこの障壁を取り除き、gh
コマンドの認証をそのまま活用することで、シームレスな体験を実現しています。
導入方法と使い方
インストールは通常のGitHub CLI拡張機能と同じです。
gh extension install shuymn/gh-mcp
gh mcp
Claude Codeとの統合では、以下のコマンドを実行するだけで利用可能です。
claude mcp add-json github '{"command":"gh","args":["mcp"]}'
これだけで、PAT発行や環境変数設定は一切不要。既存のgh
認証がそのまま使われます。
さらに、github-mcp-serverがサポートする環境変数もそのまま利用できます。
# 読み取り専用モードで起動
GITHUB_READ_ONLY=1 gh mcp
# 特定のツールセットのみ有効化
GITHUB_TOOLSETS="repo_commands,issue_commands" gh mcp
詳細な利用方法についてはshuymn/gh-mcpのREADMEをご確認ください。
実装の詳細
gh-mcpの実装では、2つの主要なライブラリを活用しています。
-
github.com/cli/go-gh
: GitHub CLIの公式ライブラリで、gh auth token
の認証情報を取得 - Docker Go SDK: MCPサーバーのDockerコンテナを起動・管理
認証情報の取得からDockerコンテナへの環境変数渡しまで、約500行のGoコードで実現しました。
セキュリティ面では、利用するDockerイメージをSHA256ハッシュで固定し、Renovateで自動更新を管理しています。
今後
このツールは個人的にClaude Codeでgithub-mcp-serverを簡単に使いたかったから作成しました。
そのため、github-mcp-serverが gh
で管理されている認証情報を使えるようになるか、Claude CodeがGitHubがホスティングするリモートMCPを利用できるようになれば利用価値はかなり減ります。
一過性のツールにはなりますが、同じような悩みがある人に届くと嬉しいです。
Discussion