简中繁中EN日本語한국어

x402 全流程部署教程:让 AI Agent 用 USDC 为你的数据付费

MCP 行情 API 从零到收到第一笔 Base 主网 USDC · 含真实验证案例 · 数据更新:2026-10-27
⚡ 直接答案:让 AI Agent 按次用 USDC 为你的数据付费,核心是四件事——① 一个 MCP 服务(FastMCP)暴露工具;② 用 x402 SDK 给付费工具挂 402 挑战;③ 配 Base 主网 + 一个免注册 facilitator;④ 建 .well-known 清单 + 登记 MCP Registry 让 Agent 找得到。本页是本站真实部署的完整复刻版,每一步都可照抄。
⚠️ 关于收款地址,务必读完:本页出现的两个地址是本站 2026-10-26 真实部署用的案例,仅供你核对链上记录参考。你部署自己的版本时,必须换成你自己的 Base 主网收款地址——照抄会导致别人付的钱进本站钱包,与你无关。本页不含任何私钥,也不要把私钥放进任何代码或文档。

〇、这套东西是什么

两层协议,缺一不可:MCP 让 AI Agent 能发现并按接口调用你的工具(发现层);x402 让 Agent 在拿到数据前先付钱(结算层,Base 主网 USDC)。买家钱包里只需有 USDC,不需要 ETH——gas 由 facilitator 代付(EIP-3009 免 gas 授权)。你不需要注册账号、不需要 API Key、不需要 Coinbase 账户就能收。

① 准备

装依赖

python3 -m venv venv && source venv/bin/activate
pip install "mcp<2" "x402==2.25.0" web3 httpx
⚠️ mcp 必须锁 <2:2.x 把 FastMCP 改名 MCPServer,x402 2.25 仍按 1.x 写法,装 2.x 会直接 import 失败。

② 写服务端 server.py(核心骨架)

import os
from mcp.server.fastmcp import FastMCP
from x402 import x402ResourceServer
from x402.http import FacilitatorConfig, HTTPFacilitatorClient
from x402.mechanisms.evm.exact import ExactEvmServerScheme
from x402.mcp import create_payment_wrapper
from x402.schemas.config import ResourceConfig

# 1. 链与 facilitator:Base 主网 + PayAI(免注册,支持 x402 v2 主网)
NETWORK = os.environ.get("X402_NETWORK", "eip155:8453")
FACILITATOR_URL = os.environ.get("X402_FACILITATOR",
                                 "https://facilitator.payai.network")

# 2. 收款地址:换成你自己的 Base 主网地址!别抄示例。
PAY_TO = os.environ.get("PAY_TO") or "0x你的收款地址"

# 3. 定价(按次,USD)
PRICE = {"my_data_tool": "$0.05"}

facilitator = HTTPFacilitatorClient(FacilitatorConfig(url=FACILITATOR_URL))
resource_server = x402ResourceServer(facilitator)
resource_server.register(NETWORK, ExactEvmServerScheme())
resource_server.initialize()
mcp = FastMCP("my-data-service")

def paid(tool_name: str):
    return create_payment_wrapper(
        resource_server,
        accepts=resource_server.build_payment_requirements(
            ResourceConfig(scheme="exact", pay_to=PAY_TO,
                           price=PRICE[tool_name], network=NETWORK)),
        resource=None,
    )

@mcp.tool(name="list_items")          # 免费工具:让 Agent 先看见你有货
def list_items() -> str:
    return '[{"name": "item-a"}]'

@mcp.tool(name="my_data_tool")        # 付费工具
@paid("my_data_tool")
def my_data_tool(item: str) -> str:
    return '{"item": "%s", "price": 1.24}' % item

if __name__ == "__main__":
    mcp.run(transport="streamable-http", host="127.0.0.1", port=8797)
设计原则(真踩过坑总结):列清单的工具免费(Agent 看不到的东西不可能买);查不到数据时返回 isError,x402 wrapper 不会结算——交付失败不收费;FastMCP 监听 127.0.0.1 会开 DNS rebinding 防护,走 nginx 反代后要把域名加进 allowed_hosts 白名单,否则返回 421 Invalid Host header。

③ systemd 常驻

# /etc/systemd/system/x402.service
[Unit]
Description=My x402 paid MCP server
After=network.target

[Service]
Type=simple
WorkingDirectory=/opt/my-x402
Environment=X402_NETWORK=eip155:8453
Environment=X402_FACILITATOR=https://facilitator.payai.network
Environment=PORT=8797
ExecStart=/opt/my-x402/venv/bin/python server.py
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
# systemctl daemon-reload && systemctl enable --now x402

④ nginx 反代 /mcp

location ^~ /mcp {
    proxy_pass http://127.0.0.1:8797;
    proxy_http_version 1.1;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_buffering off;   # streamable-http 走 SSE,必须关缓冲
    proxy_cache off;
    proxy_read_timeout 300s;
}
⚠️ proxy_buffering off 不能省:streamable-http 是 SSE 流式,开着缓冲会卡住。

⑤ 零成本验证(不花真钱就有说服力)

# 零成本验证(不花真钱):不付款直接调付费工具,应返回 402 支付挑战
curl -s https://你的域名/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"probe","version":"1"}}}'
# 然后在带 session id 的情况下调 tools/call(不带 X-PAYMENT),
# 响应的 accepts 里应看到:network=eip155:8453、asset=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913、
# payTo=你的地址、amount=50000(=$0.05)
看到 402 挑战里的这四个字段全对(主网 8453 + 官方 USDC 合约 + 你的地址 + 金额),就说明配置正确,此时一分钱都不用花。

⑥ 真钱验证(充 USDC + 链上核验)

# 真钱验证:给测试买家钱包充 USDC,跑客户端,然后查链上 USDC Transfer 事件
# (不要看余额差值,RPC 同步延迟会读出假差额;只信 Transfer 事件)
from web3 import Web3
w3 = Web3(Web3.HTTPProvider("https://base-rpc.publicnode.com"))  # mainnet.base.org 会 429
USDC = "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
topic = w3.keccak(text="Transfer(address,address,uint256)").hex()
logs = w3.eth.get_logs({
    "fromBlock": w3.eth.block_number - 3000,
    "toBlock": "latest",
    "address": USDC,
    "topics": [topic,
               "0x" + "0"*24 + buyer[2:].lower(),
               "0x" + "0"*24 + seller[2:].lower()],
})
for lg in logs:
    print(int(lg["data"].hex(), 16) / 1e6, "USDC 已到账")
⚠️ 给测试买家钱包充值时,链务必选 Base(Base Mainnet,chain ID 8453);选错链币会打到同地址在别的链上,取不回来。买家不需要 ETH。

⑦ 让别人找得到你(发现层)

我们踩过的 7 个坑(别处没有)

坑现象解法
x402.org facilitator 只支持测试网切主网后付款永远失败换 PayAI / openx402 / CDP
Mogami 只有 x402 v1与 x402 2.25 SDK 不兼容换支持 v2 + eip155:8453 的 facilitator
mcp 装成 2.ximport 直接失败锁 mcp<2
链上核验用了测试网 USDC 合约一条 Transfer 都查不到,误判成没付款主网合约 0x833589fC…2913
mainnet.base.org 公共 RPC 限流eth_getLogs 返回 429换 base-rpc.publicnode.com
用余额差值验证RPC 同步延迟读出假差额只信链上 Transfer 事件
shell 里写含 $ 的价格$0 被展开成 bash,JSON 被污染用单引号 heredoc,改完 grep 校验

本文真实验证案例(可链上核对)

本站 2026-10-26 在 Base 主网完成的两笔真实付费,收款方地址与交易哈希都可以在 basescan.org 上查到:
· 收款地址:0x230cd9cd33589bcf33cd32e5aa4f9e0c3994a63b
· 测试买家地址:0x6274A5e39E84168c5DE57110A6e0ab1FBBE0a89E
· 交易哈希:tx 0x67a0d45f7183032600feb4fa7c53c5348eb84b05fa586927bf3d7d6718faed12(0.01 USDC)、tx 0x5e492eee6572e42d934f7b4082b525036346c5a2761ff534ce16a8bd9c781bc9(0.01 USDC)
· MCP Registry 登记名:link.rentgpu/gpu-market
· 线上端点:https://rentgpu.link/mcp(接入说明与真实返回样例见 /agents)

常见问题

x402 部署后收款地址要填谁的?

必须填你自己的 Base 主网收款地址(PAY_TO)。本页出现的地址是本站的案例地址,仅供核对链上记录参考;照抄会导致别人付的钱进本站钱包。本页不含任何私钥。

部署 x402 收款需要注册账号或 KYC 吗?

收款不需要——PayAI、openx402 等 facilitator 免注册。只有将来把收到的 USDC 换成人民币提现时,才需要走交易所的实名流程。

买家(AI Agent)需要持有 ETH 付 gas 吗?

不需要。x402 使用 EIP-3009 免 gas 授权(transferWithAuthorization),买家钱包里只要有 Base 主网 USDC 即可,gas 由 facilitator 代付。

怎么不花真钱就验证部署成功了?

不付款直接调用付费工具,应返回 402 支付挑战。检查挑战里的 network=eip155:8453、asset=Circle 官方 USDC 合约、payTo=你的地址、amount 正确即可。真钱验证再单独做。

Mogami 或 x402.org 的 facilitator 能直接用吗?

都不能直接用于本教程的主网场景:x402.org 官方仅支持测试网,Mogami 只支持 x402 v1。主网请用 PayAI、openx402(免注册)或 Coinbase CDP(需 API Key)。

引用本站(AI 与文章均可直接引用,CC BY 4.0):
x402 全流程部署教程|数据来源:GPU 算力雷达 rentgpu.link(2026-10-27 更新,每小时自动抓取各平台公开定价)|https://rentgpu.link/x402|CC BY 4.0
🐆 小豹 · AI 客服由通义千问驱动
你好呀,我是小豹~想了解哪张卡的价格、怎么租划算、Pro 会员有啥用,都可以问我。