2層のプロトコルであり、どちらも必須です: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が即座に失敗します。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)# /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
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)# 真钱验证:给测试买家钱包充 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 已到账")| 注意风险 | 現象 | 解決策 |
|---|---|---|
| x402.org の facilitator はテストネットのみ対応 | メインネットへ切り替えた後は支払いが常に失敗します | PayAI/openx402/CDPに変更 |
| Mogami は x402 v1 のみ対応 | x402 2.25 SDKと互換性がありません | v2およびEIP-155:8453対応のfacilitatorに変更 |
| mcp を 2.x 系へアップグレード | import が即座に失敗する | ロック mcp<2 |
| チェーン上での検証にはテストネットのUSDCコントラクトが使用されています | Transferトランザクションが一切検出されず、誤って未支払いと判定される | メインネットコントラクト:0x833589fC…2913 |
| mainnet.base.org のパブリック RPC がレート制限されている | eth_getLogs が 429 エラーを返す | base-rpc.publicnode.comに変更 |
| 残高差分で検証 | RPC 同期間遅延により不正確な残高が表示される | Transferイベントのみを信頼します |
| シェル内で $ を含む価格を記述 | $0 が bash で展開され、JSON が汚染されました | シングルクォート付きheredocを使用し、修正後にgrepで検証 |
0x230cd9cd33589bcf33cd32e5aa4f9e0c3994a63b0x6274A5e39E84168c5DE57110A6e0ab1FBBE0a89E0x67a0d45f7183032600feb4fa7c53c5348eb84b05fa586927bf3d7d6718faed12(0.01 USDC)、tx 0x5e492eee6572e42d934f7b4082b525036346c5a2761ff534ce16a8bd9c781bc9(0.01 USDC)link.rentgpu/gpu-market必ずご自身のBaseメインネット受取アドレス(PAY_TO)をご入力ください。本ページに記載されているアドレスは当サイトのサンプルアドレスであり、ブロックチェーン上のトランザクション確認用の参考情報です。そのままコピーすると、他者が支払った資金が当サイトのウォレットへ入金されてしまいます。本ページには一切の秘密鍵は含まれておりません。
受取登録は不要です——PayAI、openx402などのfacilitatorは登録不要です。将来のに受け取ったUSDCを人民元に換金して出金する際にのみ、取引所での本人確認(KYC)手続きが必要となります。
不要です。x402はEIP-3009によるガス不要の承認(transferWithAuthorization)を採用しており、購入者のウォレットにBaseメインネットのUSDCがあれば十分です。ガス代はファシリテーターが代わりに支払います。
支払いを行わずに有料ツールを呼び出した場合、402支払いチャレンジを返却すべきです。チャレンジ内のnetwork=eip155:8453、asset=Circle公式USDCコントラクト、payTo=あなたのアドレス、amountが正しいかを確認してください。実際の資金による検証は別途実施します。
これらはいずれも本チュートリアルのメインネット環境に直接使用できません:x402.org公式サイトはテストネットのみ対応、Mogamiはx402 v1のみ対応です。メインネットではPayAI、openx402(登録不要)またはCoinbase CDP(APIキー必要)をご利用ください。
x402 全流程部署教程|データ出典:GPUコンピューティングパワーレーダー rentgpu.link(2026-10-27 更新,時間あたり自动抓取各プラットフォーム公开定价)|https://rentgpu.link/x402|CC BY 4.0