mcpField
M
mcp-x402-pay

mcp-x402-pay

ローカル
github.com/CryptoAPIs-io金融データ03 日前に更新

mcp-x402-pay について

mcp-x402-pay は、エージェントが x402 で保護されたリソースを探して支払うための MCP サーバーです。EVM と Solana の決済に対応し、ローカルで署名するほか、支払い先のホストや金額を制限できます。

主な機能

  1. 01支払い後にx402保護URLを取得・再試行
  2. 02リソースと価格の検索
  3. 03呼び出しごとの秘密鍵によるローカル署名
  4. 04決済ネットワーク、金額、ホストの制限
  5. 05EVMとSolanaの決済対応

活用シーン

  1. 01x402カタログで有料APIを探す
  2. 02402 Payment Requiredを返すURLの呼び出し

MCP 対応

stdio 経由で MCP クライアントに x402_pay と x402_discover ツールを公開します。x402_pay は保護されたリクエストを再試行する前に、決済を承認してローカルで署名します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"cryptoapis-io-mcp-x402-pay": {
"command": "npx",
"args": [
"-y",
"@cryptoapis-io/mcp-x402-pay"
]
}
}
}
起動コマンドnpx -y @cryptoapis-io/mcp-x402-pay

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@cryptoapis-io/mcp-x402-pay0.5.3

ツール

3

掲載時のツール一覧 · 3 週間前に更新

パラメーター型必須説明
urlstringはい取得するリソースの URL(有料の場合があります)
bodystringいいえリクエスト本文(文字列。必要に応じて headers で content-type を設定してください)
apiKeystringいいえX402_BUYER 機能を備えた CryptoAPIs API キー(buyer /authorize の呼び出しにのみ使用)。未指定の場合は CRYPTOAPIS_API_KEY 環境変数にフォールバックします。一度設定すれば、このパラメーターは省略できます。
methodenumいいえHTTP メソッド(デフォルト GET)GET | POST | PUT | PATCH | DELETE
headersobjectいいえ追加のリクエストヘッダー
tronKeystringいいえTron の秘密鍵(16 進数)。未指定の場合は、X402_TRON_KEY、次に privateKey/X402_PRIVATE_KEY(同じ secp256k1 曲線)にフォールバックします。
utxoWifstringいいえWIF 形式の UTXO 秘密鍵。utxo-transaction の支払いに署名します(bitcoin/ltc/doge/dash/bch/zcash)。未指定の場合は X402_UTXO_WIF にフォールバックします。
xrpSeedstringいいえXRP のシークレット/シード(base58、例:s...)。xrp-transaction の支払いに署名します。未指定の場合は X402_XRP_SEED にフォールバックします。
kaspaKeystringいいえKaspa の秘密鍵(16 進数、32 バイト)。kaspa-transaction の支払いに署名します。未指定の場合は X402_KASPA_KEY にフォールバックします。
walletIdstringいいえCryptoAPIs の buyer-service ウォレット RECORD ID(POST /wallets が返す ID)。オンチェーンアドレスではありません。アドレスを渡すと wallet_not_found が返されます。未指定の場合は X402_WALLET_ID 環境変数にフォールバックします。先に作成してください(blockchain+network ごとに 1 回):https://ai.cryptoapis.io/x402/buyer/wallets に POST し、{blockchain, network(eip155:8453 や solana:<genesisHash> などの CAIP-2 ID。単なる名前は不可), address(公開アドレス。Solana/Kaspa では必須)} を指定すると、walletId が返されます。
maxAmountstringいいえ任意の安全上限。必要な原子単位の金額がこの値を超える場合、支払いを拒否します。
svmSecretstringいいえSolana の秘密鍵(base58 エンコードされた 64 バイトの鍵ペアシークレット)。svm-transaction の支払いに署名します。未指定の場合は X402_SVM_SECRET にフォールバックします。
privateKeystringいいえEVM の秘密鍵(16 進数。0x は任意)。eip712(EVM)の支払いに署名し、デフォルトでは Tron にも使用します。未指定の場合は X402_PRIVATE_KEY にフォールバックします。セキュリティ:信頼できるローカル環境でのみ使用してください。
allowedHostsarrayいいえ支払いを許可するホストを制限します。例:["api.acme.com"](先頭のドットはサブドメインに一致します:".acme.com")。リスト外の url は、ネットワーク呼び出しの前に拒否されます。未指定の場合は X402_ALLOWED_HOSTS 環境変数(カンマ区切り)にフォールバックします。モデルの影響を受けないよう、この環境変数に許可リストを設定してください。これにより、プロンプトインジェクションされた url による許可リストの拡張を防げます。
buyerBaseUrlstringいいえbuyer サービスのベース URL を上書きします(デフォルト:https://ai.cryptoapis.io/x402/buyer)
allowedNetworksarrayいいえ支払いを許可する CAIP-2 ネットワークを制限します(例:["eip155:8453"])

詳細

@cryptoapis-io/mcp-x402-pay

これは x402 の購入者側です — エージェントがリソースの料金を支払うために使うツールです。API に料金を請求するマーチャントには、MCP ツールではなくミドルウェア SDK(@cryptoapis-io/x402-merchant-sdk)を使用します。

AI エージェントが x402 で保護された HTTP エンドポイントを見つけて支払うための MCP サーバーです。

  • x402_pay — URL を取得し、サーバーが 402 Payment Required を返した場合は、CryptoAPIs 購入者サービスを通じて支払いを承認し、ローカルで署名して再試行し、支払い済みのレスポンスを返します。
  • x402_discover — ファシリテーターの x402 リソースと価格のカタログを閲覧できます。これにより、エージェントは渡された API を呼び出すだけでなく、有料 API を見つけることができます。

ノンカストディアル: 秘密鍵はリクエストごとに渡され、プロセスの外に出ることはありません(HTTP サーバーはなく、stdio のみです)。

現在の対応状況: EVM(eip712、例:Base USDC)と Solana に対応しています。Tron、Bitcoin/UTXO、XRP、Kaspa は近日対応予定です。配線は済んでいますが、まだ有効化されていません。これらで支払うと、family_not_yet_supported(「近日対応予定」)という明確な結果が返されます。

実行

node dist/cli.js            # stdio MCP server (no --api-key at startup; keys are per-tool-call)

前提条件 — エージェントの walletId

x402_pay は CryptoAPIs のエージェントウォレット(walletId)から支払います。支払いの前に、ブロックチェーンとネットワークの組み合わせごとに一度だけ作成してください — 購入者 API への POST を1回行うと ID が返されます(ノンカストディアル:登録するのは公開アドレスのみです)。

curl -X POST https://ai.cryptoapis.io/x402/buyer/wallets \
  -H "x-api-key: $CRYPTOAPIS_API_KEY" -H "content-type: application/json" \
  -d '{"blockchain":"base","network":"eip155:8453","address":"0xYourAddress"}'
# → { "walletId": "…" }

network はCAIP-2 ID(eip155:8453、solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp など)でなければなりません。単なる名前は使用できません。また、address(どのチェーンでも使用可能。Solana/Kaspa では必須)または xpub(xpub 対応チェーン)のいずれか一方を指定してください。不正な本文には、明確な 400 malformed_request が返されます。返された ID を X402_WALLET_ID に設定するか、walletId を渡してください。

ツール:x402_pay

入力必須説明
url✓(ペイウォールで保護されている可能性がある)リソース
apiKey✓CryptoAPIs キー(X402_BUYER 機能)— 購入者の /authorize の呼び出しにのみ使用
walletId✓POST /wallets で取得したウォレットレコード ID(レジストリの _id)— オンチェーンアドレスではありません(アドレスを指定すると wallet_not_found が返されます)
privateKey✓ウォレットの EVM キー — ローカルで署名され、どこにも送信されません
method/body/headers実行するリクエスト
allowedNetworks支払い可能な CAIP-2 ネットワークを制限
maxAmount安全上限 — 必要な最小単位額が上限を超える場合は拒否
allowedHosts支払い可能なサイトを制限します。例:["api.acme.com"](先頭にドットを付けるとサブドメインも対象)。リスト外の URL は、ネットワーク呼び出しの前に拒否されます。X402_ALLOWED_HOSTS(カンマ区切り)にフォールバックします — 許可リストをモデルがアクセスできない場所に保つため、ここに固定してください

{ status, paid, body, settlement? } を返します。許容できる支払い方法がない 402、または maxAmount を超える場合は、reason とともに paid:false を返します — 署名も支払いも行われません。

ツール:x402_discover

x402 の「Bazaar」— 登録済みの x402 リソースと各リソースの料金を閲覧します (仕様 §8)。

入力必須説明
typeリソースタイプで絞り込みます。例:"http"
limitページサイズ。1~100(デフォルトは 20)
offsetページ送りでスキップする行数(デフォルトは 0)
facilitatorBaseUrlファシリテーターを上書きします(QA/ローカル)

{ resources: [{ resource, type, x402Version, accepts, lastUpdated, metadata? }], pagination } を返します。

公開 — API キーもウォレットも不要で、支出もありません。そのため、常に安全に呼び出せます。accepts[].amount は最小単位(USDC は小数点以下 6 桁:"10000" = $0.01)であることに注意してください。ユーザーに価格を提示する前に換算してください。選択した resource を x402_pay に渡すと、実際に購入できます。

フロー

  1. fetch(url) を実行します。402 以外の場合は、そのまま返します。
  2. 402 の場合は、accepts の項目を選択し(許可リストを考慮)、購入者の /authorize を通じて認証し、署名用アーティファクトを取得します。
  3. ローカルで署名します(@cryptoapis-io/mcp-signer の evm_sign typed-data)。次に、x402 PaymentPayload を作成します (ワイヤースキームは常に exact で、ファミリーは network に含まれます)。
  4. base64 の X-PAYMENT ヘッダーを付けて再試行し、支払い済みレスポンスと決済結果の X-PAYMENT-RESPONSE を返します。

セキュリティ

秘密鍵はツールのパラメーターであり、MCP クライアントによってログに記録されたり、会話履歴に保存されたりする可能性があります。信頼できるローカル環境でのみ使用してください。これは @cryptoapis-io/mcp-signer と同様です。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。