1Password MCPをClaude Codeに導入する完全ガイド — シークレット管理をVaultに一元化する

1Password MCPをClaude Codeに導入する完全ガイド — シークレット管理をVaultに一元化する

1Password MCPサーバーをClaude Codeに接続する手順を完全解説。インストール・Vault設定・環境変数の自動注入・claude_desktop_config.jsonの設定方法から、実運用でのシークレット管理パターンまでカバー。

エンジニアのゆとです。

Claude CodeのMCPサーバーを増やしていくうちに、ある問題に気づいた。

APIキーをclaude_desktop_config.jsonに直接書いている。GitHubにpushしたことはないけど、ファイルはそこにある。しかもClaude Codeが自律的に動くとき、そのキーに何が起きているかを把握しきれていない。

「エージェントにクレデンシャルをどう渡すか」という問題を、まともに解決しようとすると 1Password MCP に行き着く。

この記事では、1Password MCP の設定手順と、Claude Code での実際の使い方を一通り書く。


何を解決するのか

まず「なぜ1Password MCPが必要なのか」を整理しておく。

Claude Codeで複数のMCPサーバーを使うとき、各サービスのAPIキーが必要になる。現状の管理方法には問題がある。

claude_desktop_config.json に書く場合:

{
  "mcpServers": {
    "github": {
      "env": {
        "GITHUB_TOKEN": "ghp_xxxxxxxxxxxxxxxx"
      }
    }
  }
}

これはトークンが平文でファイルに残る。バックアップやDotfiles管理でうっかりGitにコミットするリスクがある。Claude Codeのログに出力される可能性もある。

1Password MCP はこれを解決する。トークンはVaultに保管し、実行時にだけ暗号化チャネル経由でClaude Codeに渡す。config.jsonには op:// という参照パスだけ書けば良くなる。


前提条件

  • 1Password アカウント(個人プランでOK、Businessは不要)
  • 1Password デスクトップアプリがMacにインストール済み
  • 1Password CLI(op コマンド)がインストール済み
  • Claude Code がインストール済み

1Password CLI のインストール:

brew install 1password-cli

インストール確認:

op --version
# 2.x.x と表示されればOK

Step 1: 1Password CLI の認証設定

まず1Password CLIを1Passwordアプリと接続する。

op signin

初回はブラウザが開き、1Passwordアカウントへのサインインを求められる。完了すると、以降はデスクトップアプリのロック解除状態がCLIと共有される。つまりMacのロックを解除して1Passwordアプリが動いていれば、op コマンドは追加認証なしで使える。

動作確認:

op vault list

自分のVault一覧が表示されれば接続OK。


Step 2: MCPサーバー用のVaultを作成する

既存のVaultにMCPシークレットを混ぜることもできるが、管理しやすくするため専用Vaultを作ることを推奨する。

op vault create "Claude Code MCP"

作成確認:

op vault list
# Claude Code MCP が表示される

Step 3: シークレットをVaultに登録する

各MCPサーバーのAPIキーをVaultに登録する。

GitHubトークンを登録する例:

op item create \
  --category "API Credential" \
  --title "GitHub MCP Token" \
  --vault "Claude Code MCP" \
  "credential[password]=ghp_xxxxxxxxxxxxxxxx"

登録できたか確認:

op item get "GitHub MCP Token" --vault "Claude Code MCP" --fields credential

GUIで登録したい場合は、1Passwordアプリで「Claude Code MCP」Vaultを開いて「新規アイテム→パスワード」から登録できる。

複数のシークレットを登録する場合の命名規則:

  • GitHub MCP Token
  • Slack MCP Token
  • Linear MCP Token

ツール名をプレフィックスにしておくとVault内で整理しやすい。


Step 4: claude_desktop_config.json を更新する

設定ファイルのパス: ~/Library/Application Support/Claude/claude_desktop_config.json

従来の書き方(平文キー):

{
  "mcpServers": {
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_TOKEN": "ghp_xxxxxxxxxxxxxxxx"
      }
    }
  }
}

1Password参照に書き換えた版:

{
  "mcpServers": {
    "github": {
      "command": "op",
      "args": [
        "run",
        "--",
        "npx",
        "-y",
        "@modelcontextprotocol/server-github"
      ],
      "env": {
        "GITHUB_TOKEN": "op://Claude Code MCP/GitHub MCP Token/credential"
      }
    }
  }
}

op run -- の構造がポイントだ。op コマンドが GITHUB_TOKEN の値を見て op://... という参照パスをVaultから取得した実際の値に展開してから、後続のコマンド(npx)を実行する。Claude Codeのプロセスが受け取るのは実際の値だが、設定ファイルには参照パスしか残らない。

op:// のパス形式: op://<Vault名>/<アイテム名>/<フィールド名>


Step 5: 動作確認

Claude Codeを起動して、MCPサーバーが正常に接続されるか確認する。

claude

起動時のMCPサーバー一覧に github が表示され、エラーなく接続されていればOK。

うまくいかない場合は次を確認する:

1Password CLIの認証状態:

op account get

エラーが出る場合は op signin から再実行。

シークレット参照パスの確認:

op read "op://Claude Code MCP/GitHub MCP Token/credential"

実際の値が表示されればパスは正しい。


実運用での管理パターン

導入後の実際の運用で使えるパターンをまとめる。

パターン1: 環境別にVaultを分ける

Claude Code MCP
├── GitHub MCP Token
├── Slack MCP Token
└── Linear MCP Token

Claude Code MCP (Dev)
├── GitHub MCP Token (dev bot)
└── Staging API Key

本番用と開発用でVaultを分けると、誤って本番のキーを開発環境から使うリスクを減らせる。

パターン2: チーム共有の場合

1Password BusinessプランであればVaultをチームメンバーと共有できる。

op vault user grant \
  --vault "Claude Code MCP" \
  --user colleague@example.com \
  --role viewer

ビューア権限を付けると、値の閲覧(op run経由の利用)はできるが、追加・変更はできない。MCP実行専用のアカウントには viewer で十分。

個人プランでも、同一の1Passwordアカウントを複数デバイスで使えば、自宅PCとオフィスPCで同じVaultを使いまわせる。

パターン3: キーローテーション

APIキーをローテーションする必要がある場合、1Password Vault上のアイテムを更新するだけで全デバイスに反映される。

op item edit "GitHub MCP Token" \
  --vault "Claude Code MCP" \
  "credential[password]=ghp_newtoken_xxxx"

config.jsonの書き換えは不要。次回Claude Codeを起動したときに新しい値が使われる。


.envファイルのシークレットも移行する

MCP以外の用途、たとえばClaude Codeのカスタムスクリプトで使う .env のシークレットも1Password管理に移せる。

従来の .env:

OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxx
ANTHROPIC_API_KEY=sk-ant-xxxxxxxx

op run で注入する方式:

# .env の代わりに参照パスを書く
OPENAI_API_KEY=op://Personal/OpenAI API Key/credential
ANTHROPIC_API_KEY=op://Personal/Anthropic API Key/credential

スクリプト実行時:

op run --env-file=".env" -- python3 my_script.py

これで .envgit add してしまっても平文は残らない。チームリポジトリで共有できる .env.template として機能するようになる。


よくある設定ミス

op run が動かない場合のチェックリスト:

1Password CLIが入っていない:

which op  # /opt/homebrew/bin/op 等が返ればOK

1Passwordアプリがロックされている: Vault参照の実行時は1Passwordアプリのロックが解除されている必要がある。ロックされていると [ERROR] authorization prompt dismissed が出る。

参照パスの大文字・小文字: Vault名とアイテム名は大文字小文字を区別する。op vault list / op item list で正確な名前を確認してからパスを書く。

フィールド名の確認:

op item get "GitHub MCP Token" --vault "Claude Code MCP" --format json | jq '.fields[] | {id, label}'

アイテムに含まれるフィールド名の一覧が出る。credential と書いたが実際のフィールドが password の場合などはここで確認できる。


まとめ

1Password MCPの設定手順:

  1. brew install 1password-cli でCLIをインストール
  2. op signin でデスクトップアプリと接続
  3. MCPシークレット用のVaultを作成
  4. APIキーをVaultに登録
  5. claude_desktop_config.jsonenv の値を op://... 参照に書き換え
  6. コマンドを op run -- で囲む

設定が完了すると、config.jsonには平文のAPIキーが一切残らなくなる。バックアップをGitHub等に上げても、シークレットがリークするリスクがゼロになる。

MCP接続先が増えるほど、この管理方式の価値が上がる。5個のサービスのAPIキーを平文で管理するよりも、Vault1つに集めてop runで注入する方が圧倒的にシンプルだ。

記事が見つかりません:

記事が見つかりません:

developer.1password.com
1Password MCP Server — Developer Docs 1Password MCPサーバーの公式ドキュメント。セットアップガイドとAPIリファレンス。
← 記事一覧に戻る