Upgrade to Pro — share decks privately, control downloads, hide ads and more …

1Password 認証を MCP の起動単位にする

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

1Password 認証を MCP の起動単位にする

2026/08/22 Kanazawa.rb meetup 168 LT 2本目
1本目の続き。GitHub MCP Server を利用すると 1Password の承認ダイアログ表示頻度を軽減できるという話

1本目:
AI Agent に GitHub の鍵を渡しっぱなしにしない
https://speakerdeck.com/kiyohara/ai-agent-ni-github-no-kagi-o-watashippanashi-ni-shinai

Avatar for Tomokazu Kiyohara

Tomokazu Kiyohara

August 22, 2026

More Decks by Tomokazu Kiyohara

Other Decks in Technology

Transcript

  1. 1Password 認証を MCP の起動単位にする GitHub MCP Server × op run

    kiyohara Kanazawa.rb meetup #168 — LT2 ・ 2026/08/22
  2. 承認プロンプトは 初めて op を実行したときに出る 「初めて」の単位は コマンドを実行する context ごと ※ ほかにも再表示される場面

    認証要求のない状態が 10分以上続いたあと ・ 最後に認証してから 12時間以上たったあと ・ 1Password を手動で lock したあと
  3. gh を呼ぶたびに op も呼ばれる LT1 の方式では GitHub 操作ごとに op を経由する

    実行 context が作り直されるたびに プロンプトが出うる ※ agent 側が shell を毎回作り直す構成では 認証プロンプトが高頻度になる
  4. MCP なら o p は server 起動時だけ 1回の server 起動

    → 複数の tool call ※ agent の再起動 / server の crash / 設定変更 / 別の agent を同時に使うと server も別に起動される
  5. GitHub 公式の MCP Server は Docker で動かす 起動のしかたは何通りかある — 公式の案内も

    Docker が中心 local の Docker image native binary GitHub hosted の remote このスライドでは local の Docker image を選ぶ Docker で使うときの注意点 • 公式の public Docker image を使う ghcr.io/github/github-mcp-server • local の stdio server として起動する • PAT を渡す環境変数は gh の GH_TOKEN とは違う GITHUB_PERSONAL_ACCESS_TOKEN ※ PAT はどの方式でも使える — native binary は同じ環境変数 remote は Authorization header へ載せる
  6. o p run と docker run を組み合わせて渡す GITHUB_PERSONAL_ACCESS_TOKEN ='op://Development/example GitHub

    PAT/token' \ EN op run --no-masking -- docker run -i --rm \ -e GITHUB_PERSONAL_ACCESS_TOKEN 同じ名前の環境変数を container へ引き継ぐ \ GITHUB_PERSONAL_ACCESS_TOKEN ghcr.io/github/github-mcp-server op run のオプション docker run のオプション - - no- m asking 出力へ手を入れない(stdio の JSON- - i stdin を開いたままにする RPC を壊さないため) - - ここから先を子プロセスとして実行する - - rm server 終了時に co ntainer を削除する - e N A M E 親プロセスの同名環境変数を co ntainer へ 渡す
  7. MCP server として使うために用意した file 決まった置き場所はない — ここでは1つの directory へまとめた例 ※

    やり方は1つではない —「repo に置く」「別 repo に置く」「dotfiles に置く」いずれでもよい
  8. wrapper が config を読んで server を起動する 長い command を毎回書かずに済むよう 1本の

    script へ固定する mcp-github-op-integrated.sh CONFIG_FILE="$REPO_ROOT/.config/github-op-integrated.conf" .config/github-op-integrated.conf GITHUB_PERSONAL_ACCESS_TOKEN= op://<VAULT>/<ITEM>/<FIELD> exec op run --no-masking \ GITHUB_TOOLS= --env-file="$CONFIG_FILE" --\ pull_request_read, docker run -i --rm \ create_pull_request,… -e GITHUB_PERSONAL_ACCESS_TOKEN \ -e GITHUB_TOOLS \ ghcr.io/github/github-mcp-server 補足 --env-file config に書いた参照をまとめて解決してから渡す exec wrap per 自身を op run へ置き換えて stdio と終了 status をそのまま返す GITHUB_TOOLS MCP server が公開する tool を絞るための変数 config に入るのは secret reference と tool 名だけで 実 token は入らない(とはいえ gitignore は推奨)
  9. 設定形式は違っても起動する command は同じ agent ごとに書式は違う agent project 設定 Cursor .cursor/mcp.json

    Claude Code .mcp.json Codex .codex/config.toml どの形式でも server の実行 command には同じ path を指定する ./.agents/mcp/github-op-integrated/mcp-github-op-integrated.sh ※ project-scoped の server は初回に承認を求められることがある ※ 設定を書き換えたら登録できているか確かめる(Cursor は設定画面で有効化しないと使えない)
  10. 登録しただけでは agent は MCP server を使わない 使ってほしいことを A GEN T

    S.m d / CLAUDE.md へ書いておく まず書く GitHub の PR / issue / review 操作は github-op-integrated MCP を使う 書ければ さらによい MCP が未設定 起動失敗 必要な tool が allowlist に無い このいずれかのときだけ gh へ fallback する ※ git commit と SSH 経由の push / fetch は この routing とは別経路
  11. 認証を消すのではなく起動単位へまとめる 最小権限 PAT × project 設定 × MCP 起動時注入 ※

    サンプル実装 — 数ある構成のうちの一例 github.com/kiyohara/slapex/tree/main/.agents/mcp/github-op-integrated