Closed5

github mcpを安全に動かす試行

hangedmanhangedman

やること

  • github mcpを使うとissue, pull-request作成が自由にAIから行える
  • PATの管理が大変
  • GitHub App化して、そのトークンをgithub mcpに使わせる
hangedmanhangedman

GitHub Appの登録

この記事を参考にやってみる
Claude Codeが書いたissueはClaude Codeに書いてもらう

Webhookはオフで良くて、Permissionsは以下3点が必要です。

Content: Read-only
Issues: Read and write
Pull requests: Read and write

GitHub Appsを作ったら、その後は自分のアカウントにインストールして必要なリポジトリに権限を付ける

ここまでをそのとおり実施

hangedmanhangedman

もっといい方法が見つかった。

エージェント チャットをペア プログラマーとして使用する

にあるようにgemini-cliの設定ファイルは、ユーザーホームとワークスペースどちらにも設定できる。

WORKSPACE/.gemini/extensions
~/.gemini/extensions

エージェントは両方の場所からすべての拡張機能を読み込みますが、同じ名前の拡張機能が両方に存在する場合は、ワークスペース ディレクトリにあるものが優先されます。

ということらしい。

リポジトリでPATを使い分けたいときは下記のようにすればいいということか。

<workspace>/.gemini/extensions/my-extension/gemini-extension.json

内容は下記のように

{
  "name": "my-extension",
  "version": "1.0.0",
  "mcpServers": {
    "github": {
      "timeout": 5000,
      "type": "stdio",
      "command": "/usr/local/bin/docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "GITHUB_PERSONAL_ACCESS_TOKEN",
        "ghcr.io/github/github-mcp-server"
      ],
      "env": {
        "PATH": "/home/yourname/.local/bin",
        "HOME": "/home/yourname",
        "GITHUB_PERSONAL_ACCESS_TOKEN": "***"
      }
    }
  }
}
hangedmanhangedman

まあこれで解決するとして <workspace>/.gemini/extensions は.gitignoreに登録していないと駄目な感じか。MCPサーバ用の全体の環境変数が使えればいいんだけどね。

hangedmanhangedman

最終的に以下のようにした

$ tree .gemini
.gemini
└── extensions
    └── github
        └── gemini-extension.json

3 directories, 1 file

.gitignoreにこのgemini-extsnsion.jsonを追加して誤コミットを防止

.gemini/extensions/github/*.json

この状態でプロジェクトルートでgeminiを起動すると、github mcpが起動する。

$ gemini
Loading extension: github (version: 1.0.0)
MCP STDERR (github): GitHub MCP Server running on stdio
...
このスクラップは2ヶ月前にクローズされました