สร้างรายได้จากเซิร์ฟเวอร์ MCP ของคุณใน 10 นาที
ให้เอเจนต์ AI ชำระเงินให้กับเซิร์ฟเวอร์ MCP ของคุณต่อการเรียก, ใน USDC, ด้วย webhook ที่ลงนามและบันทึกการตรวจสอบ. เข้ากันได้กับ x402. Middleware ที่สามารถใช้งานได้.
คุณสร้างเซิร์ฟเวอร์ MCP ขึ้นมา ลูกค้าหมื่นคนกำลังใช้งานฟรี
คุณส่งเซิร์ฟเวอร์ MCP ของคุณเพราะว่า Claude Desktop, Cursor และ Cline clients ต้องการความสามารถนี้ ข่าวแพร่กระจาย ตอนนี้คุณกำลังให้บริการการเรียกใช้เครื่องมือที่ต้องชำระเงินหลายพันครั้งต่อวันจากเอเจนต์ AI ที่คุณไม่เคยพบเจอ ใบแจ้งหนี้การออกของคุณมีอยู่จริง คีย์ API ของคุณสำหรับบริการพื้นฐานมีอยู่จริง เวลาบำรุงรักษาของคุณมีอยู่จริง รายได้คือศูนย์
คุณมีสามตัวเลือก รักษาให้ฟรีและเผาเงินในโครงสร้างพื้นฐาน ปิดกั้นไว้เบื้องหลังคีย์ API ด้วยตนเอง (และสูญเสีย 95% ของการจราจรของเอเจนต์ไปกับความยุ่งยากของแบบฟอร์มลงทะเบียน) หรือเพิ่มชั้นการชำระเงินที่เอเจนต์ AI สามารถทำได้จริง - ซึ่งเป็นสิ่งที่ 402 Payment Required + USDC ถูกสร้างขึ้นเพื่อ
Blockchain0x เป็นตัวเลือกที่สาม เซิร์ฟเวอร์ MCP ของคุณชี้ไปที่ API ของเรา เมื่อ AI client เรียกเครื่องมือที่ต้องชำระเงิน การตอบสนองคือ 402 พร้อม URL การชำระเงินที่โฮสต์ ลูกค้า (หรือผู้ดูแลมนุษย์ของมัน) ชำระเงินใน USDC เว็บฮุกของคุณทำงาน การเรียกครั้งถัดไปจากลูกค้านั้นสำเร็จ รูปร่างทั้งหมดเรียกว่า x402 และเป็นโปรโตคอลที่ Coinbase เผยแพร่สำหรับรูปแบบนี้โดยเฉพาะ.
วิธีที่ 402 Payment Required กลายเป็นการชำระเงินแบบโปรแกรม
รหัสสถานะ HTTP 402 มีอยู่ตั้งแต่เริ่มเขียนสเปค แต่ไม่เคยมีการใช้งานมาตรฐาน โปรโตคอล x402 ของ Coinbase ในที่สุดก็ให้มัน รูปร่างนั้นเรียบง่าย: เครื่องมือของคุณส่งคืนความท้าทาย 402 (ร่าง JSON ที่มีโครงสร้างซึ่งอธิบายวิธีการชำระเงิน); ลูกค้าชำระเงินและลองใหม่; การโทรสำเร็จ requirePayment จาก @blockchain0x/mcp สร้างร่างความท้าทายให้คุณ
{
"error": "payment_required",
"amountUsdc": "0.02",
"payTo": "0xYourMcpAgentAddress",
"hostedUrl": "https://pay.blockchain0x.com/checkout/docs-search",
"network": "mainnet",
"description": "docs search"
}สี่สถานะ
- การเรียกที่ยังไม่ได้ชำระ: ลูกค้า AI เรียกเครื่องมือที่ต้องชำระเงิน ตัวจัดการของคุณตรวจสอบสถานะการชำระเงินของคุณเอง พบว่าผู้จ่ายไม่ได้ทำเครื่องหมายว่าได้รับเงินแล้ว และส่งคืนเนื้อหาความท้าทาย 402 จาก requirePayment เป็นข้อผิดพลาดของเครื่องมือ.
- การชำระเงิน: ลูกค้าติดตาม hostedUrl ไปยังการชำระเงินที่โฮสต์และทำการโอน USDC บน Base (ผ่านโปรแกรมโดยใช้กระเป๋าเงินที่รู้จัก x402 หรือด้วยตนเองผ่าน QR code).
- Webhook: Blockchain0x ส่ง payment.received ไปยัง endpoint ของคุณภายในไม่กี่วินาทีหลังจากการยืนยัน chain คุณตรวจสอบด้วย webhooks.verify และบันทึกผู้จ่ายว่าได้รับเงินในร้านของคุณเอง.
- ลองใหม่: ลูกค้าลองเรียกเครื่องมือ MCP ดั้งเดิมอีกครั้ง ตัวจัดการของคุณตอนนี้เห็นผู้จ่ายที่ทำเครื่องหมายว่าได้รับเงินแล้ว ทำงานเครื่องมือและส่งคืนผลลัพธ์ที่แท้จริง.
ทุกการชำระเงินจะถูกบันทึกในแดชบอร์ด Blockchain0x ของคุณ, และทุก webhook payment.received จะถูกบันทึกในบันทึกของคุณเอง. เนื่องจากคุณเป็นเจ้าของสถานะการชำระเงินและตัวจัดการ webhook, การวิเคราะห์รายได้ตามเครื่องมือและตามผู้ชำระเงินจะเกิดจากข้อมูลที่คุณเก็บไว้แล้ว.
ตัวอย่างที่ใช้งานได้สมบูรณ์
requirePayment จาก @blockchain0x/mcp สร้างความท้าทาย 402; webhooks.verify จาก @blockchain0x/node ยืนยันการยืนยัน คุณเป็นเจ้าของสองชิ้นเล็กๆ ระหว่างนั้น: การตรวจสอบสถานะการชำระเงินภายในเครื่องมือ และตัวจัดการ 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สร้างกระเป๋าเงินตัวแทน Blockchain0x สำหรับเซิร์ฟเวอร์ MCP ของคุณ บนแผนที่รวมการเข้าถึง API และ webhook โปรดทราบที่อยู่กระเป๋าเงินที่คุณจะใช้เป็น payTo.
- 2ติดตั้งแพ็คเกจ:
npm install @blockchain0x/mcp @blockchain0x/node - 3ตั้งค่าตัวแปรสภาพแวดล้อม: BLOCKCHAIN0X_API_KEY (เซิร์ฟเวอร์ MCP จะส่งค่านี้เป็น Authorization: Bearer) และ BLOCKCHAIN0X_WEBHOOK_SECRET (secret สำหรับลงนามจากแดชบอร์ดที่ webhooks.verify ตรวจสอบเทียบกับค่า)
- 4กำหนดเครื่องมือที่ต้องชำระเงินของคุณ โดยการตรวจสอบสถานะการชำระเงินของคุณเองและส่งคืนเนื้อหาความท้าทาย requirePayment เมื่อผู้โทรยังไม่ได้ชำระเงิน ปล่อยให้เครื่องมือฟรีไม่ถูกกำหนด.
- 5กำหนดค่า webhook endpoint ในแดชบอร์ด Blockchain0x (เช่น /webhooks/blockchain0x) จากนั้นตรวจสอบการจัดส่งแต่ละครั้งด้วย webhooks.verify และทำเครื่องหมายผู้จ่ายว่าได้รับเงินแล้วใน payment.received.
- 6ปรับใช้. AI client ตัวแรกที่เข้าถึงเครื่องมือที่ชำระเงินของคุณจะได้รับ 402, ชำระเงิน, และการโทรครั้งถัดไปจะสำเร็จ คุณจะเห็นการชำระเงินในแดชบอร์ดภายใน 10 วินาที.
คุณยังสามารถเรียกใช้เซิร์ฟเวอร์ Blockchain0x MCP ด้วย npx @blockchain0x/mcp (stdio) หรือคอนเทนเนอร์ HTTP ที่โฮสต์ที่ mcp.blockchain0x.com การตั้งค่าเต็มรูปแบบ รวมถึงรูปแบบข้อมูล payload ของ webhook อยู่ใน เอกสาร
การตัดสินใจที่สำคัญที่สุดในตัวจัดการของคุณ.
เพราะคุณเป็นเจ้าของสถานะการชำระเงิน คุณจึงตัดสินใจได้ด้วยว่าการชำระเงินจะมีผลนานแค่ไหน หลังจากที่ลูกค้าชำระเงินสำหรับเครื่องมือ ให้ทำเครื่องหมายว่าจ่ายเงินแล้วในช่วงเวลาหนึ่ง และภายในช่วงเวลานั้นให้อนุญาตการเรียกโดยไม่ต้องชำระเงินใหม่ ตั้งค่าช่วงเวลาสั้นเกินไปและคุณจะลงโทษลูกค้าด้วยความยุ่งยากในการชำระเงินในทุกการเรียก; ตั้งค่าสั้นเกินไปและคุณจะให้บริการที่มีค่าใช้จ่ายสูงหลังจากการชำระเงินที่ถูกหนึ่งครั้ง TTL บนคีย์ Redis/Postgres ของคุณคือวิธีที่ง่ายที่สุดในการดำเนินการ
หน้าต่างที่เราขอแนะนำ
| ประเภทเครื่องมือ | หน้าต่าง | ทำไม |
|---|---|---|
| การค้นหาที่ถูก ($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 เดียวกัน; เครื่องมือแต่ละตัวตั้งค่า amountUsdc ของตัวเองใน requirePayment และหน้าต่างการชำระเงินของตัวเองในตัวจัดการของคุณ
โปรเป็นแผนที่เหมาะสมสำหรับเซิร์ฟเวอร์ MCP เกือบทุกตัว.
ผู้ดำเนินการเซิร์ฟเวอร์ MCP แทบจะเริ่มต้นที่ Pro เสมอเพราะการเข้าถึงการเขียน API และ webhook เป็นสิ่งจำเป็นตั้งแต่วันแรก: ฟรีเป็นแบบอ่านอย่างเดียว และเครื่องมือที่ต้องชำระเงินต้องได้รับ webhook payment.received และตรวจสอบพวกเขา ดูหน้าราคาสำหรับค่าใช้จ่ายต่อเอเจนต์ที่แน่นอนและที่ซึ่งระดับค่าธรรมเนียมการทำธุรกรรมอยู่; เวอร์ชันสั้นคือเซิร์ฟเวอร์ใดๆ ที่ทำปริมาณการชำระเงินจริงอยู่ไกลเกินจุดที่ Pro ชำระเงินให้กับตัวเอง
- Free: เหมาะสำหรับทดลองใช้ API และ dashboard แต่ไม่เหมาะสำหรับเครื่องมือแบบจ่ายเงินใน production (อ่านอย่างเดียว, ไม่มี webhooks)
- Pro: ค่าเริ่มต้นสำหรับ MCP servers แบบใช้งานจริง เข้าถึง API ได้เต็มรูปแบบ, webhooks, exports
- Business: เมื่อคุณต้องการ audit log สำหรับ compliance หรือเมื่อคุณรัน MCP servers สำหรับหลายลูกค้าและต้องการการแชร์ team-seat แบบรายเอเจนต์