MCP Server
MCP
x402 Universal Payer
Pay any x402 endpoint on the open web: auto-paying bridge with Bazaar discovery and spend caps.
Install
npx -y @three-ws/[email protected]
Configuration Example
{
"remotes": [],
"packages": [
{
"registryType": "npm",
"identifier": "@three-ws/mcp-bridge",
"version": "1.0.2",
"runtimeHint": "npx",
"transport": {
"type": "stdio"
},
"environmentVariables": [
{
"description": "0x-prefixed 32-byte hex private key that funds USDC payments on EVM chains (Base, Arbitrum, …). At least one of the EVM/SVM keys is required. Treat like cash — use a dedicated low-balance wallet.",
"format": "string",
"isSecret": true,
"name": "MCP_BRIDGE_EVM_PRIVATE_KEY"
},
{
"description": "Solana secret key that funds USDC payments: base58 64-byte secret key (Phantom / solana-keygen format) or a JSON array of 64 integers. At least one of the EVM/SVM keys is required. Treat like cash.",
"format": "string",
"isSecret": true,
"name": "MCP_BRIDGE_SVM_PRIVATE_KEY"
},
{
"description": "Per-call spending cap in atomic units (USDC has 6 decimals). Payments above this abort with a clear reason.",
"format": "number",
"default": "100000",
"name": "MCP_BRIDGE_MAX_PRICE_PER_CALL_ATOMIC"
},
{
"description": "Cumulative session spending ceiling in atomic units. Once total spend would exceed it, further payments abort until restart.",
"format": "number",
"default": "1000000",
"name": "MCP_BRIDGE_MAX_TOTAL_ATOMIC"
},
{
"description": "Comma-separated payee allowlist. When set, any payment whose payTo address is not listed is refused.",
"format": "string",
"name": "MCP_BRIDGE_ALLOWED_PAYTO"
},
{
"description": "Comma-separated hostname allowlist for outbound paid requests. When set, any other host is refused before a request is signed.",
"format": "string",
"name": "MCP_BRIDGE_ALLOWED_HOSTS"
},
{
"description": "Set to 1 to allow http:// targets (local development only). https is enforced otherwise.",
"format": "boolean",
"default": "0",
"name": "MCP_BRIDGE_ALLOW_HTTP"
},
{
"description": "Max number of x402 Bazaar resources to register as dynamic tools at startup. Set 0 to disable discovery.",
"format": "number",
"default": "20",
"name": "MCP_BRIDGE_DISCOVER_LIMIT"
},
{
"description": "x402 Bazaar discovery endpoint. Override to point at a self-hosted or alternative bazaar.",
"format": "string",
"default": "https://api.cdp.coinbase.com/platform/v2/x402/discovery/resources",
"name": "MCP_BRIDGE_BAZAAR_URL"
},
{
"description": "How many request-amounts to deposit at once when opening an EVM batch-settlement channel.",
"format": "number",
"default": "5",
"name": "MCP_BRIDGE_BATCH_DEPOSIT_MULTIPLIER"
},
{
"description": "Hard cap in atomic units on a single batch-settlement channel deposit or top-up.",
"format": "number",
"default": "5000000",
"name": "MCP_BRIDGE_MAX_DEPOSIT_ATOMIC"
},
{
"description": "Directory for persisted batch-settlement channel state (survives client restarts).",
"format": "string",
"default": "~/.x402-mcp-bridge/channels",
"name": "X402_MCP_BRIDGE_CHANNELS_DIR"
},
{
"description": "Per-chain RPC override, one variable per chain id (RPC_URL_<chainId>, e.g. RPC_URL_8453 for Base). Defaults to viem's public RPC for that chain.",
"format": "string",
"name": "RPC_URL_8453"
}
]
}
]
}
mcp
model-context-protocol
npm
By
Comments
Sign in to leave a comment