x402 MCP Demo
x402-MCP-Tool-Demo — eine echte 402, eine echte Ablehnung und eine echte Abrechnung
Eine minimale Demo des x402-Zahlungsprotokolls schützt einen MCP-artigen Tool-Endpoint, ausgeführt mit dem echten x402==2.16.0-Python-Paket und seinem standardmäßigen öffentlichen Facilitator (https://x402.org/facilitator) auf dem Base-Sepolia-Testnetz. Hier ist nichts handgeschriebenes Protokoll-JSON — jede Antwort in captured_responses/ stammt unverändert aus der Bibliothek.
Begleitend zu: So stellen Sie ein MCP-Tool in Rechnung: Ein funktionierender x402-Endpoint in unter einer Stunde.
Was es hier gibt
Datei | Funktion |
| FastAPI-Endpoint ( |
| Erzeugt zwei Wegwerf-EOAs – eine Empfängeradresse und eine Zahlungsadresse. Kein Guthaben, nur Testnetz, diese Schlüssel nie wiederverwenden. |
| Agiert als zahlender Agent: Holt die echte 402, signiert eine echte Zahlungs-Payload mit dem Konto ohne Guthaben und zeigt die echte Ablehnung des Facilitators |
| Die drei Antworttexte, die dabei entstanden sind, unverändert – die 402-Anforderung, die Ablehnung wegen unzureichenden Guthabens und die erfolgreiche 200 |
Related MCP server: 402-mcp
Ausführen
pip install -r requirements.txt
python gen_wallets.py # writes wallets.json (gitignored) -- two fresh, empty keys
python server.py # starts on 127.0.0.1:8402
python client_probe.py # in a second terminalWas Sie sehen werden
Runde 1 – keine Zahlung. Eine 402 mit einem payment-required-Header (Base64-JSON): Schema, Netzwerk, Asset-Vertrag, Betrag in der kleinsten Einheit des Tokens und die zu zahlende Adresse.
Runde 2 – eine echte signierte Zahlung, kein Guthaben. Der Client erstellt und signiert eine tatsächliche EIP-3009-Autorisierung mit dem Wegwerf-Schlüssel, hängt sie als X-PAYMENT an, und der Facilitator prüft sie gegen den echten Base-Sepolia-Chain-State. Die Antwort lautet:
{ "error": "invalid_exact_evm_insufficient_balance" }Diese Zeichenfolge ist der echte Fehlercode des Facilitators, keine Vermutung — sie erhalten ihn, wenn das Protokoll genau wie vorgesehen funktioniert und der Zahlende schlicht kein Geld hat.
Runde 3 – finanziert und tatsächlich abgerechnet. Die agent_address wurde mit 20 Testnet-USDC aus dem öffentlichen Faucet von Circle finanziert, danach wurde client_probe.py erneut gegen denselben Server ausgeführt. Diesmal liefert Runde 2 eine 200:
{
"url": "https://example.com/mcp",
"recommendation": "expose as a priced x402 tool at $0.01/call",
"paid": true
}mit einem payment-response-Header, der sich wie folgt dekodieren lässt:
{ "success": true, "payer": "0x3214cB6C...E0E9", "transaction": "0x9530b663...0dd86", "network": "eip155:84532" }Dieser Transaktions-Hash ist echt und unabhängig überprüfbar —
auf Base Sepolia Blockscout ansehen:
Status ok, an den USDC-Vertrag gesendet, Methode transferWithAuthorization — exakt das EIP-3009-Gasless-Transfer-Muster, das der Zahlende signiert hat. Jeder kann das überprüfen, ohne dieser README zu vertrauen.
Warum der manuelle Roundtrip in client_probe.py
x402 2.16.0 enthält PaymentRoundTripper, aber das ist ein Callback (handle_response(...)), der in einen eigenen httpx/requests-Transport eingebunden werden soll — es ist kein eigenständiger Transport zum direkten Einsetzen, trotz des Docstrings. client_probe.py ruft dieselben drei Primitiven, die es intern aufruft (get_payment_required_response → create_payment_payload → encode_payment_signature_header), direkt auf, was für eine Demo weniger bewegliche Teile bedeutet und identische Wire-Ausgabe erzeugt.
Sicherheitshinweise
gen_wallets.pyerzeugt Schlüssel miteth_account.Account.create()— kryptografisch zufällig, nie finanziert, berührt in dieser Demo niemals das Mainnet.wallets.jsonist in Git ignoriert.wallets.example.jsonzeigt die Struktur mit einer bekannten Burn-Adresse, sodass das Repo aus einem frischen Klon ohne Geheimnisse in der Git-Historie ausführbar ist.Die Facilitator-URL, das Netzwerk und der Asset-Vertrag sind die eigenen Testnet-Standardwerte der Bibliothek — hier spricht nichts mit dem Base-Mainnet oder bewegt echten Wert.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseBqualityDmaintenanceProduction-ready MCP server template for consuming X402-protected APIs with gasless micropayments. Enables AI agents like Claude to make micropayment-based API calls seamlessly using EIP-712 signatures and USDC transfers.3
- AlicenseNot gradedqualityAmaintenanceL402 + x402 client MCP. AI agents discover, pay for, and consume any payment-gated API autonomously. Supports Lightning (NWC), Cashu ecash, stablecoins, and human-in-the-loop payments.371MIT
- AlicenseNot gradedqualityDmaintenanceMinimal MCP server demonstrating L402 pay-per-call with Depth-of-Identity reputation gating, providing a bitcoin data tool that fetches BTC price and mempool fees.MIT
- AlicenseAqualityDmaintenanceAn MCP server that lets your AI coding agent (Claude Code, OpenClaw, Codex, Cursor, etc.) discover and pay on-chain agents registered on ERC-8004, using Coinbase's official x402 protocol. No smart account. No bundler. No relay. Just your EOA, an HTTPS request, and an automatic 402 → sign → retry flow.35MIT
Related MCP Connectors
Pay for HTTP APIs and charge for your own: x402 micropayments in USDC on Base.
Monetize any MCP server: x402 paywall, pay-per-call billing in USDC on Base, agent marketplace.
Agent x402 Paywall MCP — Coinbase HTTP 402 protocol + on-chain settlement. Agents pay per-call
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Thinkflow-ro/x402-mcp-demo'
If you have feedback or need assistance with the MCP directory API, please join our Discord server