op-mcp
op-mcp
1Password CLI (op) をラップし、MCPクライアント(Cowork、Claude Code、Claude Desktop)に対してシークレットへのアクセスとアイテム管理機能を提供するMCPサーバーです。
アーキテクチャ
MCP client (Cowork, Claude Code, Claude Desktop)
↓ stdio (MCP protocol)
op-mcp (this Python server)
↓ subprocess per tool call
op CLI (1Password CLI)
↓ biometric prompt (Touch ID) + 1Password desktop app
1Password vaultsこのPythonサーバーは意図的に軽量に設計されています。すべてのツールハンドラーは op CLIを呼び出し、JSONを解析するか、生の出力を返します。生体認証、セッションキャッシュ、およびすべての保管庫へのアクセスはCLIが処理します。Python側はMCPプロトコルとargvの構築のみを処理します。
この設計は本質的にステートレスです。各ツール呼び出しは新しいCLIプロセスを生成します。op は1Passwordデスクトップアプリ内で独自のセッションをキャッシュするため、サーバー側でセッション、トークン、資格情報を管理することはありません。詳細な根拠については docs/design-notes.md を参照してください。
前提条件
Python 3.11以降
opCLIがインストールされており、PATHが通っていること。Homebrew経由でのインストール:brew install --cask 1password-cli(v2.33.1で動作確認済み)。1Passwordデスクトップアプリがインストールされており、CLI統合が有効であること: 1Password → 設定 → 開発者 → ✓ 「1Password CLIと統合する」。
CLI認証用にTouch IDが有効になっていること(同じ設定画面)。
インストール
uv tool install .これにより分離されたvenvが作成され、op-mcp がPATHに追加されます。コード変更後にアップグレードするには以下を実行します:
uv tool install --force --reinstall .両方のフラグが必要です。--force は既存の実行ファイルを上書きし、--reinstall はビルドキャッシュをバイパスします。
実行
サーバーはstdio経由で通信するため、通常は手動で起動するのではなく、MCPクライアントによって起動されます。ローカルでのスモークテスト用:
op-mcpサーバーはstderrにログを出力し、stdinでMCPプロトコルメッセージを待機します。Ctrl-Cで終了します。
MCPクライアントの設定
Claude Desktop: 設定 → コネクタ → 追加 → コマンドとして op-mcp を入力します。または claude_desktop_config.json を直接編集します:
{
"mcpServers": {
"op": {
"command": "op-mcp"
}
}
}Claude Code: .mcp.json (プロジェクト単位) または ~/.claude/mcp.json (グローバル) に同じ形式で追加します。
Cowork: CoworkのMCPサーバー設定から追加します。
推奨される権限
読み取りは許可しても安全ですが、書き込みには確認を求めるべきです。
{
"permissions": {
"allow": [
"mcp__op__op_ping",
"mcp__op__op_version",
"mcp__op__op_list_vaults",
"mcp__op__op_get_item",
"mcp__op__op_read_secret",
"mcp__op__op_list_items"
],
"ask": [
"mcp__op__op_create_item",
"mcp__op__op_edit_item",
"mcp__op__op_delete_item"
]
}
}開発
uv sync --extra dev
uv run pytest # unit tests (fake `op` binary)
RUN_LIVE_OP_TESTS=1 uv run pytest -m live # live tests against real op CLI
uv run ruff check
uv run pyrightテストには偽の op バイナリ(一時的なシェルスクリプト)を使用するため、実際のCLIや1Passwordへのアクセスは不要です。ライブテスト(@pytest.mark.live とマークされたもの)は実際のCLIに対して実行され、Touch IDをトリガーするため、デフォルトではスキップされます。
ツール
合計9つのツール: インフラストラクチャ用2つ、読み取り用4つ、書き込み用3つ。
インフラストラクチャ
ツール | 説明 |
| MCPサーバーの生存確認 |
|
|
読み取りツール
ツール | 説明 |
| アクセス可能なすべての保管庫(名前とID)を一覧表示 |
| 名前またはIDでアイテムの全フィールドを取得 |
|
|
| 保管庫内のアイテム(またはすべての保管庫)を一覧表示 |
書き込みツール
ツール | 説明 |
| 新しいアイテムを作成 |
| 既存のアイテムを編集 |
| アイテムをアーカイブまたは完全に削除 |
範囲外(現時点)
op signin/op signout— セッション管理はopの役割です。op document/op vault— ユースケースが出てきたら追加します。op inject/op run— テンプレート注入や環境変数の読み込みワークフローは、MCPに直接対応するクリーンな機能がないコマンドラインの利便性機能です。サービスアカウントトークン — このサーバーはデスクトップアプリでの生体認証を前提としています。
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/jluckyiv/op-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server