在10分钟内货币化您的MCP服务器。
让AI代理按调用为您的MCP服务器付款,以USDC支付,带有签名Webhook和审计日志。兼容x402。即插即用中间件。
您构建了一个 MCP 服务器。成千上万的客户正在免费使用它。
您发布了 MCP 服务器,因为 Claude Desktop、Cursor 和 Cline 客户端需要此功能。消息传播开来。您现在每天为从未见过的 AI 代理提供成千上万的付费工具调用。您的出站账单是真实的。您为基础服务提供的 API 密钥是真实的。您的维护时间是真实的。收入为零。
您有三个选择。保持免费并在基础设施上烧钱。将其放在手动 API 密钥后面(并因注册表单的摩擦而失去 95% 的代理流量)。或者添加一个 AI 代理可以实际完成的支付层 - 这正是 402 Payment Required + USDC 的目的。
Blockchain0x 是选项三。您的 MCP 服务器指向我们的 API。当 AI 客户调用付费工具时,响应是 402,带有托管支付 URL。客户(或其人类监督者)以 USDC 付款。您的 webhook 被触发。来自该客户的下一个调用成功。整个形状称为 x402,这是 Coinbase 为此确切模式发布的协议。
如何将402 Payment Required转变为程序化结账。
HTTP 状态码 402 自规范首次编写以来就存在,但从未有过标准实现。Coinbase 的 x402 协议终于给了它一个。形状很简单:您的工具返回一个 402 挑战(一个结构化的 JSON 主体,描述如何支付);客户端支付并重试;调用成功。来自 @blockchain0x/mcp 的 requirePayment 为您构建该挑战主体。
{
"error": "payment_required",
"amountUsdc": "0.02",
"payTo": "0xYourMcpAgentAddress",
"hostedUrl": "https://pay.blockchain0x.com/checkout/docs-search",
"network": "mainnet",
"description": "docs search"
}四种状态
- 未付款调用: AI 客户调用付费工具。您的处理程序检查您自己的付费状态,发现付款人未被标记为已付款,并返回来自 requirePayment 的 402 挑战主体作为工具错误。
- 支付: 客户跟随 hostedUrl 到托管结账并在 Base 上完成 USDC 转账(可以通过支持 x402 的钱包进行编程或通过二维码手动完成)。
- Webhook: Blockchain0x 在链确认后几秒钟内向您的端点发送 payment.received。您使用 webhooks.verify 验证它,并在自己的存储中记录付款人已付款。
- 重试: 客户重试原始 MCP 工具调用。您的处理程序现在看到付款人被标记为已付款,运行该工具并返回实际结果。
每笔支付都记录在您的 Blockchain0x 仪表板中,每个 payment.received webhook 都会落入您自己的日志中。因为您拥有支付状态和 webhook 处理程序,所以每个工具和每个付款人的收入分析都来自您已经存储的数据。
一个完整的工作示例。
来自 @blockchain0x/mcp 的 requirePayment 构建 402 挑战;来自 @blockchain0x/node 的 webhooks.verify 验证确认。您拥有其中的两个小部分:工具内部的付费状态检查,以及将付款人标记为已付款的 webhook 处理程序。以下是一个完整的 MCP 服务器,公开一个付费工具及其 webhook 端点。
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为您的 MCP 服务器创建一个 Blockchain0x 代理钱包,选择包含 API 和 webhook 访问的计划。请注意您将用作 payTo 的钱包地址。
- 2安装软件包:
npm install @blockchain0x/mcp @blockchain0x/node - 3设置环境变量: BLOCKCHAIN0X_API_KEY(MCP server 会将其作为 Authorization: Bearer 发送)以及 BLOCKCHAIN0X_WEBHOOK_SECRET(dashboard 签名密钥,webhooks.verify 会对此进行校验)。
- 4通过检查您自己的付费状态来限制您的付费工具,并在调用者未付款时返回 requirePayment 挑战主体。将免费工具保持开放。
- 5在 Blockchain0x 仪表板中配置 webhook 端点(例如 /webhooks/blockchain0x),然后使用 webhooks.verify 验证每次交付,并在 payment.received 上将付款人标记为已付款。
- 6部署。 第一个访问您付费工具的 AI 客户端将获得 402,支付后下一个调用成功。您将在 10 秒内在仪表板上看到付款。
您还可以使用 npx @blockchain0x/mcp(stdio)或在 mcp.blockchain0x.com 上托管的可流式传输 HTTP 容器运行 Blockchain0x MCP 服务器。完整的设置,包括 webhook 负载形状,详见 文档。
您处理程序中最重要的单一决策。
因为您拥有支付状态,您还决定支付的有效时间。客户支付工具后,在一段时间内将其标记为已支付,并在该窗口内允许调用而无需新的支付。将窗口设置得太短,您会在每次调用中惩罚客户;将窗口设置得太长,您会在一次便宜的支付后赠送昂贵的操作。对您的Redis/Postgres密钥设置TTL是实现它的最简单方法。
我们推荐的窗口
| 工具类型 | 窗口 | 为什么 |
|---|---|---|
| 便宜的查找($0.01-$0.05) | 60秒 | 吸收自然重试和后续调用而不泄露会话。 |
| 中等价格推理($0.10-$1) | 30秒 | 按调用计费是正确的形式;短暂的缓存处理瞬态错误的重试。 |
| 昂贵的长上下文($1-$10) | 0秒(无缓存) | 每个调用都是独立的付费事件;不缓存。 |
| 订阅式工具 | 24小时 | 每天支付一次,在窗口内无限制调用。每个客户的收入更高,摩擦更低。 |
根据(付款人钱包,工具)对为您的付费状态设置密钥,就像示例中使用search_docs:0xPayer一样。两个不同的客户端访问同一工具,每个客户端单独支付。同一客户端访问两个不同的工具,需要两个单独的支付。如果您愿意,您可以更广泛地设置范围(每个付款人跨所有工具);每个付款人每个工具的粒度使定价感觉公平。
适用于MCP服务器的四种定价形态。
定价由您决定 - 您在中间件中设置每个工具的金额。以下是我们最常见的四种模式以及它们适合的工具形状。
按调用微定价
$0.01 - $0.05 每次调用搜索、查找、分类、格式转换 - 低成本高容量的操作。
对客户来说摩擦最低;成本与使用完全一致。
最高的交易开销;仅在高调用量时有效。
按调用中定价
$0.10 - $1.00 每次调用LLM推理、生成、内容制作,任何每次调用都进行实际工作的内容。
平衡 - 每次调用的明确价值,可管理的交易数量。
每次调用的摩擦更高;客户有时更喜欢这个价格点的订阅。
按调用高定价
$1 - $10 每次调用长上下文生成、文档处理、多步骤编排、昂贵的第三方API封装。
每次调用的利润是有意义的;失败的支付是可以接受的损失。
客户在这个价格上谈判很艰难;预计会有退款请求。
订阅窗口
$5 - $50 每24小时窗口(或每月 $X)在一个会话中进行多次调用且不容忍每次调用付款摩擦的客户。
每位客户的收入更高;每次调用的开销更少。
可发现性较低;客户必须提前承诺。通常与按调用组合以实现混合定价。
许多运营商混合了模式:按调用微定价的廉价工具,按调用高定价的昂贵工具,以及为重度用户提供的24小时订阅窗口。没有什么能阻止你在同一个MCP服务器上运行这三者;每个工具在requirePayment中设置自己的amountUsdc,并在你的处理程序中设置自己的付费窗口。
专业版是几乎所有MCP服务器的正确计划。
MCP服务器操作员几乎总是从Pro开始,因为从第一天起就需要API写入访问和Webhook:免费是只读的,付费工具需要接收payment.received Webhook并验证它们。请查看定价页面以获取每个代理的确切成本和交易费用级别;简而言之,任何进行真实付费交易的服务器都远远超过了Pro自我盈利的点。
- Free:适合试用 API 和 dashboard。不适合生产环境的付费工具(只读,无 webhooks)。
- Pro:实时 MCP servers 的默认选择。完整 API 访问、webhooks、导出功能。
- Business:当你需要用于合规的审计日志,或当你为多个客户运行 MCP servers 并希望按 agent 共享团队席位时。