メインコンテンツにスキップ
ペルソナ 2 - MCPサーバーオペレーター

10分であなたのMCPサーバーをマネタイズ。

AIエージェントがあなたのMCPサーバーにUSDCで1回ごとに支払うことを許可します。署名されたWebhookと監査ログ付き。x402互換。ドロップインミドルウェア。

痛み

あなたはMCPサーバーを構築しました。何千人ものクライアントがそれを無料で使用しています。

あなたはClaude Desktop、Cursor、およびClineクライアントがその機能を必要としていたため、MCPサーバーを出荷しました。噂が広まりました。あなたは今、会ったことのないAIエージェントから1日あたり数千の有料ツールの呼び出しを提供しています。あなたの出口請求は現実です。基盤となるサービスのAPIキーは現実です。あなたのメンテナンスタイムは現実です。収益はゼロです。

あなたには3つの選択肢があります。無料のままにしてインフラにお金を燃やすか、手動のAPIキーの背後にゲートを設けるか(サインアップフォームの摩擦でエージェントトラフィックの95%を失います)。または、AIエージェントが実際に完了できる支払いレイヤーを追加します - これはまさに402 Payment Required + USDCが構築された目的です。

Blockchain0xはオプション3です。あなたのMCPサーバーは私たちのAPIを指しています。AIクライアントが有料ツールを呼び出すと、応答はホストされた支払いURLを持つ402です。クライアント(またはその人間の監督者)はUSDCで支払います。あなたのWebhookが発火します。そのクライアントからの次の呼び出しは成功します。全体の形はx402と呼ばれ、これはCoinbaseがこの正確なパターンのために公開したプロトコルです。

X402 パターン

402 Payment Requiredがプログラム的なチェックアウトになる方法。

HTTPステータスコード402は、仕様が最初に書かれて以来存在していますが、標準的な実装はありませんでした。Coinbaseのx402プロトコルがついにそれを提供します。形はシンプルです:あなたのツールは402チャレンジを返します(支払い方法を説明する構造化されたJSONボディ);クライアントは支払い、再試行します;呼び出しは成功します。@blockchain0x/mcpからのrequirePaymentは、そのチャレンジボディを構築します。

402チャレンジボディrequirePaymentが構築され、ツールエラーとして返されます。
{
  "error": "payment_required",
  "amountUsdc": "0.02",
  "payTo": "0xYourMcpAgentAddress",
  "hostedUrl": "https://pay.blockchain0x.com/checkout/docs-search",
  "network": "mainnet",
  "description": "docs search"
}

4つの状態

  1. 未払いの呼び出し: AIクライアントが有料ツールを呼び出します。あなたのハンドラーは自分の支払い状態を確認し、支払者が支払い済みとしてマークされていないことを見つけ、requirePaymentからの402チャレンジボディをツールエラーとして返します。
  2. 支払い: クライアントはhostedUrlに従ってホストされたチェックアウトに進み、Base上でUSDCの送金を完了します(x402対応ウォレットを介してプログラム的に、またはQRコードを介して手動で)。
  3. Webhook: Blockchain0xはチェーン確認から数秒以内にpayment.receivedをあなたのエンドポイントに送信します。あなたはそれをwebhooks.verifyで確認し、支払者を自分のストアで支払い済みとして記録します。
  4. 再試行: クライアントは元のMCPツール呼び出しを再試行します。あなたのハンドラーは、支払者が支払い済みとしてマークされているのを確認し、ツールを実行し、実際の結果を返します。

すべての支払いはあなたのBlockchain0xダッシュボードに記録され、すべてのpayment.receivedウェブフックはあなた自身のログに記録されます。支払い状態とウェブフックハンドラを所有しているため、ツールごとおよび支払者ごとの収益分析は、すでに保存しているデータから得られます。

ミドルウェア設定

完全な動作例。

requirePaymentは@blockchain0x/mcpから402チャレンジを構築し、webhooks.verifyは@blockchain0x/nodeから確認を検証します。あなたはその間の2つの小さな部分を所有しています:ツール内の有料状態チェックと、支払者を支払い済みとしてマークするWebhookハンドラーです。以下は、1つの有料ツールとそのWebhookエンドポイントを公開する完全なMCPサーバーです。

INDEX.TS - 1つの有料ツールとそのWebhookを持つMCPサーバー
import express from "express";
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { requirePayment } from "@blockchain0x/mcp";
import { webhooks } from "@blockchain0x/node";

const server = new McpServer({ name: "docs-search", version: "1.0.0" });

// You decide who counts as paid. Back this with Redis/Postgres in production.
const paid = new Set<string>();

server.tool(
  "search_docs",
  "Semantic search across our docs",
  { query: { type: "string" }, payer: { type: "string" } },
  async ({ query, payer }) => {
    if (!paid.has(`search_docs:${payer}`)) {
      // Not paid yet: build an x402-compatible 402 challenge and return its
      // body as a tool error. requirePayment is a challenge builder - it does
      // not gate the call for you; this check is yours.
      const { body } = requirePayment({
        amountUsdc: "0.02",
        payTo: "0xYourMcpAgentAddress",
        hostedUrl: "https://pay.blockchain0x.com/checkout/docs-search",
        description: "docs search",
      });
      return { content: [{ type: "text", text: JSON.stringify(body) }], isError: true };
    }
    const results = await runVectorSearch(query);
    return { content: [{ type: "text", text: JSON.stringify(results) }] };
  },
);

// Your webhook endpoint marks a payer as paid once the checkout settles.
const app = express();
app.post("/webhooks/blockchain0x", express.raw({ type: "*/*" }), (req, res) => {
  const r = webhooks.verify({ headers: req.headers, rawBody: req.body, secret: process.env.BLOCKCHAIN0X_WEBHOOK_SECRET! });
  if (!r.ok) return res.status(400).json({ code: r.code });
  if (r.eventType === "payment.received") {
    // Resolve (tool, payer) from the reference you encoded in hostedUrl, then:
    paid.add("search_docs:0xPayer");
  }
  res.json({ received: true });
});

セットアップ手順

  1. 1Blockchain0xエージェントウォレットを作成する あなたのMCPサーバー用に、APIおよびWebhookアクセスを含むプランで。payToとして使用するウォレットアドレスをメモしてください。
  2. 2パッケージをインストールする: npm install @blockchain0x/mcp @blockchain0x/node
  3. 3環境変数を設定してください: BLOCKCHAIN0X_API_KEY (MCP server が Authorization: Bearer として送信します) と BLOCKCHAIN0X_WEBHOOK_SECRET (dashboard の署名用シークレットで、webhooks.verify が照合します)。
  4. 4有料ツールをゲートする 自分の支払い状態を確認し、呼び出し元が支払っていない場合はrequirePaymentチャレンジボディを返します。無料ツールはゲートしないでください。
  5. 5Webhookエンドポイントを設定する Blockchain0xダッシュボードで(例:/webhooks/blockchain0x)、次にwebhooks.verifyで各配信を確認し、payment.receivedで支払者を支払い済みとしてマークします。
  6. 6デプロイ。 あなたの有料ツールに最初にアクセスしたAIクライアントは402を受け取り、支払い、次の呼び出しが成功します。支払いは10秒以内にダッシュボードに表示されます。

あなたはまた、npx @blockchain0x/mcp(stdio)またはmcp.blockchain0x.comのホストされたストリーミングHTTPコンテナでBlockchain0x MCPサーバーを実行できます。Webhookペイロードの形状を含む完全なセットアップは、ドキュメントにあります。

あなたの支払いウィンドウ

ハンドラー内で最も重要な決定。

支払い状態を所有しているため、支払いがどのくらいの期間カウントされるかを決定します。クライアントがツールの支払いをした後、一定の期間マークを付けて支払い済みのままにし、そのウィンドウ内で新しい支払いなしに呼び出しを通過させます。ウィンドウを短く設定すると、すべての呼び出しで支払いの摩擦をクライアントに課すことになります。ウィンドウを長く設定すると、1回の安価な支払いの後に高価な操作を提供することになります。Redis/PostgresキーのTTLは、それを実装する最も簡単な方法です。

推奨するウィンドウ

ツールの種類ウィンドウなぜ
安価なルックアップ ($0.01-$0.05)60秒セッションを明かさずに自然なリトライやフォローアップコールを吸収します。
中価格帯の推論 ($0.10-$1)30秒コールごとの支払いは正しい形です; 短いキャッシュが一時的なエラーの再試行を処理します。
高価な長文コンテキスト ($1-$10)0秒(キャッシュなし)各呼び出しは独自の有料イベントです。キャッシュはありません。
サブスクリプションスタイルのツール24時間ウィンドウ内で無制限の呼び出しのために1日1回支払います。摩擦が少ないクライアントあたりの収益が高くなります。

支払い状態を(支払者ウォレット、ツール)ペアごとにキー付けします。例のsearch_docs:0xPayerのように。異なる2つのクライアントが同じツールにアクセスし、それぞれが別々に支払います。同じクライアントが2つの異なるツールにアクセスし、2つの別々の支払いが必要です。より広範囲にスコープを設定することもできます(すべてのツールに対して支払者ごとに);支払者ごと、ツールごとの粒度が価格設定を公平に感じさせます。

価格設定パターン

MCPサーバーに適した4つの価格形状。

料金はあなたの判断です - ミドルウェア内の各ツールの金額を設定します。以下は、最も一般的に見られる4つのパターンと、それに適合するツールの形状です。

コールごとのマイクロ価格設定

$0.01 - $0.05 / コール

検索、照会、分類、フォーマット変換 - 大量の安価な操作。

利点

クライアントにとっての摩擦が最も少ない; コストが使用に正確に一致します。

欠点

最高の取引オーバーヘッド; 高い呼び出しボリュームでのみ機能します。

コールごとの中価格設定

$0.10 - $1.00 / コール

LLM推論、生成、コンテンツ制作、各呼び出しが実際の作業を行うもの。

利点

バランスが取れた - 1回の呼び出しあたりの明確な価値、管理可能なトランザクション数。

欠点

呼び出しごとの摩擦が高い; クライアントは時々この価格帯でのサブスクリプションを好みます。

コールごとの高価格設定

$1 - $10 / コール

長文生成、文書処理、マルチステップオーケストレーション、高額なサードパーティAPIラッピング。

利点

コールごとのマージンは意味があります; 失敗した支払いは許容可能な損失です。

欠点

クライアントはこの価格で厳しく交渉します; 返金リクエストを期待してください。

サブスクリプションウィンドウ

$5 - $50 / 24時間ウィンドウ(または月あたり$X)

セッション内で多くの呼び出しを行い、1回ごとの支払いの摩擦を許容しないクライアント。

利点

クライアントごとの収益が高い; 呼び出しごとのオーバーヘッドが少ない。

欠点

発見性が低い; クライアントは前払いが必要です。ハイブリッド価格のために、通常はコールごとに組み合わせられます。

多くのオペレーターはパターンを混ぜます:呼び出しごとのマイクロ価格で安価なツール、呼び出しごとの高価格で高価なツール、さらに重いユーザーのための24時間のサブスクリプションウィンドウ。すべてのツールを同じMCPサーバーで実行することを妨げるものはありません。各ツールはrequirePayment内の独自のamountUsdcを設定し、ハンドラー内の独自の支払いウィンドウを設定します。

どのプランが適しているか

プロはほぼすべてのMCPサーバーに適したプランです。

MCPサーバーオペレーターはほぼ常にProから始まります。なぜならAPI書き込みアクセスとWebhookが初日から必要だからです:無料は読み取り専用で、有料ツールはpayment.received Webhookを受信して検証する必要があります。正確なエージェントごとのコストと取引手数料の階層がどこにあるかは料金ページを参照してください。短いバージョンは、実際の有料ボリュームを処理しているサーバーは、Proが自分自身のコストをカバーするポイントを超えているということです。

  • Free: APIとダッシュボードの試用に便利です。本番の有料ツールには不向きです(読み取り専用、webhooksなし)。
  • Pro: 実運用のMCP server向けの標準プラン。APIへのフルアクセス、webhooks、エクスポートに対応。
  • Business: コンプライアンスのために監査ログが必要な場合、または複数クライアント向けに MCP サーバーを運用し、エージェントごとのチーム席共有が必要な場合。
全価格を見る
よくある質問

MCPに特有の5つの質問。

私のMCPサーバーはBlockchain0xでホストする必要がありますか?それとも特定のクラウドで実行する必要がありますか?

いいえ。あなたのMCPサーバーは通常の場所で実行できます:あなたのラップトップ、AWS、Fly.io、Cloudflare Workers、Raspberry Pi。ミドルウェアは、あなたのツールハンドラーをラップするNodeモジュールに過ぎません。あなたのサーバーがapi.blockchain0x.comへのアウトバウンドHTTPS呼び出しを行い、あなたが制御するURLでインバウンドWebhookを受信できる限り、統合は機能します。私たちはあなたのMCPサーバーをホストしません; 支払いサーフェスをホストします。

AIクライアントがx402を理解せず、単に402応答を受け取った場合はどうなりますか?

チャレンジボディは、非x402対応クライアントが意味のあるエラーを表示するように構成されています:エラーコード、amountUsdc、および支払い先のhostedUrl。ツールエラーをユーザーに表示するクライアント(Claude DesktopやCursorなどのほとんどのチャットベースのクライアント)は、ユーザーにクリックして支払うURLを表示します。呼び出しを完全にプログラム的に処理し、エラーを無視するクライアントは、単に結果を得られず、それが正しい結果です(呼び出しは支払われていません)。x402対応クライアントはチャレンジを読み取り、事前承認されたウォレットを使用して自動的に支払い、再試行します。

有料ウィンドウはどのくらい続きますか?クライアントは一度支払いを行い、永遠に呼び出すことができますか?

それは完全にあなたの決定です。なぜなら、あなたが支払い状態を所有しているからです。一般的な選択肢は、支払いキーに60秒のTTLを設定することです:それは自然な再試行とフォローアップパターンを吸収し、単一の支払いがセッション全体をカバーすることを許しません。サブスクリプションスタイルの価格設定のために長くすることも、ゼロ(すべての呼び出しが新しい支払いを必要とする)にすることもできます。ライブラリはウィンドウを強制しません; あなたのストアとそのTTLがそうします。

同じMCPサーバーで有料ツールと無料ツールを実行できますか?

はい。支払い状態チェック(およびミス時のrequirePaymentチャレンジ)を支払いツールのみに追加し、無料ツールはプレーンハンドラーのままにします。無料ツールは任意のクライアントで機能します。支払いツールは支払いが行われるまで402チャレンジを返します。多くのオペレーターは、安価なツールを無料にして(採用を促進するため)、高価値のもの(推論、生成、長文作業)に対して支払いを予約することから始めます。

どのクライアントが支払いを行い、どれだけの金額を使ったかを確認するにはどうすればよいですか?

すべての支払いは、支払者のウォレットアドレス、タイムスタンプ、および金額とともにあなたのBlockchain0xダッシュボードに記録され、同じデータがあなたのpayment.receivedウェブフックに届くので、好きなように保存できます。ハンドラを制御しているため、ライブラリが見ないものも記録できます:どのツールが呼び出されたか、返したすべての402チャレンジ、および既存の支払いから提供したすべての呼び出し。それらを支払いと結び付けることで、支払者ごとおよびツールごとの収益分析が得られます。

あなたのMCPサーバーを収益に変えます。

Proから始めて、npx @blockchain0x/mcpを実行するか、requirePaymentを自分のツールに組み込んでください。インストールから最初の有料コールまで10分です。