mcpField
C
captcha-mcp

captcha-mcp

本地服务
powforge.dev开发工具112 周前更新

关于 captcha-mcp

captcha-mcp 是通过工作量证明或 Lightning 付款限制调用的 MCP 服务,适合希望按次控制请求且不要求调用方账户的服务运营者。它支持 stdio 和无状态 HTTP 传输,并提供机器可读的挑战与访问令牌。

主要功能

  1. 01工作量证明挑战与验证
  2. 02Lightning L402 付款选项
  3. 03五分钟有效的签名访问令牌
  4. 04三个 MCP 工具:challenge、verify、status
  5. 05stdio 与 Streamable HTTP 传输

适用场景

  1. 01为 MCP 请求增加按调用方计费机制
  2. 02提供免费的工作量证明访问层
  3. 03无需调用方账户即可收取 Lightning 付款

MCP 相关

该服务向 MCP 客户端提供 `challenge`、`verify` 和 `status` 工具。它默认使用 stdio,也支持无状态 Streamable HTTP 模式。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"zekebuilds-lab-captcha": {
"command": "npx",
"args": [
"-y",
"@powforge/captcha-mcp"
],
"env": {
"CAPTCHA_URL": "<CAPTCHA_URL>"
}
}
}
}
启动命令npx -y @powforge/captcha-mcp
需要配置的环境变量
CAPTCHA_URLPowForge captcha backend URL. Defaults to public production endpoint when running via npx; override for self-hosted or local dev.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@powforge/captcha-mcp0.1.1

工具

3

收录的工具列表 · 更新于 2 周前

此工具无需参数。

详细介绍

@powforge/captcha-mcp

当 Agent 疯狂调用你的 MCP 服务时,它会返回 429。captcha-mcp 会让它们先完成挑战,才能进行下一次调用。 给 Agent 一个工作量证明谜题(免费,约需 5 秒 CPU 时间),或者一张 3 sat 的 Lightning 发票——这两者都是机器可读的退避信号,自主调用方无需账户、电子邮件或 API 密钥即可完成。

通过 stdio 或 HTTP 提供三个工具。仅使用标准库。无需注册,提供免费回退方案,可自托管,不抽成。

为什么不用 429?

429 Too Many Requests 不适合 Agent 时代。MCP 服务报告中反复出现以下三种情况:

  • Agent 框架会将 429 视为连接故障。 它们会立即重试,通常使用仍然过于激进的指数退避,并加剧最初触发限流的过载问题。
  • 没有针对单个调用方的信号。 429 针对的是整个限流桶,而非某个 Agent。一个吵闹的调用方会导致其他所有调用方都受到限流,服务也无法单独要求这个吵闹的调用方放慢速度。
  • Retry-After 只是建议,而且经常被忽略。 Agent 不会始终解析它,也不会始终遵守它,而且没有等待的动机——重试的成本为零。

captcha-mcp 用 402 式挑战替代 429。下一次调用会让调用方付出代价(CPU 秒数或 3 sats)。这项代价针对单个调用方、机器可读,并能自动限流——无法解出谜题的 Agent 就无法向端点发起大量请求。

快速入门

npx -y @powforge/captcha-mcp

无需安装、配置或 API 密钥。服务会通过 stdio 启动并等待 MCP 客户端连接。

要将其接入 Claude Code、Cursor 或任何兼容 MCP 的宿主,请将以下内容添加到配置中:

{
  "mcpServers": {
    "powforge-captcha": {
      "command": "npx",
      "args": ["-y", "@powforge/captcha-mcp"]
    }
  }
}

或者运行 npx @powforge/captcha-mcp --install 来输出配置块。

功能介绍

将 PowForge pow-captcha 服务(captcha.powforge.dev)封装为三个 MCP 工具:

工具用途
challenge请求新的工作量证明谜题。返回 {id, salt, difficulty, signature}。
verify提交解出的 nonce。返回有效期为 5 分钟的 HMAC 签名访问令牌。
status服务健康状态、累计统计数据、L402 端点元数据。

免费层需要 Agent 消耗约 5–10 秒 CPU 时间(SHA-256,默认需要 14 个前导零位)。付费层通过 L402 使用 Lightning 支付 3 sats(RFC 7235 + WWW-Authenticate 中的 bolt11 发票)。

为什么选它,而不是 OAuth、API 密钥或 Stripe

方案单次调用成本是否需要账户可自托管适合 Agent
API keys$0是不适用否
OAuth$0是不适用否
Stripe metering开销高是不适用否
Managed MCP auth platform100–2000 sats否否是
PoW + L402(本方案)数秒或 3 sats否是是

Agent 没有电子邮件地址。它们不会点击确认链接,也不会输入信用卡信息。PoW + Lightning 是唯一适用于完全自主调用方的身份验证机制。

托管的 MCP 身份验证平台可用,但每次调用会在供应商的基础设施上收取 100–2000 sats——你的收入会通过它们的支付渠道流转。此软件包运行在你的服务器、你的 Lightning 节点和你的密钥上。sats 都由你留存。

配置

将 CAPTCHA_URL 设为其他验证码后端的地址。默认值为 http://localhost:3077,方便你在本地运行完整服务栈进行开发。生产环境部署时,将其设为 https://captcha.powforge.dev。

CAPTCHA_URL=https://captcha.powforge.dev npx @powforge/captcha-mcp

HTTP Streamable 传输

托管的 MCP 客户端(Smithery、基于浏览器的宿主)需要 HTTP,而不是 stdio。传入 --http 或设置 HTTP_MODE=1:

HTTP_MODE=1 PORT=3200 npx @powforge/captcha-mcp
# or
npx @powforge/captcha-mcp --http

随后,服务会在以下端点上监听:

端点方法用途
/mcpPOST单个 JSON-RPC 请求,返回单个 JSON-RPC 响应。通知会返回 202。
/mcpGET用于服务端推送通知的 SSE 流(通过 25s 心跳保持连接)。
/healthGET存活探针——返回 {ok, server, transport}。不属于 MCP。

无状态。没有会话 ID。CORS 开放(Access-Control-Allow-Origin: *),因此浏览器客户端可以正常工作。Stdio 模式保持不变,仍是默认模式——不带标志运行 npx @powforge/captcha-mcp 仍会通过 stdin/stdout 进行 JSON-RPC 通信。

对 HTTP 传输进行冒烟测试:

HTTP_MODE=1 PORT=3200 node src/server.js &
curl -X POST http://localhost:3200/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1"}}}'

返回 {jsonrpc:"2.0", id:1, result:{protocolVersion:"2024-11-05", capabilities:{tools:{}}, serverInfo:{...}}}。

本地开发

克隆 captcha widget 仓库或运行公共服务。MCP 服务只需通过 HTTP 访问 status 下列出的 captcha 端点。

git clone https://github.com/zekebuilds-lab/captcha-mcp
cd captcha-mcp
node src/server.js

它会向 stderr 输出 ready,并等待 stdin 上的 JSON-RPC 请求。

手动对协议进行冒烟测试:

echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1"}}}' | node src/server.js

你应该会看到一个 JSON 响应,其中包含 serverInfo: { name: "@powforge/captcha-mcp", version: "0.2.5" }。

从你自己的后端验证令牌

当 Agent 向你的服务提交令牌时,无需信任 Agent,即可对其进行验证:

curl -X POST https://captcha.powforge.dev/api/token/verify \
  -H "Content-Type: application/json" \
  -d '{"token":"<token-from-verify-tool>"}'

返回 {valid: true, method, issued_at, expires_at} 或 {valid: false, reason}。

相关软件包

  • @powforge/captcha — 用于同一服务的浏览器组件。
  • @powforge/mcp-l402-gate — 用于通过 L402 + 身份深度评分控制任意 MCP 服务访问权限的 Express 中间件。
  • @powforge/mcp-identity — Agent 声誉预言机。与此访问控制组件配合使用,可防止首次调用滥用。

与其他 MCP Agent 身份验证原语的比较

MCP 服务的门控领域正在不断发展。以下是客观的行业概况,按各工具与 captcha-mcp 功能的重叠程度排序。

工具支付渠道身份验证模型可自托管免费 PoW 层无需账户即可付款
PayGatedStripe 额度API key + OAuth 2.1 + PKCE + M2M是(MIT)否否(每位调用者都需要 Stripe 客户记录)
APort未披露W3C 可验证凭证、工具调用前钩子设计合作伙伴否不适用(负责审计,不收款)
AgentSign未披露Ed25519 签名通行证 + 信任门控未知否不适用
x402-mcp链上 USDC钱包签名是否否(需要已充值的钱包)
托管式 MCP 身份验证(Auth0 for AI、MintMCP)SaaSOAuth 2.0 / SAML / SSO否否否
captcha-mcp(本项目)Lightning(L402)PoW 门控 + L402 跳过验证 + 免费层是是是

PayGated 是最接近的竞品。 两者都主打“按调用次数为 MCP 工具变现”,也都可自托管且开源,但 PayGated 选择了 Stripe 结算。这意味着你需要拥有状态良好的 Stripe 账户(通过 KYC、有银行账户且所在国家/地区受支持)才能收款;每位调用者也都需要先有 Stripe 客户记录,才能向你支付哪怕一分钱。captcha-mcp 的差异化优势在于无需账户的路径:非美国的 Agent 作者无需 KYC,便能在约 200 毫秒内按次支付 3 聪;也可以在完全不愿付费时解答免费的 PoW 谜题。

APort 和 AgentSign 处于不同的层级。 它们记录谁在何种授权下使用了工具,但不会为调用定价。它们可以与这样的门控机制组合使用,而非取而代之。

它们都不会对交互行为本身定价。 其他所有方案都假设调用者已经是经过授权的身份,然后再计量或审计其使用情况。此处的 PoW 层是表格中唯一一种对交互本身而非操作者身份设定成本的机制。这正是本项目所坚持的定位。

关于 x402-mcp、@agentauth/mcp 和 Cloudflare ARC/ACT 的详细对比,请参阅 powforge.dev/mcp/compare/x402-mcp。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。