🔑

ghコマンドを活用したGitHub MCPサーバーの認証自動化

に公開

GitHub公式のMCPサーバー(github-mcp-server)をローカル環境で使用する際、認証にはPersonal Access Token(PAT)の発行が求められます。既にgh auth tokenで認証情報を取得できるのに別途PATを管理するのは冗長だと感じたため、既存の認証情報を使い回しつつMCPサーバを起動するghコマンドの拡張機能を開発しました。

https://github.com/shuymn/gh-mcp

開発の動機

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