proctor について
proctorは、検証済みの人間が承認または拒否するまで、エージェントのツール呼び出しを一時停止するMCPサーバーです。ポリシーを先に評価してから人の確認を求め、後で参照できるようHederaトピックに判断を記録します。
主な機能
- 01検証済みの人間による承認要求
- 02人の確認前にポリシーを評価
- 03期限切れ時は実行を拒否
- 04Hederaへの判断記録
- 05拒否とサービスエラーの区別
活用シーン
- 01重要なエージェントのツール呼び出しを制御
- 02運用担当者以外への承認依頼
- 03監査可能な判断記録の提示
MCP 対応
JSON-RPC 2.0のstdio経由で、`request_human_approval`ツールをMCPクライアントに公開します。人の判断が出るまでエージェントを停止し、結果とHederaの記録を返します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y proctor-mcpPROCTOR_APIBase URL of the Proctor gate. Defaults to http://localhost:3700.HEDERA_AGENT_IDHedera account id of the paying agent, e.g. 0.0.12345. Set this with HEDERA_AGENT_KEY to settle a real x402 payment. Omit both and the tool falls back to Proctor's operator endpoint, which opens a real decision but settles nothing.HEDERA_AGENT_KEYシークレットECDSA private key for HEDERA_AGENT_ID. Spends money: scope it to a funded testnet account and nothing else.AGENT_ALLOWED_TOKENSシークレットComma-separated HTS token ids this agent may pay in. The agent's own guard: it refuses assets its operator never approved.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
1掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| action | string | はい | エージェントが実行しようとしている操作を、平易な言葉で記述します。 |
| amount | string | いいえ | 金額を 10 進数文字列で指定します。ポリシーのしきい値に使用します。 |
| ttlSeconds | number | いいえ | 期限。デフォルトは 300、最大値は 900 です。 |
| counterparty | string | いいえ | 価値を受け取る相手。 |
詳細
Proctor MCP サーバー
MCP の仕様が求めながら、提供していないヒューマン・イン・ザ・ループです。
MCP ツール仕様には、文字どおり次のように記載されています。
「信頼性、安全性、およびセキュリティのため、ツールの呼び出しを拒否できる人間が常に介在すべきです。」
アプリケーションは「操作についてユーザーに確認プロンプトを表示し、人間が介在していることを確実にすべきです。」
しかし、そのための仕組みは定義されていません。すべてのクライアントが独自の確認ダイアログをローカルで実装し、クリック後には何も残りません。インシデント後に監査人が尋ねる次の3つの質問には、答えがありません。
| 質問 | ローカルのダイアログで示せること |
|---|---|
| 実際に人間がその場にいましたか? | 何もありません。ダイアログが証明するのはクリックであり、人間の存在ではありません |
| その人はエージェントの運用者とは別の人物でしたか? | 何もありません |
| 信頼していない相手にも証明できますか? | 何もありません |
一方、有料の MCP ツールが向かっている方向は、明らかに逆です。Vercel の x402-mcp の売り文句は、*「アカウント不要、API キー不要、ヒューマン・イン・ザ・ループ不要」*です。これは天気 API には適切ですが、電信送金には不適切です。
このサーバーは、欠けていた仕組みです。
できること
ツールは1つです。request_human_approval。
運用者ではない実在の人物の判断が下るまでエージェントをブロックし、期限が過ぎると確実に拒否し、管理者キーのない Hedera トピック上の証明情報を返します。これにより、後からエージェントや私たちを信頼することなく、第三者に判断を証明できます。
below threshold → Proceed. Policy did not require a human (below_threshold).
above threshold → blocks, hands a link to a phone, waits
approved → Approved by a verified human. HCS sequence #41. You may proceed.
refused / expired → NOT approved (EXPIRE). Do not proceed.
ほとんどの呼び出しが人間に届くことはありません。 あらゆる処理を中断する監督ツールは、エージェントの所有者に無効化されてしまいます。そのため、ポリシーを先に実行し、通常の処理にはコストがかからないようにしています。
インストール
npm で proctor-mcp として公開されており、MCP Registry には io.github.louissarvin/proctor として登録されています。
// Claude Desktop: claude_desktop_config.json
{
"mcpServers": {
"proctor": {
"command": "npx",
"args": ["-y", "proctor-mcp"],
"env": { "PROCTOR_API": "http://localhost:3700" }
}
}
}
クローンもビルドも不要です。PROCTOR_API を Proctor インスタンスに設定してください。デフォルトは http://localhost:3700 です。
クライアントを使わずに確認するには、次を実行します。
printf '%s\n%s\n' \
'{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}' \
'{"jsonrpc":"2.0","id":2,"method":"tools/list"}' \
| npx -y proctor-mcp
Claude Desktop、Cursor、自作のものなど、あらゆる MCP クライアントで動作します。トランスポートは stdio 上の JSON-RPC 2.0 で、プロトコルバージョンは 2025-06-18 です。
クライアントを使わずに確認するには、次を実行します。
printf '%s\n%s\n' \
'{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}' \
'{"jsonrpc":"2.0","id":2,"method":"tools/list"}' \
| bun src/index.ts
知っておくべき3つの判断
拒否はツールエラーではありません。 approved: false とともに isError: false を返します。拒否をエラーとして扱うと、モデルが一時的な障害と見なして再試行し、回避しようとするおそれがあります。それこそが、このツールが防ごうとしていることです。
到達不能は拒否ではありません。 Proctor が停止している場合、ツールはそのことを明示し、isError: true を設定します。*「ゲートが停止している」ことと「人間が拒否した」*ことは別の事実です。この2つをひとまとめにすると、障害が気付かれないまま拒否になったり、さらに悪いことに、成功するまで再試行されたりします。
監督経路に依存関係はありません。 stdio 上の JSON-RPC はループであり、セキュリティツールに SDK を追加することは、サプライチェーンのリスクを招くことにつながります。x402 クライアントは遅延インポートされ、ウォレットが設定されている場合にのみ読み込まれます。そのため、ホスト型の Proctor に接続して人間に質問するだけなら、Hedera SDK が読み込まれることはありません。
有料モード
ウォレットを設定すると、ツールはシミュレーションを停止して支払いを開始します。
"env": {
"PROCTOR_API": "http://localhost:3700",
"HEDERA_AGENT_ID": "0.0.xxxxx",
"HEDERA_AGENT_KEY": "302e…",
"AGENT_ALLOWED_TOKENS": "0.0.10394781"
}
その後、実際の x402 ゲートにアクセスし、Blocky402 のファシリテーターを通じて決済します。検証済みの実行結果:
[proctor] paid the gate; a witness is being dispatched from the rota
structuredContent: { "approved": false, "outcome": "EXPIRE", "paid": true }
Hedera テストネット上の対応する決済:
0.0.10359475 -420000 the agent pays
0.0.10349677 +415800 treasury
0.0.10349667 +4200 1% HTS custom fee, assessed on chain
fee payer 0.0.7162784 Blocky402
ポリシー評価が先に実行され、無料です。 POST /v1/gate/evaluate は、支払いが行われる前に人間の判断が必要かどうかを決定します。呼び出しのたびに課金する監視ツールは、エージェントの所有者が1日以内にオフにしてしまいます。
有料モードでは、意図的に証人リンクを返しません。 ゲートは承認 URL を支払者に決して渡しません。エージェントがその URL にアクセスできれば、自分の判断を承認できてしまいます。それを防ぐことこそ、この製品が提供する唯一の価値です。人間への連絡は、代わりにオペレーターの当番体制を通じて行われます。無償のオペレーターモードでは、呼び出し元がオペレーター本人であるため、リンクを返します。
ウォレットが設定されていない場合、ツールは Proctor のオペレーターエンドポイントにフォールバックします。ここでは実際の判断が開始されますが、決済は行われず、出力にもそのことが示されます(paid: false)。
現時点で対応していないこと
判断がコンセンサスより速く確定すると、証拠の引用に attestation pending と表示される場合があります。記録はその後、エージェントのクリティカルパス外で登録され、シーケンス番号は判断自体の記録に永続化されます。
ここで接続されているのは Hedera のレールのみです。ゲートは Circle の Gateway 経由で Arc にも対応しており、agent/ でその例を確認できます。一方、MCP クライアントが登録するのは Hedera のスキームのみです。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。