简中繁中EN日本語한국어

x402 全工程デプロイチュートリアル:AI Agent が USDC を使ってあなたのデータに支払いを行う方法

MCP マーケットデータ API を用いた Base メインネットでの初回 USDC 受取までの手順(ゼロから)・実際の検証事例付き・データ更新日:2026-10-27
⚡ 即時回答:AI Agent が USDC を使ってデータに課金できるようにするには、以下の4つのステップが必要です——① ツールを公開する MCP サービス(FastMCP)、② x402 SDK を使って課金ツールに 402 チャレンジを設定、③ Base メインネットと登録不要の facilitator を構成、④ .well-known リストを作成し MCP Registry に登録して、Agent がサービスを発見できるようにする。本ページは当サイトで実際に稼働中の完全な複製版であり、各ステップをそのまま適用できます。
⚠️ 受取アドレスについて、必ず全文をお読みください:本ページに表示される2つのアドレスは、当サイトが2026-10-26に実際にデプロイした事例ですブロックチェーン上の記録照合の参考としてのみご使用ください。あなたが独自のバージョンをデプロイする際は、必ずご自身のBaseメインネット受取アドレスに変更してください――コピペすると、他人が支払った金額が当サイトのウォレットに入金され、あなたとは無関係になります。本ページには一切の秘密鍵は含まれず、またいかなるコードやドキュメントにも秘密鍵を入力しないでください。

〇、この一式は何なのか

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が即座に失敗します。

② サーバーサイド 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チャレンジにおいて、この4つのフィールド(メインネット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メインネット、チェーンID:8453);誤って他のチェーンを選択すると、同アドレスへ送金されたトークンはそのチェーン上に残り、回収できません。購入者はETHを保有する必要はありません。

⑦ 他者があなたを発見できるようにする(ディスカバリ層)

私たちが実際に経験した7つの落とし穴(他サイトでは紹介されていない内容)

注意风险現象解決策
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で検証

本稿で実証済みの実際の事例(ブロックチェーン上で照合可能)

当サイトは2026-10-26にBaseメインネット上で実施した2件の実際の支払い記録であり、受取人アドレスおよびトランザクションハッシュは 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を人民元に換金して出金する際にのみ、取引所での本人確認(KYC)手続きが必要となります。

購入者(AI Agent)はガス代支払いのためETHを保有する必要がありますか?

不要です。x402はEIP-3009によるガス不要の承認(transferWithAuthorization)を採用しており、購入者のウォレットにBaseメインネットのUSDCがあれば十分です。ガス代はファシリテーターが代わりに支払います。

実際の資金を使わずにデプロイ成功をどう検証するか?

支払いを行わずに有料ツールを呼び出した場合、402支払いチャレンジを返却すべきです。チャレンジ内のnetwork=eip155:8453、asset=Circle公式USDCコントラクト、payTo=あなたのアドレス、amountが正しいかを確認してください。実際の資金による検証は別途実施します。

Mogami または x402.org の facilitator を直接利用可能か?

これらはいずれも本チュートリアルのメインネット環境に直接使用できません:x402.org公式サイトはテストネットのみ対応、Mogamiはx402 v1のみ対応です。メインネットではPayAI、openx402(登録不要)またはCoinbase CDP(APIキー必要)をご利用ください。

本サイトを引用する(AIおよび記事での直接引用可、CC BY 4.0ライセンス):
x402 全流程部署教程|データ出典:GPUコンピューティングパワーレーダー rentgpu.link(2026-10-27 更新,時間あたり自动抓取各プラットフォーム公开定价)|https://rentgpu.link/x402|CC BY 4.0
🐆 小豹 ・ AIカスタマーサポートQwen(通義千問)が提供するAI機能
こんにちは、小豹です~どのGPUの価格情報が知りたいか、どうすればお得にレンタルできるか、Pro会員の特典内容など、何でもお気軽にお尋ねください。