原型 · 预览版:收录官方注册中心里的全部服务器,每 30 分钟同步一次。评价和账户功能将在后续阶段推出。
PopNx MCP为使用 AI 的人准备的 MCP 服务器 · 用大白话讲清楚

Looppause

作者:soteeabam版本 0.2.1i★ –i在你的电脑上运行
注册名称io.github.soteeabam/looppause

安装

概览

作者提供的说明(英文原文)

LoopPause MCP server — pause agent execution and route human approval requests

PopNx MCP 的三大支柱

这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。

它能帮你做什么

我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。

  • 连接方式: 在你的电脑上运行
  • 传输方式: stdio
  • 分类: 其他
  • 你需要填写:YOUR_API_KEY

安装

选择你使用的 AI 应用,然后复制设置。

安装之前

标为机密的值是你账户的钥匙。千万不要分享给别人,也不要粘贴到聊天里。

你需要

  • npm已安装 Node.js(用于 npx 命令)

你用的是哪个应用?

在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。

打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json

{
  "mcpServers": {
    "looppause": {
      "command": "npx",
      "args": [
        "-y",
        "@looppause/mcp"
      ],
      "env": {
        "YOUR_API_KEY": "your-value"
      }
    }
  }
}

在终端中运行这条命令

claude mcp add looppause --env YOUR_API_KEY=your-value -- npx -y @looppause/mcp

运行前请先填写空着的值。

在 Cursor 中打开

或者自己复制设置

粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json

{
  "mcpServers": {
    "looppause": {
      "command": "npx",
      "args": [
        "-y",
        "@looppause/mcp"
      ],
      "env": {
        "YOUR_API_KEY": "your-value"
      }
    }
  }
}

浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。

在 VS Code 中打开

或者自己复制设置

粘贴到项目中的 .vscode/mcp.json

{
  "servers": {
    "looppause": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@looppause/mcp"
      ],
      "env": {
        "YOUR_API_KEY": "your-value"
      }
    }
  }
}

浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。

这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。

你的选择通过 Cookie 保存在这台设备上,无需账户。

需要你填写的值

  • YOUR_API_KEY 机密 必填 env
    Your API key for the service

这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。

它能做什么

它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。

基础检查i

我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月6日

  • ✓ 通过

    作者与仓库一致

    注册名称已通过 GitHub 账户 soteeabam 验证,该账户拥有此仓库

  • … 尚未检查

    仍在维护

    我们还没有从 GitHub 读取这个仓库

  • … 尚未检查

    有许可证

    我们还没有从 GitHub 读取这个仓库

  • – 不适用

    端点有响应

    它在你的电脑上运行,没有互联网端点

  • – 不适用

    使用 OAuth 登录

    在你的电脑上运行,改用本地设置

  • … 尚未检查

    工具描述中没有隐藏指令

    它在你的电脑上运行;我们只能读取互联网端点的工具列表

与“其他”中的其他服务器比较i

  • 星标数多于此分类中其他 32433 个服务器的 0%
  • 发布到注册中心的时间比此分类中其他 32433 个服务器的 22% 更新
  • 基础检查结果等于或优于此分类中其他 32433 个服务器的 100%

与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。

常见问题

Looppause 安全吗?

它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。

它需要哪些密钥或代码?

你需要填写:YOUR_API_KEY

它在我的电脑上运行还是在云端?

它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。

它还在维护吗?

GitHub 仓库最后更新于–,最新版本(0.2.1)于3个月前进入注册中心。

哪些应用可以使用它?

支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Node.js。

有什么可以替代它?

同一分类中有:Spec Driven Development, Remote Desktop Commander, Symantec Cloud DLP AIops

替代选择

同一分类中其他作者的服务器,按星标数排序。

如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i

Spec Driven Development

作者:formulahendry

MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.

在你的电脑上运行★ 440MIT14个月前更新
安装

Remote Desktop Commander

作者:desktop-commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

在云端运行★ 211昨天更新
安装

Symantec Cloud DLP AIops

作者:AIops-tools

Governed Symantec Cloud DLP — 14 MCP tools, read-only with audit.

在你的电脑上运行今天更新
安装

作者的 README

打开 README

按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。

@looppause/mcp

MCP server for LoopPause — pause AI agent execution and route approval requests to humans via Slack or email. The agent receives a cryptographically signed proof of the human's decision and resumes.

"The missing primitive so agents don't go rogue — or die waiting for approval."


What it does

Exposes three MCP tools: `request_approval`, `check_approval`, and `verify_proof`

  1. `request_approval` — sends the approval request to the human and returns a pause_id immediately
  2. `check_approval` — polls once for the decision; call repeatedly until decision is "approved" or "rejected"
  3. `verify_proof` — verifies the signed proof against LoopPause's published Ed25519 public key; call before executing any irreversible action

This three-step pattern keeps each tool call short, avoids long-running connections, and gives the agent explicit cryptographic verification before proceeding. No shared secret required — any party with the published public key can independently verify the proof.


Installation

Recommended: npx (no install required)
npx @looppause/mcp
Global install
npm install -g @looppause/mcp

looppause-mcp


Configuration

Environment variableRequiredDescription
LOOPPAUSE_API_KEY✅ YesYour LoopPause API key (sk_live_…)
LOOPPAUSE_API_URLNoOverride the API base URL (default: https://api.looppause.com)

Get your API key at looppause.com/dashboard.


Usage in Claude Code

Add to your .claude/settings.json (or ~/.claude/settings.json for global):

{

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

Usage in Cursor

Add to your Cursor MCP configuration:

{

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


Tool reference

request_approval

Sends the approval request and returns immediately. Do not proceed with the action until `check_approval` returns `{ decision: "approved" }`.

request_approval({

// Required action_description: string, // What the agent is about to do (shown to human) action_details: Record , // 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) })

When both recipient_slack and recipient_email are provided, Slack is the primary channel and email is the fallback.

Returns:

{

"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

Checks the current status of an approval request. Call repeatedly until decision is "approved" or "rejected". Never proceed while status is `"pending"`.

check_approval({

pause_id: string, // The pause_id returned by request_approval })

Returns (pending):

{ "status": "pending" }

Returns (responded):

{

"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": "sarah@company.com", "responded_at": "2026-05-24T10:14:32.000Z", "channel": "slack", "nonce": "a8f3c2...", "signing_key_id": "lp-key-2026-06", "signature_alg": "Ed25519", "signature": "ed25519= " } }

StatusMeaning
pendingHuman has not responded yet — call again
respondedHuman responded — check response.decision
timed_outNo response within timeout_hours
expiredPause was manually cancelled

verify_proof

Verifies the Ed25519 signature on a proof returned by check_approval. Call this before executing any irreversible action. Returns immediately — no long-running connection.

verify_proof({

proof: object, // The full proof object from check_approval })

Returns (valid):

{

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

Returns (invalid):

{

"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." }

Public key discovery: GET https://looppause.com/.well-known/looppause-signing-key.json — match the proof's signing_key_id against the served key_id.


Example

// 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: "sarah@company.com", 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();


Verifying the signature (REQUIRED before executing the action)

All proofs are signed with LoopPause's Ed25519 key. No shared secret required — any party holding the published public key can independently verify the proof. Use verifyLoopPauseProof (fetches the key automatically) or call verify_proof via MCP:

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.

For offline/air-gapped verification, pin the public key once:

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

Public key discovery: GET https://looppause.com/.well-known/looppause-signing-key.json (match the proof's signing_key_id against the served key_id).

Webhook verification. Unlike per-customer symmetric schemes, LoopPause's Ed25519 signatures are independently verifiable by any third party holding the published public key — a bank, an auditor, a FIDO AP2 mandate checker — without contacting LoopPause and without holding a shared secret.

Legacy HMAC-SHA256 webhooks ("sha256= " signatures) remain verifiable with your LOOPPAUSE_SIGNING_SECRET as before; Ed25519 is the default for all new proof payloads.


Registry submissions

Smithery.ai

This package includes smithery.yaml for automatic configuration injection.

  1. Fork or publish @looppause/mcp to npm
  2. Submit at smithery.ai/new → enter @looppause/mcp
  3. Smithery will read smithery.yaml and present a UI for users to enter their API key
Anthropic MCP directory
  1. Ensure the package is published to npm as @looppause/mcp
  2. Submit via the Anthropic MCP directory form or the directory submission page when available
  3. List as: @looppause/mcp — LoopPause human-in-the-loop approval tool

Local development

# 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)


License

MIT

问 PopNx