onepassword について
1Password MCP サーバーは、1Password CLI を通じて AI アシスタントが保管庫内の認証情報にアクセスし、管理するための MCP サーバーです。認証情報の表示や項目の作成の前に、elicitation でユーザーの承認を求めます。確認の設定は操作ごと、項目ごとに構成できます。
主な機能
- 01認証情報の表示前に elicitation で承認を求める仕組み
- 02読み取りと書き込みで個別に設定できる確認
- 03承認プロンプトを省略するホワイトリスト項目
- 04自動化向けのサービスアカウントトークン認証
- 05読み取り専用または書き込みの権限を制御するツールグループ
活用シーン
- 01ユーザーの承認後にアシスタントが API キーを検索して読み取る
- 02読み取り専用の環境で項目の存在とフィールド構成を確認する
- 03アシスタント経由でログイン項目やセキュアノートを作成する
MCP 対応
本プロジェクトは MCP サーバーであり、1Password 保管庫の一覧取得、読み取り、作成に関するツールと onepassword://config リソースを MCP クライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y onepassword-mcp-serverOP_SERVICE_ACCOUNT_TOKENシークレットService account token for authentication with 1Password CLI.ENABLED_TOOLGROUPSComma-separated tool groups to enable (readonly, write).SKIP_HEALTH_CHECKSSkip credential validation on server startup.DANGEROUSLY_SKIP_ELICITATIONSBypass all credential approval prompts (exposes all secrets).OP_ELICITATION_READPrompt for approval before revealing credentials.OP_ELICITATION_WRITEPrompt for approval before creating or sharing items.OP_WHITELISTED_ITEMSComma-separated item titles or IDs that bypass read elicitation.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
1Password MCP サーバー
CLI を介して 1Password とやり取りするための MCP サーバーです。AI アシスタントが 1Password の保管庫に保存された認証情報に安全にアクセスし、管理できるようにします。
主な機能
- 確認ベースの承認 - 認証情報の表示やアイテムの作成前に、ユーザーに確認を求めます
- アクションごとの設定 - 読み取り操作と書き込み操作で、確認の有効・無効を個別に設定できます
- アイテムの許可リスト - 特定のアイテムを事前に承認し、確認プロンプトを省略できます
- 1Password CLI を介した安全な認証情報へのアクセス
- 自動化向けのサービスアカウント認証
- 保管庫とアイテムの読み取りおよび書き込み操作
- 権限ベースのアクセス制御に対応したツールのグループ化
前提条件
-
1Password CLI (op) - インストールされ、PATH から利用できる必要があります
-
1Password サービスアカウント - 認証に必要です
機能
ツール
| ツール | グループ | 説明 |
|---|---|---|
onepassword_list_vaults | 読み取り専用 | アクセス可能なすべての保管庫を一覧表示します |
onepassword_list_items | 読み取り専用 | 特定の保管庫内のアイテムを一覧表示します |
onepassword_get_item | 読み取り専用 | アイテムの詳細を取得します(認証情報を表示するには承認が必要です) |
onepassword_get_item_metadata | 読み取り専用 | シークレット値を含めずにアイテムのメタデータ(タイトル、フィールド、保管庫、タグ)を取得します — 確認プロンプトはありません |
onepassword_list_items_by_tag | 読み取り専用 | タグでアイテムを検索します |
onepassword_create_login | 書き込み | 新しいログイン認証情報を作成します(承認が必要です) |
onepassword_create_secure_note | 書き込み | 新しいセキュアノートを作成します(承認が必要です) |
onepassword_share_item | 書き込み | 既存のアイテムの共有 URL を発行します(承認が必要です) |
onepassword_create_api_credential | 書き込み | 新しい API Credential アイテムを作成します(承認が必要です) |
リソース
| リソース | 説明 |
|---|---|
onepassword://config | サーバーの設定と状態(デバッグ用) |
ツールグループ
ENABLED_TOOLGROUPS 環境変数を使って、利用可能にするツールを制御します。
| グループ | 説明 |
|---|---|
readonly | 読み取り専用操作(一覧表示、取得) |
write | 書き込み操作(作成) |
例:
ENABLED_TOOLGROUPS="readonly"- 読み取り操作のみ(ほとんどのユースケースでより安全です)ENABLED_TOOLGROUPS="readonly,write"- フルアクセス- 未設定 - すべてのツールが有効になります(デフォルト)
クイックスタート
インストール
npx onepassword-mcp-server
設定
必須の環境変数を設定します。
export OP_SERVICE_ACCOUNT_TOKEN="your-service-account-token"
Claude Desktop の設定
macOS:~/Library/Application Support/Claude/claude_desktop_config.json
Windows:%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"onepassword": {
"command": "npx",
"args": ["-y", "onepassword-mcp-server"],
"env": {
"OP_SERVICE_ACCOUNT_TOKEN": "your-service-account-token",
"ENABLED_TOOLGROUPS": "readonly"
}
}
}
}
Claude Desktop を再起動すれば、利用を開始できます。
環境変数
| 変数 | 必須 | 説明 | デフォルト |
|---|---|---|---|
OP_SERVICE_ACCOUNT_TOKEN | はい | 1Password サービスアカウントトークン | - |
ENABLED_TOOLGROUPS | いいえ | 有効にするツールグループ(カンマ区切り) | すべて有効 |
SKIP_HEALTH_CHECKS | いいえ | 起動時の認証情報の検証をスキップ | false |
DANGEROUSLY_SKIP_ELICITATIONS | いいえ | true に設定すると、すべての確認プロンプトを省略します(すべてのシークレットが公開されます) | 未設定(エリシテーションが必要) |
OP_ELICITATION_READ | いいえ | 認証情報を表示する前にプロンプトを表示 | true |
OP_ELICITATION_WRITE | いいえ | アイテムの作成/共有前にプロンプトを表示 | false |
OP_WHITELISTED_ITEMS | いいえ | 読み取り時のエリシテーションを省略するアイテムのタイトルまたは ID(カンマ区切り) | なし |
セキュリティに関する考慮事項
- 起動時の安全性チェック:エリシテーション(HTTP フォールバック URL)が設定されているか、
DANGEROUSLY_SKIP_ELICITATIONS=trueで明示的にオプトアウトされていない限り、サーバーは起動しません。これにより、すべてのシークレットに無制限にアクセスできる状態になるのを防ぎます。 - エリシテーションによる承認(読み取り):デフォルトでは、
get_itemは機密性の高い認証情報を表示する前に、ユーザーに確認を求めます。読み取りによって既存のシークレットが公開されるため、デフォルトでプロンプトが有効になっています。 - 書き込み時のエリシテーションはデフォルトで無効:書き込み操作(
create_login、create_secure_note、create_api_credential、share_item)では、デフォルトでプロンプトは表示されません。書き込みでは新しいアイテムを作成するか、既存アイテムの共有 URL を発行するだけで、これらのツールから既存データを上書きまたは削除することはできません。そのため、プロンプトによる手間は正当化されません。書き込み時の確認を有効にするには、OP_ELICITATION_WRITE=trueに設定してください。 - サービスアカウントトークン:環境変数で渡され、ログには記録されません。
- CLI 引数:作成操作のパスワードは CLI 引数として渡されます(プロセス一覧に短時間表示されます)。
- 推奨事項:書き込みアクセスが特に必要でない限り、
readonlyツールグループを使用してください。
認証情報の承認の仕組み
- デフォルトでは、
onepassword_get_itemはアイテムのメタデータを返し、機密性の高いフィールドには[REDACTED]と表示します。 - サーバーはエリシテーションを通じて、認証情報へのアクセスを承認するようユーザーに求めます。
- 承認されると、そのリクエストに対して完全な認証情報が返されます。
- ホワイトリストに登録されたアイテム(
OP_WHITELISTED_ITEMSでタイトルまたはアイテム ID を照合)は、承認プロンプトを完全に省略します。
承認なしで存在を確認する
onepassword_get_item_metadata は、onepassword_get_item のメタデータ専用の関連ツールです。同じアイテム形式(タイトル、カテゴリー、保管庫、タグ、フィールドラベル、種類、URL、日付、機密性のないフィールド値)を返しますが、機密性の高いフィールドの値は完全に除外します([REDACTED] のプレースホルダーもなく、漏えいもありません)。また、承認プロンプトが表示されることもありません。「保管庫 Y にタイトル X のアイテムがあるか」「このアイテムにはどのフィールドがあるか」だけを確認したい場合に使用してください。認証情報の値を実際に読み取る必要がある場合に限り、onepassword_get_item を呼び出してください。
設定例
すべての確認を無効にする(完全自動のワークフロー):
DANGEROUSLY_SKIP_ELICITATIONS=true
書き込みのみ確認し、読み取りは自動承認する(起動時に HTTP フォールバック URL が必要です — DANGEROUSLY_SKIP_ELICITATIONS=true を設定すると、アクションごとの設定が上書きされます):
ELICITATION_REQUEST_URL="https://your-endpoint/request"
ELICITATION_POLL_URL="https://your-endpoint/poll"
OP_ELICITATION_READ=false
OP_ELICITATION_WRITE=true
デフォルトの動作(読み取り時にプロンプトを表示し、書き込み時は確認なし — 多くのエージェントのユースケースにおすすめ):
ELICITATION_REQUEST_URL="https://your-endpoint/request"
ELICITATION_POLL_URL="https://your-endpoint/poll"
# OP_ELICITATION_READ defaults to true
# OP_ELICITATION_WRITE defaults to false
タイトルまたは ID で特定の項目をホワイトリストに登録する(これらは常に自動承認されます):
OP_WHITELISTED_ITEMS="Stripe Key,AWS Credentials,abc123def456"
開発
プロジェクト構成
onepassword-mcp-server/
├── local/ # Local server implementation
│ └── src/
│ ├── index.ts # Main entry point
│ └── index.integration-with-mock.ts
├── shared/ # Shared business logic
│ └── src/
│ ├── server.ts # Server factory
│ ├── tools.ts # Tool registration
│ ├── tools/ # Individual tools
│ ├── onepassword-client/ # CLI wrapper
│ └── types.ts # TypeScript types
├── tests/ # Test suite
│ ├── functional/ # Unit tests
│ ├── integration/ # MCP protocol tests
│ └── manual/ # Real CLI tests
└── package.json
ローカルでの実行
# Install dependencies
npm run install-all
# Build
npm run build
# Run tests
npm test
# Run integration tests
npm run test:integration
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。