1. Conduid
  2. Security
  3. @powforge/captcha-mcp
MCP server · Security

@powforge/captcha-mcp

MCP server that gates API calls to AI agents using proof-of-work (free) or Lightning payment (3 sats), providing challenge, verify, and status tools for per-call authentication without accounts.

Unclaimed security
34Low

Scored 5 months ago · breakdown

About @powforge/captcha-mcp

@powforge/captcha-mcp is an MCP server published by zekebuilds-lab in the Security category: mCP server that gates API calls to AI agents using proof-of-work (free) or Lightning payment (3 sats), providing challenge, verify, and status tools for per-call authentication without accounts.

The repository has 1 stars and 0 forks, with the last commit 2 months ago. Recent commit activity is the strongest signal that reported issues will get attention.

Install

From source
git clone https://github.com/zekebuilds-lab/captcha-mcp

This server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.

Tools (3)

challengeRequest a fresh proof-of-work puzzle. Returns `{id, salt, difficulty, signature}`.

Parameters not published.

statusServer health, lifetime stats, L402 endpoint metadata.

Parameters not published.

verifySubmit a solved nonce. Returns a 5-minute HMAC-signed access token.

Parameters not published.

Ask AI

✦

Ask AI about @powforge/captcha-mcp

Powered by Claude · Grounded in docs

I know everything about @powforge/captcha-mcp. Ask me about installation, configuration, usage, or troubleshooting.

Security checks

  • ✓README presentThe repository ships documentation.

5 checks have not been run yet.

README

@powforge/captcha-mcp

Charge AI agents per-call without accounts. PoW solve = free tier. Lightning payment = paid tier.

OpenAI's Sora API does not let you charge per call. Anthropic's billing does not pass through to your tools. If you ship an MCP server today and an autonomous agent finds it, you eat the bill.

This is the gate. Three tools over stdio or HTTP. Stdlib only.

Quickstart

npx -y @powforge/captcha-mcp

That is it. No install, no config, no API key. The server starts on stdio and waits for an MCP client.

To wire it into Claude Code, Cursor, or any MCP-compatible host, add to your config:

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

Or run npx @powforge/captcha-mcp --install to print the config block.

What it does

Wraps the PowForge pow-captcha service (captcha.powforge.dev) as three MCP tools:

Tool Purpose
challenge Request a fresh proof-of-work puzzle. Returns {id, salt, difficulty, signature}.
verify Submit a solved nonce. Returns a 5-minute HMAC-signed access token.
status Server health, lifetime stats, L402 endpoint metadata.

The free tier costs the agent ~5-10 seconds of CPU time (SHA-256, default 14 leading zero bits). The paid tier costs 3 sats over Lightning via L402 (RFC 7235 + bolt11 invoice in WWW-Authenticate).

Why this and not OAuth, API keys, or Stripe

Approach Per-call cost Account required Self-hosted Agent-friendly
API keys $0 yes n/a no
OAuth $0 yes n/a no
Stripe metering high overhead yes n/a no
Managed MCP auth platform 100–2000 sats no no yes
PoW + L402 (this) seconds or 3 sats no yes yes

Agents do not have email addresses. They do not click confirmation links. They do not enter credit cards. PoW + Lightning is the only auth primitive that works for fully autonomous callers.

Managed MCP auth platforms work, but they charge 100–2000 sats per call on vendor infrastructure — your revenue flows through their rails. This package runs on your server, your Lightning node, your keys. You keep the sats.

Configuration

Set CAPTCHA_URL to point at a different captcha backend. Default is http://localhost:3077 so you can run the full stack locally for development. Production deployments point it at https://captcha.powforge.dev.

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

HTTP Streamable transport

Hosted MCP clients (Smithery, browser-based hosts) need HTTP, not stdio. Pass --http or set HTTP_MODE=1:

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

The server then listens on:

Endpoint Method Purpose
/mcp POST Single JSON-RPC request, single JSON-RPC response. Notifications return 202.
/mcp GET SSE stream for server-pushed notifications (kept open with a 25s heartbeat).
/health GET Liveness probe — returns {ok, server, transport}. Not part of MCP.

Stateless. No session ids. CORS open (Access-Control-Allow-Origin: *) so browser clients work. Stdio mode is unchanged and remains the default — npx @powforge/captcha-mcp with no flag still talks JSON-RPC over stdin/stdout.

Smoke test the HTTP transport:

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

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

Local development

Clone the captcha widget repo or run the public service. The MCP server only needs HTTP access to the captcha endpoints listed under status.

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

It prints ready to stderr and waits for JSON-RPC on stdin.

Smoke-test the protocol manually:

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

You should see a JSON response with serverInfo: { name: "@powforge/captcha-mcp", version: "0.1.0" }.

Token verification from your own backend

When an agent submits a token to your service, verify it without trusting the agent:

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

Returns {valid: true, method, issued_at, expires_at} or {valid: false, reason}.

Related packages

License

MIT

README copy captured when this server was indexed; it may lag the repository. The original is authoritative.

Questions

About @powforge/captcha-mcp

How do I install @powforge/captcha-mcp?

No package has been published for this server, so install it from source: clone the repository and follow its README.

Is @powforge/captcha-mcp safe to use with an AI agent?

Its trust score is 34 out of 100 (low). It passes 1 of the 1 static security checks run so far. It has no ConduID identity yet, so agent calls to it are not receipted.

Is @powforge/captcha-mcp still maintained?

Yes — the last commit was 2 months ago. The repository has 1 stars and 0 forks.