x402-mcp-server
A small, growing catalog of x402-paywalled HTTP tools on Base Mainnet via x402 micro-payments — no API keys, no signup, pay per call in USDC.
This MCP server exposes that catalog as native MCP tools. Every tool call pays for itself automatically: the server POSTs the request, catches the real x402 v2 402 PAYMENT-REQUIRED challenge, signs an EIP-3009 TransferWithAuthorization with viem using a local wallet, and resubmits with the PAYMENT-SIGNATURE header. No human signature prompt at call time — the agent just calls the tool.
Tools
All tools run on Base Mainnet (eip155:8453). Settlement happens server-side through an ordered facilitator chain — Coinbase CDP, then PayAI, then Primer as fallbacks — which changes nothing on your side: you sign the same EIP-3009 authorization either way, and every tool is also listed in the CDP and PayAI x402 Bazaar discovery catalogs. Exact request-body fields for each tool are also discoverable at runtime via <tool-url>/openapi.json.
Quickstart
Add this to your claude_desktop_config.json:
{
"mcpServers": {
"x402-mcp-server": {
"command": "npx",
"args": ["-y", "x402-mcp-server_by_milza"],
"env": {
"BASE_PRIVATE_KEY": "0xyour_base_mainnet_private_key"
}
}
}
}
⚠️ Funding warning:
BASE_PRIVATE_KEYmust be a Base Mainnet wallet private key funded with a small amount of real USDC (e.g. $0.50 is enough for dozens of calls at these prices). Every tool call spends real money from this wallet. Do not use a key that holds funds you're not prepared to spend through this server, and never commit this key to source control.
Once configured, restart Claude Desktop and the tools listed above become available to the assistant automatically — no further setup, no dashboard, no API key registration.
How payment works
BASE_PRIVATE_KEY is your own wallet — whoever installs this server sets their own key and pays for their own calls. Each call settles straight to the tool provider's wallet; your key never touches anyone else's funds and no one else's key ever touches yours. To set it up:
- Use (or create) a Base Mainnet EVM wallet you're OK spending small amounts from.
- Fund it with a bit of USDC on Base (e.g. $0.50).
- Export its private key and set it as
BASE_PRIVATE_KEYin your MCP client config, as shown above.
Security
BASE_PRIVATE_KEYnever leaves your machine. It is read once from the local environment and used only to sign EIP-712 typed-data (EIP-3009TransferWithAuthorization) payment authorizations locally withviem.- No raw private key, seed phrase, or signature is ever sent over the network — only the resulting signed authorization, exactly as the x402 protocol requires to settle payment for the specific request being made.
- Payment terms (recipient, amount, network, asset contract, expiry) are read fresh from each live
402challenge returned by the resource server, never trusted from a local cache, so a stale or tampered local catalog can't redirect funds. - Spending ceiling: the live
402challenge is trusted for signing mechanics (domain, nonce window, asset) but never for the amount. Every call checks the challenge's requested amount against this catalog's known price for that tool and refuses to sign anything higher — a hijacked, compromised, or buggy endpoint can't get a blank-check signature just by asking for more. - This package does not phone home, collect telemetry, or store your key anywhere on disk.
Requirements
- Node.js 18+
- A Base Mainnet EVM wallet, funded with a small amount of USDC, whose private key you control
License
MIT