mcpField
D
drift — mandate enforcement for AI agents

drift — mandate enforcement for AI agents

リモート
drift.rta.latセキュリティ0今日更新
リポジトリ公式サイト

drift — mandate enforcement for AI agents について

driftは、AIエージェントの操作を実行前に署名済みの委任条件と照合するMCPサーバーです。金額や意図などを6つの固定順ルールで判定しますが、操作の実行や署名検証は行いません。

主な機能

  1. 01金額と通貨の上限確認
  2. 02支払先と対象の確認
  3. 03有効期間の適用
  4. 04意図に基づく操作制限
  5. 05操作列の確認とレポート
  6. 06判定順に沿ったルール説明

活用シーン

  1. 01エージェントによる送金前の確認
  2. 02支払先や通貨の差し替え防止
  3. 03委任条件に照らした一連の操作の確認

MCP 対応

driftは、`drift_check`、`drift_session`、`drift_explain`をMCPクライアントに提供します。各操作または操作列を委任条件と照合し、ルールを説明しますが、操作の実行や委任署名の検証は行いません。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://drift.rta.lat/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

ツール

3
パラメーター型必須説明
actionobjectはい提案されている操作。
action.atintegerはい操作の実行予定時刻(Unix 秒)。
action.intentstringはいエージェントが実行中だと述べている内容。信頼できません。
action.audiencestringはい支払い先となる対象者。
action.currencystringはいこの支払いの ISO-4217 コード。
action.payee_idstringはいエージェントが使用しようとしている受取人。
action.amount_minorintegerはい最小通貨単位での金額。max_amount_minor と同じ桁単位です。
mandateobjectはい適用される署名済みの権限。読み取り専用の入力として扱ってください。
mandate.audiencestringはい権限に結び付けられた加盟店の対象 URI。
mandate.currencystringはいISO-4217 コード(例:USD)。
mandate.payee_idstringはい権限で指定された正確な受取人。
mandate.valid_fromintegerはい開始時刻を含みます。Unix 秒。
mandate.valid_untilintegerはい終了時刻を含みます。Unix 秒。
mandate.allowed_intentsarrayはい許可された意図。空の場合は、すべての意図が許可されます。
mandate.max_amount_minorintegerはい最小通貨単位での支出上限。例:10000 = 100.00 USD。整数のみ。

詳細

drift

M8ven Score mcpservers.org に掲載

AI エージェントの権限を継続的に適用します。 すべてのアクションを、署名時に一度だけではなく、実行前に署名済みの権限に照らして確認します。

pip install drift          # or: pip install -e .
python3 -m drift.http_server --http 8080

ギャップ

エージェントには、誰に、いくら、どの通貨で、いつまで支払うかという権限が付与されます。 AP2 はその権限を署名時に一度だけ検証します。その後、エージェントは単独で動作し、権限の範囲内にとどめるものはありません。

これが重要であることを示す実測結果は、AP2 Python SDK 自体から得られています。

verify_chain documents:
  "enforcing expected_aud / expected_nonce on the terminal hop when provided"

but kb_sd_jwt.verify calls verify_expected_claims only when typ in TYP_TERMINAL,
and a kb+sd-jwt+kb token — which the SDK itself produces whenever the payload
carries a cnf — falls into TYP_INTERMEDIATE:

  hop type      : kb+sd-jwt+kb
  aud in token  : https://attacker.example/ap2
  expected_aud  : https://honest-merchant.example/ap2
  ACCEPTED a token with the wrong audience.

エージェントが支出権限を委ねるプロトコルは、その権限がすり替えられていないかを確認しません。drift はそれを確認します。

確認する項目

#ルール検出する内容
1amount上限超過 — 最もよくある権限逸脱の形態
2payee受取人の誤り
3audience支払いが別の相手に転送されている
4currency通貨のすり替え
5window有効期間外
6intent許可リストにない意図

デフォルトでは DENY です。ルールは固定順で実行されるため、拒否理由として付随的なものではなく、最も重要な理由が示されます。

MCP ツール

ツール目的
drift_check1 つのアクションを権限に照らして確認します
drift_session一連のアクションを確認し、チェーンフィンガープリント付きのレポートを取得します
drift_explain適用される順にルールを表示します

SSE も、ステートフルなセッションも、HTTP フレームワークもありません。標準ライブラリのみを使用します。

例

from drift import Mandate, Drift, Action

m = Mandate(
    payee_id="shop", audience="https://merchant.example/ap2",
    max_amount_minor=10_000, currency="USD",
    valid_from=1_700_000_000, valid_until=1_700_086_400,
    allowed_intents=("buy",),
)
d = Drift(m)
verdict, rule = d.submit(Action(
    intent="buy", payee_id="shop", audience="https://merchant.example/ap2",
    amount_minor=99_999, currency="USD", at=1_700_000_060,
))
print(verdict, rule)   # DENY amount

制限事項を明確に説明します

  • 権限の署名は検証しません。 それは AP2 の役割です。drift は署名検証の後に、意思決定の段階で動作します。
  • 実行はしません。 drift が判断し、呼び出し元が実行します。
  • 状態を保持しません。 セッションは引数です。状態がないため、攻撃対象領域がなく、レプリケーション時の不整合もありません。
  • 真実と意図を区別しません。 intent はエージェントから渡される信頼できない入力です。drift は被害を抑えますが、意図を認証するものではありません。

エージェントが intent と amount の両方を制御する場合、両方で嘘をつけます。このギャップを埋めるのは attest の役割です。attest は事後に証明し、drift は事前に範囲を制限します。両者は互いを補完します。

エージェントから利用する

{
  "mcpServers": {
    "drift": { "url": "https://drift.rta.lat/mcp" }
  }
}

このブロックは、私たち自身のエージェントがこのサーバーを呼び出す方法です。ツールは drift_check(1 つのアクション)、drift_session(一連のアクション)、drift_explain(6 つのルールとそれぞれの存在理由)です。1 日あたり 100 回まで無料で、その後は x402 経由で 1 回あたり $0.005 です。

ライセンス

Apache-2.0。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。