Skip to main content
Glama
proton-pass-mcp-local

proton-pass-mcp-local

by 1llum1n4t1s

Proton Pass MCP

既存の pass-cli 認証セッションを使って、MCPクライアントからProton Passを検索するローカルMCPサーバーです。Proton公式の製品ではありません。

利用できる機能

ツール

用途

session_status

セッションの接続確認

list_vaults

保管庫名と共有IDの一覧

list_shares

許可された共有の一覧

list_items

タイトルによる検索とアイテム一覧

search_notes

テキストノートのタイトル・本文の部分文字列検索(取得制限の設定中は使用不可)

create_field_handoff

値を会話へ返さず、保護された一時ファイルへの参照を作成

release_field_handoff

未使用・失敗した受け渡しを回収

read_field

理由を指定して1フィールドを取得。アイテム・フィールド・期限・頻度の制限が可能

search_notes は本文を内部で照合し、一致するタイトル・ID・状態だけ返します。大文字小文字を区別します。添付ファイルは検索対象に含みません。state の既定値は active、ごみ箱込みなら all を指定します。

list_vaults で得た share_id ごとに検索します。complete: false の場合は、同じ条件に next_cursor を cursor として渡して続行し、各ページの matches を集めてください。対象一覧が途中で変わった場合は最初から検索します。本文は照合時点の値を使います。

list_items のタイトル検索は大文字小文字を区別しません。next_offset がある場合は、その値を offset に指定して続行します。

search_notes・read_field・create_field_handoff は、具体的な依頼・目的を示す reason(前後の空白を除いて5〜300文字、Unicodeコードポイント数で計測)が必要です。read_field は要求した値を平文のツール結果としてAIへ渡します。接続先の会話履歴・作業ログに残る可能性があり、理由の指定は対話的な承認やログの抑制を行う仕組みではありません。Codexで会話に値を出さず入力する場合は、次のファイル受け渡しを使ってください。

read_field の field は空白・日本語・セクション名(例 本番.パスワード)を含む名前を指定できます。1〜100文字(Unicodeコードポイント数)で、制御文字は使用できません。

Codexで会話にパスワードを出さずログインする

MCPとCodexのブラウザ実行環境が同じローカルファイルへアクセスできる場合に使えます。MCPから返るのは handoff_id・file_path・expires_at・consumer_module_url・フィールド名だけです。パスワード本体は返しません。

  1. ログイン先のURLと対象アカウントを確認します。

  2. create_field_handoff に共有ID・アイテムID・フィールド名・理由を渡します。

  3. Codexのブラウザ実行コードで、返された参照を withFieldHandoff へ渡して入力します。本文を読むツール、console.log、nodeRepl.write などへ値を出さないでください。

  4. 未使用で中止した場合は release_field_handoff に handoff_id を渡します。入力時の例外は補助関数が使用後の削除を行います。回収済み・未知のIDへの再実行も安全ですが、当該サーバーで確認できないIDは { released: false } を返します。

Codexの内蔵ブラウザを操作するJavaScriptでの例です。receipt は作成ツールが返した参照、tab は確認済みのブラウザタブです。URLとラベルは実際のログイン先へ合わせてください。

var { withFieldHandoff } = await import(receipt.consumer_module_url);
await withFieldHandoff(receipt, async value => {
  if (new URL(await tab.url()).origin !== 'https://example.com') {
    throw new Error('ログイン先が変わりました。');
  }
  await tab.playwright.getByLabel('パスワード', { exact: true }).fill(value);
});

補助関数は一度だけファイルを取得できるようにし、コールバックの成功・失敗にかかわらず使用後に削除します。コールバックの戻り値や生の例外も外へ返しません。通常の返却値は { consumed: true } です。

ファイル受け渡しは1.0.10以降で使えます。下記の設定で公開版を起動します。PROTON_PASS_DISABLE_SECRET_READ=1 は会話へ平文を返す read_field だけを無効化し、ファイル受け渡しは引き続き使えます。既存の PROTON_PASS_ACCESS_POLICY も併用できます。

{
  "mcpServers": {
    "proton-pass": {
      "command": "npx",
      "args": ["--yes", "@kagayoi/proton-pass-mcp@1.0.10"],
      "env": {
        "PASS_CLI_PATH": "C:/Users/USER/AppData/Local/Programs/ProtonPass/pass-cli.exe",
        "PROTON_PASS_SESSION_DIR": "C:/Users/USER/AppData/Local/Kagayoi/ProtonPassMcp/session",
        "PROTON_PASS_DISABLE_SECRET_READ": "1"
      }
    }
  }
}

一時ファイルの設定

動作

PROTON_PASS_HANDOFF_TTL_SECONDS

有効期限。1〜300秒、既定60秒。取得ポリシーの期限が早ければそちらを優先

PROTON_PASS_HANDOFF_DIR

任意の保管用ディレクトリ。既存の親を持つ正規化済みのローカル絶対パスが必要。UNC・ルートディレクトリそのものは指定不可。未指定はユーザー別の一時領域

Windowsでは現在のユーザーだけを許可するACL、POSIXでは所有者限定のディレクトリ・ファイル権限を確認してから値を取得します。既存領域の権限が安全でない場合や、リンクを検出した場合は拒否します。権限を自動で緩めたり修復したりはしません。

未使用ファイルは期限回収し、MCPサーバー終了時にも回収します。サーバーが突然終了した場合は監視プロセスが回収します。OS停止などで両方とも動けなかった場合は、次回の起動で期限切れを回収し、所有サーバーの停止を確認できた分は期限前でも回収します。削除に失敗した場合は成功扱いにせず、期限回収を継続します。起動時に既存領域の検証・回収に失敗した場合は起動を拒否するため、保存先とアクセス権を確認してください。

この方式では値が会話へ出る経路を減らせますが、ローカルファイル・実行メモリ・ブラウザ内には平文が存在します。同じOSユーザーや管理者からの隔離、メモリやディスクの復元不能な消去、実行環境の全内部ログへの非保存は保証しません。Grok Botのようにファイルから直接入力できないクライアントでは、この方式での自動入力はできません。

ログインに使いながら取得範囲を制限する

まずProton側で、エージェント専用のPATに必要なアイテムだけ・viewer(閲覧専用)・短い有効期限を設定し、そのPATで認証した専用セッションを使うことを推奨します。保管庫全体を許可すると、その中の全アイテムがアクセス対象になります。PATの作成・期限・権限は Proton公式のアクセス制御 を参照してください。このMCPはPATや既存セッションの権限を自動変更しません。

MCP側でも PROTON_PASS_ACCESS_POLICY に次のようなJSONを指定できます。指定したアカウントの username・password・totp は引き続き取得でき、許可外のアイテムやフィールドはCLIを呼ぶ前に拒否します。

{
  "allowed_items": [
    {
      "share_id": "SHARE_ID",
      "item_id": "ITEM_ID",
      "fields": ["username", "password", "totp"]
    }
  ],
  "max_reads_per_minute": 10
}

SHARE_ID・ITEM_ID は list_vaults / list_shares / list_items で確認して置き換えます。fields は保存されたアイテムで使う正確なフィールド名です。設定変更後はMCPサーバーを再起動してください。

取得制限は1.0.10以降で使えます。次の設定で公開版を起動します。パスとIDは自分の配置先・許可するアイテムへ置き換えます。

{
  "mcpServers": {
    "proton-pass": {
      "command": "npx",
      "args": ["--yes", "@kagayoi/proton-pass-mcp@1.0.10"],
      "env": {
        "PASS_CLI_PATH": "C:/Users/USER/AppData/Local/Programs/ProtonPass/pass-cli.exe",
        "PROTON_PASS_SESSION_DIR": "C:/Users/USER/AppData/Local/Kagayoi/ProtonPassMcp/session",
        "PROTON_PASS_ACCESS_POLICY": "{\"allowed_items\":[{\"share_id\":\"SHARE_ID\",\"item_id\":\"ITEM_ID\",\"fields\":[\"username\",\"password\",\"totp\"]}],\"max_reads_per_minute\":10}"
      }
    }
  }
}

設定項目

動作

allowed_items

必須。共有ID・アイテムID・フィールド名の完全一致で許可。空配列なら許可アイテムなしで一覧も空

max_reads_per_minute

直近60秒の取得試行上限。1〜1000、既定10。許可されたフィールドのCLI試行は失敗時も数える

expires_at

任意。有効期限をタイムゾーン付きISO 8601で指定。例:2027-01-01T00:00:00Z。運用時は必要な期限へ置き換える

設定中は一覧・タイトル検索も許可されたアイテムと共有に絞ります。ノート本文の照合から許可外の内容を推測する経路を残さないため、search_notes は拒否します。期限は処理開始時・認証確認後・結果返却前に確認し、途中で切れた場合も値を返しません。session_status は期限切れ後も接続状況を確認できます。

環境変数が未設定なら従来どおり利用できます。設定JSONはUTF-8で64 KiB以内、許可アイテムは最大1000件、各アイテムのフィールドは重複なしの1〜32件です。空文字、不正JSON、未知の設定項目、重複した許可アイテムなどは起動を拒否します。許可を変更するMCPツールは提供していません。

この制限はMCP経由の誤取得や連続取得を抑えるためのものです。回数はサーバープロセスごとに保持し、再起動でリセットします。設定を書き換えたり、別のCLI・MCPプロセスを実行できる相手を隔離する仕組みではないため、Proton側のアクセス制御と組み合わせてください。

read_field で取得した値はAIへ渡ります。接続先によるログ保存をこのMCPから禁止したり、取得済みのパスワードを期限切れで消したりすることはできません。ファイル受け渡しを使う場合も、入力先のブラウザURLはCodexの入力コードで確認してください。

平文を返す取得ツールを無効にする

PROTON_PASS_DISABLE_SECRET_READ=1 は、平文を会話へ返す read_field を登録しない設定です。0・未設定では従来どおり登録し、その他の値は起動拒否です。create_field_handoff は引き続き使えるため、この設定のままCodexでファイル経由のログインができます。取得できる対象・フィールドを絞るには PROTON_PASS_ACCESS_POLICY を併用してください。このフラグだけで一切の秘密取得を禁止するものではありません。

Related MCP server: protonpass-mcp

導入

Node.js 22以降が必要です。MCPサーバーをインストールした後、明示的な setup コマンドでProton公式の pass-cli を導入できます。

npm install -g @kagayoi/proton-pass-mcp
proton-pass-mcp setup

setup はProton公式のstable manifestをHTTPSで取得し、現在のOS・CPUに対応する公式配布物をダウンロードします。manifestに記載されたSHA-256と実物が一致した場合だけ展開・配置し、復元不能時に案内する旧版バックアップを除いて一時ファイルを削除します。ログイン、PATの読み取り・保存、PATHの変更は行いません。

PASS_CLI_PATH を指定した場合、MCP起動と --force を付けない setup はその実行ファイルだけを利用します。指定先が無効でも公式の既定配置先や PATH へフォールバックせず、安全のため失敗します。省略した場合は、指定した導入先(未指定なら公式の既定配置先)、PATH の順に既存CLIを探し、見つかればダウンロードしません。stable版を公式の既定配置先へ明示的に再導入するときは、既存CLIの探索を省略する --force を使います。任意の配置先への導入を保証する場合は --force と --install-dir を併用してください。

proton-pass-mcp setup --force
proton-pass-mcp setup --force --install-dir 'D:\Tools\ProtonPass'
proton-pass-mcp setup --help

公式の既定配置先は次のとおりです。

OS

対応CPU

配置先

Windows

x64

%LOCALAPPDATA%\Programs\ProtonPass\pass-cli.exe

macOS

Apple Silicon / x64

~/.local/bin/pass-cli

Linux

arm64 / x64

~/.local/bin/pass-cli

対応外のOS・CPU、manifest形式の変更、危険なダウンロードURL、サイズ上限超過、SHA-256不一致では、既存のCLIを上書きせず終了します。Proton公式の配布manifestとインストーラーは Proton Pass CLI で確認できます。

CLIを認証する

setup と認証は分離されています。MCP専用のセッションディレクトリを決め、同じ環境変数を設定した状態で pass-cli login を一度実行してください。

Windows PowerShellの例:

$env:PROTON_PASS_SESSION_DIR = "$env:LOCALAPPDATA\Kagayoi\ProtonPassMcp\session"
New-Item -ItemType Directory -Force $env:PROTON_PASS_SESSION_DIR | Out-Null
& "$env:LOCALAPPDATA\Programs\ProtonPass\pass-cli.exe" login
& "$env:LOCALAPPDATA\Programs\ProtonPass\pass-cli.exe" info

macOS・Linuxの例:

export PROTON_PASS_SESSION_DIR="$HOME/.local/share/proton-pass-mcp/session"
mkdir -p "$PROTON_PASS_SESSION_DIR"
"$HOME/.local/bin/pass-cli" login
"$HOME/.local/bin/pass-cli" info

既存の pass-cli を利用する場合や --install-dir を指定した場合は、その実行ファイルの絶対パスを PASS_CLI_PATH に設定します。認証方法の詳細はProton公式の Pass CLIドキュメント を参照してください。

MCPクライアントへ登録する

MCPクライアントには次のstdio設定を登録します。PASS_CLI_PATH は省略すると既定配置先または PATH から自動検出されますが、実行するCLIを固定したい場合は明示してください。Windowsでクライアントが npx を解決できない場合は、そのクライアントの手順に従って npx.cmd またはインストール済みサーバーの絶対パスを指定してください。

{
  "mcpServers": {
    "proton-pass": {
      "command": "npx",
      "args": ["--yes", "@kagayoi/proton-pass-mcp@1.0.10"],
      "env": {
        "PASS_CLI_PATH": "C:/Users/USER/AppData/Local/Programs/ProtonPass/pass-cli.exe",
        "PROTON_PASS_SESSION_DIR": "C:/Users/USER/AppData/Local/Kagayoi/ProtonPassMcp/session"
      }
    }
  }
}

自動検出を使う場合は PASS_CLI_PATH の行を削除できます。独自のCLI配置先では、その実行ファイルの絶対パスへ変更してください。PATは設定ファイルに保存せず、既存セッションを参照します。秘密の本文やCLIの生エラーをこのサーバーがログへ保存することはありません。フィールド取得の結果は接続先クライアントに渡ります。

「有効なセッションがありません」と表示された場合は、MCPと同じ PROTON_PASS_SESSION_DIR を設定して pass-cli info で確認します。この表示だけでは期限切れ・失効・保存先の相違を特定できません。保存先が正しく認証が必要な場合は、その保存先で pass-cli login により再認証します。CLIが明示した自動ログアウトは別のメッセージで通知します。MCP自身はログアウトやトークンの保存を行いません。

setup が既存CLIを見つけられない場合は、PASS_CLI_PATH を指定しているなら、その値が正しい実行ファイルを指しているか確認します。自動検出を使うならこの変数を削除し、公式の既定配置先にファイルがあるか、現在のプロセスから PATH が見えるかを確認します。Windows ZIPの展開に失敗した場合はWindows PowerShellが利用できることと公式配布物の取得状態を確認してください。SHA-256検証に失敗した場合は検証を無効化せず、公式側のmanifestと配布物が一致してから再実行してください。

更新途中の失敗では既存ファイルを自動復元します。復元にも失敗した場合は、エラーに表示された一時バックアップを削除せず、CLIを停止してから再実行するか、バックアップ内のファイルを導入先へ戻してください。

Windowsで LOCALAPPDATA が未設定でも、PASS_CLI_PATH または PATH 上の既存CLIを利用できます。新規導入で既定の配置先を決定できない場合は、LOCALAPPDATA を設定するか、setup --install-dir で配置先を指定してください。

ライセンス

このMCPサーバーは MIT License です。setup で別途導入するProton Pass CLIはProtonの GPL-3.0 License に従い、このnpmパッケージにはCLIバイナリを同梱しません。

開発・検証については CONTRIBUTING.md、システムの構造については DESIGN.md を参照してください。

Available Tools

6 tools
list_itemsA
Read-only

Proton Passのアイテムをタイトルで検索・一覧取得する。本文やパスワードは返さない。next_offsetがあれば続行する。

NameRequiredDescriptionDefault
typeNo
limitNo
queryNo
stateNoactive
offsetNo
share_idYes

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark it read-only, so the description goes beyond them by adding non-obvious behavior: only titles are returned, never body or passwords, and pagination continues via next_offset. This materially changes how an agent invokes and interprets results.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences with no filler; the core operation is front-loaded, followed by the critical content exclusion and pagination behavior. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a six-parameter read-only list tool with no output schema, the description communicates the essential semantics and pagination but omits parameter roles such as required share_id, type/state filtering, and limit usage. It is adequate for basic use but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description compensates only for the query parameter (title search) and the offset/next_offset pagination concept. It does not explain share_id, type, state, limit, or how these filters interact, leaving most of the six parameters semantically opaque.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific operation: searching/listing Proton Pass items by title, and explicitly notes it does not return body content or passwords. This distinguishes it from siblings like search_notes and read_field, so an agent can differentiate without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the intended use case: title-based searching/list retrieval while excluding sensitive content, which helps an agent decide against using body/password tools. It does not explicitly name alternatives or state when not to use it, but the context is clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_sharesA
Read-only

Proton Passで許可された共有の一覧を確認する。

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description does not need to repeat that. The description adds no behavioral context beyond what annotations provide – it only states the action. Since the safety profile is covered by annotations, a 3 is appropriate; the description is not misleading.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that front-loads the action and resource. There is no redundant information, and it is appropriately brief for a simple list operation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool (no parameters, no output schema), the description is adequate but minimal. It does not clarify what constitutes a 'share' or what fields are returned in the list. However, the tool name and context suggest a straightforward list operation, and annotations cover safety. Some additional context about the output format would improve completeness, but it is not critically deficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the schema provides no parameter documentation. The baseline for zero-parameter tools is 4, and the description does not need to add parameter semantics. The description is clear about what the tool does, and no parameters are required.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the action (確認する = check/view) and the resource (許可された共有の一覧 = list of authorized shares). It is distinct from sibling tools like list_vaults and list_items, which cover different resources. The verb and object are specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. While the tool name and description make the purpose clear, there is no mention of conditions or scenarios that would lead an agent to choose this over list_vaults or list_items. For a tool with several siblings, this is a gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_vaultsA
Read-only

Proton Passのアクセス可能な保管庫一覧。share_idを他のツールへ渡す。

NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the tool as readOnly and non-destructive, and the description adds that only accessible vaults are returned and that share_id is a key output. It does not describe response shape or possible pagination, but the added context is reasonable for a read-only list.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short clauses with no filler; the first states the operation and scope, the second states the integration purpose. It is front-loaded and every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-parameter, read-only list tool, the description covers the core resource and identifies the important output field, share_id, that other tools need. There is no output schema, so a bit more detail on returned fields would help, but this is largely sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

This tool has zero input parameters and an empty schema, so there is nothing for the description to explain about parameter meaning. The schema coverage is complete by default, and the 0-parameter case correctly gets a baseline score of 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Proton Passのアクセス可能な保管庫一覧', a clear list operation on a specific resource scoped to accessible vaults. The second sentence notes that share_id is meant for other tools, which adds context, though it does not explicitly distinguish this from the sibling list_shares.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool should be used to obtain a share_id to pass to other tools, giving useful context. However, it does not explicitly state when to prefer this over list_shares or other siblings, leaving some routing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_fieldA
Read-only

ユーザーが取得を求めたProton Passの指定フィールド1つを取得する。値がツール結果に含まれるため、秘密値を必要とする明示依頼で使用する。検索はsearch_notesを使う。

NameRequiredDescriptionDefault
fieldYespass-cliのフィールド名。空白・日本語・セクション名を含めて指定可能。
reasonYesアクセスが必要な具体的なユーザー依頼・目的(最大300文字)
item_idYes
share_idYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

annotations(readOnlyHint: true, openWorldHint: true, destructiveHint: false)があり、安全な読み取り操作であることは既に示されている。descriptionはそれに加えて、取得した値がツール結果に含まれること、秘密値が含まれること、使用条件を開示しており、追加の行動的コンテキストを提供している。annotationsと矛盾はない。4点が妥当。

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

2文で構成され、各文が重要な情報を含む。最初の文でツールの目的と秘密値の扱いを明確にし、2文目で検索ツールとの使い分けを簡潔に指示。情報が過不足なくコンパクトにまとまっており、重要な内容が先頭に配置されている。

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

このツールは単一フィールドの取得という単純な操作で、annotationsが安全性を網羅し、output_schemaがないため戻り値の形式は重要だが説明がない。しかし、取得するフィールド名とIDの4パラメータがすべて必須で、reasonフィールドの目的もschemaで説明されており、descriptionで述べられている使用条件(検索はsearch_notes)も含め、エージェントが正しく呼び出すための主要な情報は揃っている。わずかな欠落(戻り値の詳細)を考慮して4が適切。

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

schema_description_coverageは50%で、fieldとreasonの説明がschemaにあるが、item_idとshare_idは説明がない。descriptionはfieldが「pass-cliのフィールド名」であることを補足しているが、item_idとshare_idの意味は説明されておらず、schemaの説明に依存している。schemaが半分のパラメータを既に説明しているので、baselineの3が適切で、descriptionが大幅に補足しているわけではない。

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

明確に1つのProton Passフィールドを取得することを述べ、検索ツール(search_notes)と区別している。秘密値を含む明示的な依頼に使うという具体的な使用文脈も示されており、ツールの目的が明確に伝わる。

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

descriptionは「検索はsearch_notesを使う」と明示的に代替ツールを指定し、取得と検索の使い分けを示している。また「ユーザーが取得を求めた」「秘密値を必要とする明示的な依頼」という使用条件を述べており、いつ使うべきかが明確で、排他的なガイドラインもある。

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_notesA
Read-only

Proton Passのテキストノートをタイトル・本文の完全な部分文字列で検索する(Keeperからインポート等)。本文は返さず一致タイトル・ID・状態を返す。1回3件ずつ照合する。complete=falseなら同じ条件とnext_cursorで続行し、全ページのmatchesを集める。保管庫ごとに実行。

NameRequiredDescriptionDefault
queryYes
stateNoactive
cursorNo
reasonYesアクセスが必要な具体的なユーザー依頼・目的(最大300文字)
share_idYes
page_sizeNo

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the read-only/non-destructive annotations, the description discloses meaningful behavior: it does not return body text, matches 3 items at a time, and requires continuing with next_cursor when complete=false to collect all matches. It also adds the per-vault execution detail, exceeding what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is composed of five compact sentences, each carrying distinct information: search scope, output omission, batch size, pagination contract, and per-vault requirement. There is no filler or redundant repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description adequately covers the returned fields (title, ID, status) and the pagination mechanism needed to gather all results. It stops short of detailing the exact JSON response shape or potential error cases, but the core invocation essentials are present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 17%, so the description must compensate. It clarifies that query searches title and body substrings, page_size is effectively 3 per call, cursor is used to continue pagination, and share_id maps to per-vault execution. Although state and reason are not explicitly explained in the description, their meaning is already present in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches Proton Pass text notes by exact substring in title and body, and explicitly lists what it returns (matching title, ID, status). It is specific and resource-bound, but it does not explicitly differentiate this from sibling tools like list_items or read_field.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives useful contextual hints such as 'Keeper import' and instructs to execute per vault. However, it does not state when to prefer this tool over siblings like list_items or read_field, nor does it provide exclusions or alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

session_statusB
Read-only

Proton Pass pass-cliの既存認証セッションを確認する。

NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnlyHint=true and destructiveHint=false, so it is clear this is a safe, read-only operation. The description adds no further behavioral context beyond that, such as what status information is returned or how authentication state is determined. It does not contradict annotations; it's just sparse given the annotations do heavy lifting.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single clear sentence in Japanese, front-loaded and concise. It earns its place by stating both product (Proton Pass) and context (pass-cli). No extra words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read-only status tool with clear annotations, the purpose description is largely complete. A minor gap is not describing what the status output looks like, but with no output schema and a merely intended 'check', the core is covered. Since it uses a Japanese sentence and no usage guidance, a complete score would demand slightly more.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and schema description coverage is 100%, so there is no parameter burden. The description's role is only to clarify purpose, which it does. Baseline 4 is appropriate for a no-parameter tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Proton Pass pass-cliの既存認証セッションを確認する' states a specific verb (確認/check) and resource (existing authentication session) for the Proton Pass CLI. It distinguishes this tool from the sibling tools, which all deal with vaults, shares, items, notes, and fields—none of which indicate session handling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool vs the alternatives. It doesn't mention whether this should be called before listing vaults or performing other operations, and it doesn't name any excluded scenarios or alternative tools. The context is implied only through the verb and resource.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updatesv1.0.2
    • First observedlist_items
    • First observedlist_shares
    • First observedlist_vaults
    • First observedread_field
    • First observedsearch_notes
    • First observedsession_status

TDQS

A3.9/5.0

Scored across 6 tools

Disambiguation4/5

Most tools have clearly distinct purposes: session_status, list_vaults, list_items, search_notes, and read_field are each focused on different operations. The main ambiguity is between list_vaults and list_shares, which both describe listing access-related containers and could be confused without deeper context.

Naming Consistency4/5

The tool names mostly follow a clear verb_noun pattern: list_vaults, list_shares, list_items, search_notes, read_field. session_status breaks this pattern and would be more consistent as get_session_status or check_session, making this a minor but noticeable deviation.

Tool Count5/5

Six tools is a well-scoped set for a read-only Proton Pass retrieval server. Each tool covers a distinct operation without unnecessary duplication, and the count is squarely in the ideal range for agent usability.

Completeness4/5

The tool surface covers session checks, vault/share discovery, item and note listing, note search, and explicit single-field secret retrieval, which is coherent for its apparent read-only purpose. Minor gaps exist, such as no multi-field item read or write operations, but these are workable limitations rather than dead ends.

Maintenance

ActivityActive
ResponsivenessNo recent community issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    D
    maintenance
    A Model Context Protocol (MCP) server for Proton Pass. It wraps the official pass-cli binary and exposes 14 tools so any MCP-compatible AI assistant (Claude Desktop, Claude Code, etc.) can manage your vaults, credentials, and secrets.
    14
    -
  • A
    license
    A
    quality
    B
    maintenance
    MCP server for the Nextcloud Passwords app, enabling reading and managing password entries (list, search, create, update, delete) with strong security guarantees.
    14
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Provides local, secure access to Enpass password vaults via MCP. Enables unlocking vaults, listing entries, retrieving passwords, TOTP codes, and attachments, with optional write support.
    10
    50 npm
    3
    MIT