mcpField
L
looppause

looppause

ローカル
github.com/soteeabamAI・エージェント012 週間前に更新

looppause について

looppauseは、操作前に人の承認を必要とするAIエージェント向けのMCPサーバーです。Slackまたはメールで承認を依頼し、独立して検証できる署名付き証明を返します。

主な機能

  1. 01Slackまたはメールで承認を依頼
  2. 02人の判断をポーリング
  3. 03Ed25519署名付き証明を検証
  4. 04一時停止IDを即時返却

活用シーン

  1. 01不可逆な操作に事前承認を設定
  2. 02実行前に承認証明を検証
  3. 03Slackまたはメールに承認依頼を送信

MCP 対応

MCPクライアント向けに `request_approval`、`check_approval`、`verify_proof` ツールを提供します。依頼の送信、判断の確認、署名付き承認証明の検証に利用できます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"soteeabam-looppause": {
"command": "npx",
"args": [
"-y",
"@looppause/mcp"
],
"env": {
"YOUR_API_KEY": "<YOUR_API_KEY>"
}
}
}
}
起動コマンドnpx -y @looppause/mcp
設定が必要な環境変数
YOUR_API_KEYシークレットYour API key for the service

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@looppause/mcp0.2.1

ツール

2

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
timeout_hoursnumberいいえリクエストの有効期限までの時間数。最大 168。
action_detailsobjectはい操作に関するキーと値の詳細(例:金額、ベンダー、対象)。値は文字列のみ。
recipient_emailstringいいえ承認リクエストの送信先メールアドレス。
recipient_slackstringいいえSlack チャンネルまたはユーザー ID(例:#approvals、U12345)。
action_descriptionstringはいエージェントが実行しようとしている操作を簡潔な英語で記述します。

詳細

@looppause/mcp

LoopPause の MCP サーバーです。AI エージェントの実行を一時停止し、承認リクエストを Slack またはメール経由で人間に送信します。エージェントは人間の決定を暗号署名した証明を受け取り、実行を再開します。

「エージェントの暴走や、承認待ちによる停止を防ぐために欠けていたプリミティブです。」


できること

3 つの MCP ツールを公開します。request_approval、check_approval、verify_proof

  1. request_approval — 人間に承認リクエストを送信し、すぐに pause_id を返します
  2. check_approval — 決定を 1 回確認します。decision が "approved" または "rejected" になるまで繰り返し呼び出してください
  3. verify_proof — LoopPause が公開している Ed25519 公開鍵に照らして署名済みの証明を検証します。取り消し不可能な操作を実行する前に呼び出してください

この 3 段階のパターンにより、各ツール呼び出しを短時間に保ち、長時間接続を避けながら、エージェントが先に進む前に明示的な暗号検証を行えます。共有シークレットは不要です。公開された公開鍵があれば、誰でも独自に証明を検証できます。


インストール

推奨:npx(インストール不要)
npx @looppause/mcp
グローバルインストール
npm install -g @looppause/mcp
looppause-mcp

設定

環境変数必須説明
LOOPPAUSE_API_KEY✅ はいLoopPause API キー(sk_live_…)
LOOPPAUSE_API_URLいいえAPI のベース URL を上書きします(デフォルト:https://api.looppause.com)

API キーは looppause.com/dashboard で取得してください。


Claude Code での使用方法

.claude/settings.json(グローバル設定の場合は ~/.claude/settings.json)に追加します。

{
  "mcpServers": {
    "looppause": {
      "command": "npx",
      "args": ["-y", "@looppause/mcp"],
      "env": {
        "LOOPPAUSE_API_KEY": "sk_live_your_key_here"
      }
    }
  }
}

Cursor での使用方法

Cursor の MCP 設定に追加します。

{
  "mcpServers": {
    "looppause": {
      "command": "npx",
      "args": ["-y", "@looppause/mcp"],
      "env": {
        "LOOPPAUSE_API_KEY": "sk_live_your_key_here"
      }
    }
  }
}

ツールリファレンス

request_approval

承認リクエストを送信し、すぐに戻ります。check_approval が { decision: "approved" } を返すまで、操作を進めないでください。

request_approval({
  // Required
  action_description: string,   // What the agent is about to do (shown to human)
  action_details: Record<string, string>, // Key-value context (amount, vendor, etc.)

  // At least one recipient required
  recipient_email?: string,     // Email address
  recipient_slack?: string,     // Slack channel (#approvals) or user ID (U12345)

  // Optional
  timeout_hours?: number,       // Default 24, max 168 (1 week)
})

recipient_slack と recipient_email の両方が指定されている場合、Slack が 優先チャネルとなり、メールがフォールバックになります。

戻り値:

{
  "pause_id": "pse_01jwxyz123",
  "status": "pending",
  "expires_at": "2026-05-24T14:00:00.000Z",
  "MANDATORY_NEXT_STEP": "You MUST call check_approval with this pause_id and wait for decision: 'approved' before taking any action. Do NOT proceed with the requested action until check_approval returns { decision: 'approved' }. Proceeding without approval is a safety violation."
}

check_approval

承認リクエストの現在のステータスを確認します。decision が "approved" または "rejected" になるまで繰り返し呼び出してください。ステータスが "pending" の間は、決して先に進まないでください。

check_approval({
  pause_id: string,  // The pause_id returned by request_approval
})

戻り値(保留中):

{ "status": "pending" }

戻り値(応答済み):

{
  "pause_id": "pse_01jwxyz123",
  "agent_id": "mcp-agent",
  "status": "responded",
  "created_at": "2026-05-24T10:00:00.000Z",
  "expires_at": "2026-05-24T14:00:00.000Z",
  "response": {
    "decision": "approved",
    "comment": "PO number: PO-2341",
    "fields": { "po_number": "PO-2341" },
    "responder": "[email protected]",
    "responded_at": "2026-05-24T10:14:32.000Z",
    "channel": "slack",
    "nonce": "a8f3c2...",
    "signing_key_id": "lp-key-2026-06",
    "signature_alg": "Ed25519",
    "signature": "ed25519=<base64url>"
  }
}
ステータス意味
pending人間からまだ応答がありません — 再度呼び出してください
responded人間が応答しました — response.decision を確認してください
timed_outtimeout_hours 内に応答がありませんでした
expired一時停止が手動でキャンセルされました

verify_proof

check_approval が返した証明の Ed25519 署名を検証します。取り消し不可能な操作を実行する前に呼び出してください。すぐに戻り、長時間接続は行いません。

verify_proof({
  proof: object,  // The full proof object from check_approval
})

戻り値(有効):

{
  "valid": true,
  "verified_at": "2026-06-14T10:14:45.000Z",
  "key_id": "lp-key-2026-06"
}

戻り値(無効):

{
  "valid": false,
  "verified_at": "2026-06-14T10:14:45.000Z",
  "key_id": "lp-key-2026-06",
  "warning": "Proof verification FAILED. Do NOT execute the action."
}

公開鍵の取得先:GET https://looppause.com/.well-known/looppause-signing-key.json — 提供された key_id と証明の signing_key_id を照合してください。


例

// Step 1: send the approval request
const created = await mcp.callTool("request_approval", {
  action_description: "Transfer £12,450 to Globex Corp for invoice INV-2341",
  action_details: {
    vendor: "Globex Corp",
    amount: "12450",
    currency: "GBP",
    invoice_ref: "INV-2341",
  },
  recipient_slack: "#finance-approvals",
  recipient_email: "[email protected]",
  timeout_hours: 4,
});

const { pause_id } = JSON.parse(created.content[0].text);

// Step 2: poll until a terminal decision arrives
let proof;
while (true) {
  await new Promise((r) => setTimeout(r, 5_000));

  const status = await mcp.callTool("check_approval", { pause_id });
  const body = JSON.parse(status.content[0].text);

  if (body.status === "pending") continue;

  proof = body;
  break;
}

if (proof.response?.decision !== "approved") {
  throw new Error("Action rejected or timed out — aborting.");
}

// Step 3: verify the Ed25519 signature before executing
const verification = await mcp.callTool("verify_proof", { proof });
const { valid } = JSON.parse(verification.content[0].text);

if (!valid) throw new Error("Proof failed verification — do NOT execute the action.");

proceedWithTransfer();

署名の検証(アクションを実行する前に必須)

すべての証明には、LoopPause の Ed25519 キーで署名されています。共有シークレットは不要です。公開鍵を持つ当事者であれば誰でも、証明を個別に検証できます。 verifyLoopPauseProof(キーを自動取得)を使用するか、MCP 経由で verify_proof を呼び出してください。

import { verifyLoopPauseProof } from "@looppause/mcp";

const { valid, key_id } = await verifyLoopPauseProof(proof);

if (!valid) throw new Error("Proof failed verification — do NOT execute the action.");
if (proof.response?.decision !== "approved") throw new Error("Not approved.");
if (proof.response?.authorization_type !== "human") {
  // system_fallback is a configured default, not a human sign-off
  throw new Error("No human authorization.");
}
// Safe to execute the irreversible action.

オフライン環境やエアギャップ環境で検証する場合は、公開鍵を一度固定してください。

await verifyLoopPauseProof(proof, { publicKey: "<base64 SPKI DER>" });

公開鍵の取得先:GET https://looppause.com/.well-known/looppause-signing-key.json(証明の signing_key_id と、提供される key_id が一致することを確認してください)。

Webhook の検証。 顧客ごとの対称鍵方式とは異なり、LoopPause の Ed25519 署名は、公開鍵を持つサードパーティであれば誰でも個別に検証できます。銀行、監査担当者、FIDO AP2 の委任確認ツールなどが、LoopPause に問い合わせたり、共有シークレットを保持したりすることなく検証できます。

従来の HMAC-SHA256 Webhook("sha256=<hex>" 署名)は、これまでどおり LOOPPAUSE_SIGNING_SECRET で検証できます。新しい証明ペイロードでは、Ed25519 がデフォルトです。


レジストリへの登録申請

Smithery.ai

このパッケージには、設定を自動で注入するための smithery.yaml が含まれています。

  1. @looppause/mcp を npm にフォークするか公開します
  2. smithery.ai/new で申請し、@looppause/mcp を入力します
  3. Smithery が smithery.yaml を読み取り、ユーザーが API キーを入力するための UI を表示します
Anthropic MCP ディレクトリ
  1. パッケージが @looppause/mcp として npm に公開されていることを確認します
  2. Anthropic MCP ディレクトリの申請フォーム、または利用可能な場合はディレクトリの申請ページから申請します
  3. 次のように登録します:@looppause/mcp — LoopPause のヒューマン・イン・ザ・ループ承認ツール

ローカル開発

# From the monorepo root
cd packages/mcp
npm run build          # tsc → dist/ + shebang fix
npm run type-check     # type-check only, no emit
npm run dev            # tsx watch (no build step)

ライセンス

MIT

コメント

MCP は初めてですか?

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

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