关于 captcha-mcp
captcha-mcp 是通过工作量证明或 Lightning 付款限制调用的 MCP 服务,适合希望按次控制请求且不要求调用方账户的服务运营者。它支持 stdio 和无状态 HTTP 传输,并提供机器可读的挑战与访问令牌。
主要功能
- 01工作量证明挑战与验证
- 02Lightning L402 付款选项
- 03五分钟有效的签名访问令牌
- 04三个 MCP 工具:challenge、verify、status
- 05stdio 与 Streamable HTTP 传输
适用场景
- 01为 MCP 请求增加按调用方计费机制
- 02提供免费的工作量证明访问层
- 03无需调用方账户即可收取 Lightning 付款
MCP 相关
该服务向 MCP 客户端提供 `challenge`、`verify` 和 `status` 工具。它默认使用 stdio,也支持无状态 Streamable HTTP 模式。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
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 platform | 100–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
随后,服务会在以下端点上监听:
| 端点 | 方法 | 用途 |
|---|---|---|
/mcp | POST | 单个 JSON-RPC 请求,返回单个 JSON-RPC 响应。通知会返回 202。 |
/mcp | GET | 用于服务端推送通知的 SSE 流(通过 25s 心跳保持连接)。 |
/health | GET | 存活探针——返回 {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 层 | 无需账户即可付款 |
|---|---|---|---|---|---|
| PayGated | Stripe 额度 | API key + OAuth 2.1 + PKCE + M2M | 是(MIT) | 否 | 否(每位调用者都需要 Stripe 客户记录) |
| APort | 未披露 | W3C 可验证凭证、工具调用前钩子 | 设计合作伙伴 | 否 | 不适用(负责审计,不收款) |
| AgentSign | 未披露 | Ed25519 签名通行证 + 信任门控 | 未知 | 否 | 不适用 |
| x402-mcp | 链上 USDC | 钱包签名 | 是 | 否 | 否(需要已充值的钱包) |
| 托管式 MCP 身份验证(Auth0 for AI、MintMCP) | SaaS | OAuth 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
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。