10 నిమిషాల్లో మీ MCP సర్వర్ను మోనిటైజ్ చేయండి.
Install @blockchain0x/mcp, మరియు ఒక ప్రీమియం సాధనంలో requirePaymentని పిలవండి, కాలర్ చెల్లించనిప్పుడు - ఇది ఒక హోస్టెడ్ చెక్ఔట్ URLతో x402 402 ఛాలెంజ్ను రూపొందిస్తుంది, మీరు తిరిగి ఇవ్వాలి. payment.received వెబ్హుక్ సెటిల్మెంట్ను ధృవీకరించిన తర్వాత, మీరు మీ స్వంత స్టోర్లో కాలర్ చెల్లించినట్లు గుర్తించాలి మరియు సాధనం నడుస్తుంది. ఉచిత సాధనాలు ఉచితంగా ఉంటాయి. సాధారణ HTTP సర్వర్ కోసం, రిసీవ్-సైడ్ x402 అడాప్టర్ అదే పని చేస్తుంది.
మీరు ప్రారంభించడానికి ముందు.
- Node లేదా Pythonలో అధికారిక Model Context Protocol SDKని ఉపయోగించే పనిచేసే MCP సర్వర్. మీ వద్ద ఒకటి లేకపోతే, మొదట అప్స్ట్రీమ్ టెంప్లేట్తో ఒకటి నిర్మించండి.
- ఒక Blockchain0x ఖాతా మరియు ఒక ఏజెంట్ ప్రొఫైల్ (5 నిమిషాల సెటప్ కోసం add-payments-to-agent guide చూడండి).
- ఒక API కీ (ఈ మార్గదర్శకానికి
sk_test_ని ఉపయోగించండి). - ఎవరూ చెల్లించినదీ గుర్తుంచుకోవడానికి ఒక చిన్న స్టోర్ (ఒక డేటాబేస్ వరుస లేదా ఒక Redis కీ) - మీ కోడ్ దీన్ని కలిగి ఉంటుంది, చెల్లింపు వెబ్హుక్ ద్వారా నవీకరించబడుతుంది.
- మీరు ఏ సాధనాలకు ఛార్జ్ చేయాలనుకుంటున్నారో మరియు ప్రతి కాల్కు ధర ఏంటో స్పష్టంగా తెలుసుకోవాలి. డిజైన్ నమూనాల కోసం చెల్లింపు MCP సాధన గ్లోసరీ ఎంట్రీని చూడండి.
ప్యాకేజీని ఇన్స్టాల్ చేయండి.
@blockchain0x/mcp exports requirePayment, a pure function that mints an x402 402 challenge for a tool. It is npm (TypeScript) only. If you run a plain HTTP server instead of an MCP one, install the receive-side x402 adapter and gate routes with it.
# Gate your own MCP tools with the requirePayment 402 builder:
npm install @blockchain0x/mcp
# Or gate a plain HTTP server with the receive-side x402 adapter + SDK:
npm install @blockchain0x/x402 @blockchain0x/noderequirePaymentతో ఒక సాధనాన్ని గేట్ చేయండి.
Inside the tool, check your own paid-state for the caller. If they have not paid, call requirePayment and return the resulting 402 body; if they have, run the work. requirePayment is a pure builder - it does not wrap the handler and does not track payment, so the gating policy stays in your code.
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { requirePayment } from "@blockchain0x/mcp";
import { z } from "zod";
const server = new McpServer({ name: "premium-data-mcp", version: "1.0.0" });
server.tool(
"get_quote_realtime",
"Real-time quote (paid)",
{ ticker: z.string() },
async ({ ticker }, extra) => {
if (!hasPaid(extra)) {
// Pure function: mint an x402 402 challenge and hand the body back.
const { body } = requirePayment({
amountUsdc: "0.005",
payTo: "0xYourWallet",
hostedUrl: "https://pay.blockchain0x.com/checkout/abc",
});
return { content: [{ type: "text", text: JSON.stringify(body) }], isError: true };
}
const quote = await fetchLiveQuote(ticker);
return { content: [{ type: "text", text: JSON.stringify(quote) }] };
},
);import express from "express";
import { createX402Middleware } from "@blockchain0x/x402/server/express";
import { createClient } from "@blockchain0x/node";
const sdk = createClient({ apiKey: process.env.BLOCKCHAIN0X_API_KEY! });
const app = express();
// Not an MCP server? Gate a plain HTTP route the same way. The middleware
// answers unpaid requests with a 402 and lets paid ones through.
// Configure the price and recipient per the x402 docs.
app.use("/quote", createX402Middleware({ sdk }));402 శరీరం requirePayment చెల్లించని కాలర్కు తిరిగి వస్తుంది:
// requirePayment returns { status: 402, body }. The body an unpaid caller sees:
{
"error": "payment_required",
"amountUsdc": "0.005",
"payTo": "0xYourWallet",
"hostedUrl": "https://pay.blockchain0x.com/checkout/abc",
"network": "mainnet"
}చెల్లింపును నిర్ధారించండి, తరువాత ఎవరు చెల్లించారో గుర్తుంచుకోండి.
When a caller pays the checkout, Blockchain0x POSTs a signed payment.received event to your webhook. Verify it with webhooks.verify from @blockchain0x/node, then write the paid state to a store you control - a database row, a Redis key, your call. That store is what the tool checks in Step 2. There is no shipped receipt cache; you own where paid-state lives and how long it lasts.
import express from "express";
import { webhooks } from "@blockchain0x/node";
const app = express();
app.use(express.raw({ type: "application/json" }));
app.post("/webhooks/payment", (req, res) => {
const result = webhooks.verify({
headers: req.headers,
rawBody: req.body, // RAW bytes
secret: process.env.BLOCKCHAIN0X_WEBHOOK_SECRET!,
});
if (!result.ok) return res.status(400).json({ code: result.code });
if (result.eventType === "payment.received") {
// Remember the payer however you like - a DB row, a Redis key, your call.
markPaid(result.eventId);
}
res.status(200).send("ok");
});ఒక చెల్లింపు యాక్సెస్ను ఎంత కాలం అందిస్తుంది అనేది మీ నిర్ణయం - ఒకే కాల్, ఒక సెషన్, ఒక గంట. సాధనానికి మీరు ధరను ఎలా నిర్ధారిస్తారో దానికి సరిపోలే చెల్లించిన-రాష్ట్ర కీపై ఒక కాల పరిమితిని సెట్ చేయండి. సాధారణ సెషన్ ఒక చెల్లింపును పునఃఉపయోగించడానికి తగినంత పొడవుగా, దుర్వినియోగం పరిమితమైనంత చిన్నది.
తొలగించండి మరియు ధృవీకరించండి.
సర్వర్ను పంపండి. ఉచిత సాధనాలు వెంటనే వారి ఫలితాన్ని తిరిగి ఇవ్వాలి; గేటెడ్ సాధనాలు కొత్త క్లయింట్ నుండి మొదటి కాల్లో 402 శరీరాన్ని తిరిగి ఇవ్వాలి, ఆ తర్వాత ఆ కాలర్ చెల్లించినట్లు గుర్తించిన తర్వాత నడుస్తుంది. ప్రత్యక్షంగా వెళ్లడానికి ముందు Base Sepolia పై sk_test_ కీపై రెండు మార్గాలను ధృవీకరించండి.
ప్రథమ రోజున చూడాల్సిన రెండు సంకేతాలు: తిరిగి వచ్చిన 402ల సంఖ్య (మీ టాప్-ఆఫ్-ఫన్నెల్) మరియు 402 తరువాత విజయవంతమైన సాధన నడుపుల సంఖ్య (మీ మార్పిడి). మార్పిడి అంచనాకు కంటే చాలా తక్కువ ఉంటే, ధర తప్పుగా ఉండవచ్చు. మీ చెల్లించిన రాష్ట్ర స్టోర్ యొక్క హిట్ రేట్ను కూడా చూడండి - ఇది సున్నా దగ్గర ఉంటే, మీ యాక్సెస్ విండో చాలా చిన్నది మరియు చెల్లిస్తున్న కాలర్లను మళ్లీ చెల్లించమని అడుగుతున్నారు.
మొదటి సారి MCP మోనిటైజర్లను బాధించే ఐదు విషయాలు.
అనుకోకుండా ఉచిత సాధనాలను గేటు చేయడం
ప్రతి సాధనాన్ని 'కేవలం సందర్భంలో' గేట్ చేయడం ఆకర్షణీయంగా ఉంది. చేయవద్దు. చెల్లించిన MCP సర్వర్ల మొత్తం విలువ ఏమిటంటే, ఉచిత సాధనాలు చెల్లించిన వాటితో ఒకే సర్వర్లో సహజంగా ఉంటాయి, కాబట్టి క్లయింట్ చెల్లించకుండా ఉచిత కనుగొనడం మరియు మెటాడేటా సాధనాలను ఉపయోగించగలడు. వాస్తవంగా ప్రీమియం వనరులను వినియోగించే సాధనాల కోసం మాత్రమే 402ని మింట్ చేయండి; మిగతా వాటిని సాధారణ ఫలితాలుగా వదిలేయండి.
requirePayment ఒక బిల్డర్, మిడ్వేర్ కాదు
requirePayment ఒక శుద్ధ ఫంక్షన్: మీరు ఒక టూల్ చెల్లించనిప్పుడు దీన్ని పిలుస్తారు, ఇది { status: 402, body }ని తిరిగి ఇస్తుంది, మరియు మీరు ఆ శరీరాన్ని తిరిగి ఇవ్వాలి. ఇది మీ హ్యాండ్లర్ను చుట్టదు మరియు ఎవరు చెల్లించారో ట్రాక్ చేయదు. ఇది amountUsdc, payTo, hostedUrl మరియు ఒక ఆప్షనల్ నెట్వర్క్ మరియు వివరణను తీసుకుంటుంది - ఇంకేం లేదు. పిలువువాడు చెల్లించాడా లేదా అనే విషయం మీ స్వంత స్టోర్కు వ్యతిరేకంగా మీరు నడిపించే ఒక తనిఖీ.
పంపిన రసీదు కాష్ లేదు
Blockchain0x 402 బిల్డర్ మరియు సెటిల్మెంట్ వెబ్హుక్ను పంపిస్తుంది, రసీదుల నిల్వ సహాయకుడు కాదు. 'ఈ కాలర్ చెల్లించింది' ఎక్కడ ఉంటుందో మీరు నిర్ణయించండి - ఒక డేటాబేస్ వరుస, ఒక Redis కీ, ఒకే ప్రక్రియ కోసం మెమరీలో మ్యాప్ - మరియు మీరు చెల్లింపు.received వెబ్హుక్ వస్తే దాన్ని తిప్పుతారు. ఇది విధానాన్ని (ఒక చెల్లింపు యాక్సెస్ను ఎంత కాలం అందిస్తుంది) పూర్తిగా మీ చేతుల్లో ఉంచుతుంది.
క్లయింట్ కలిగి ఉన్నట్లు చెప్పిన రసీదును నమ్మడం
కాలర్ చెల్లించిందని నిర్ధారించడానికి అనుమతించవద్దు. నిజం యొక్క మూలం payment.received వెబ్హుక్, webhooks.verify (లేదా డాక్యుమెంటెడ్ HMAC) తో మీ వెబ్హుక్ సీక్రెట్కు వ్యతిరేకంగా నిర్ధారించబడింది. ఒక నిర్ధారిత ఈవెంట్ తర్వాత మాత్రమే చెల్లించిన వ్యక్తిని గుర్తించండి, మరియు ఆ సర్వర్-పక్క రాష్ట్రంలో సాధనాన్ని గేటు చేయండి - క్లయింట్ పంపించిన దానిపై ఎప్పుడూ కాదు.
చెల్లించిన సాధనాల ఆలస్యంపై ఎలాంటి మెట్రిక్లు లేవు
క్లయింట్ మరియు టూల్ అమలుకు మధ్య చెల్లింపు దశను ఉంచడం కాలర్ చెల్లించడానికి మరియు మొదటి కాల్లో సెటిల్ చేయడానికి తీసుకునే సమయాన్ని జోడిస్తుంది, తరువాత మీరు వాటిని చెల్లించినట్లు గుర్తించినప్పుడు సమీప-సున్నా. కస్టమర్ ఫిర్యాదు చేసినప్పుడు 'టూల్ నెమ్మదిగా ఉంది' నుండి 'చెల్లింపు నెమ్మదిగా ఉంది' అని చెప్పడానికి రెండు శాఖలను పరికరీకరించండి. మీకు మెట్రిక్ లేకుండా మీరు బాటిల్నెక్ను తప్పుగా నిర్ధారించుకుంటారు.
చెల్లించిన ట్రాఫిక్ ప్రవహిస్తున్నప్పుడు.
మొనిటైజేషన్ ఏర్పాటు చేయబడినప్పుడు, అత్యంత ఉపయోగకరమైన అనుసరణలు నమ్మదగిన వెబ్హుక్ నిర్వహణ (కాబట్టి మీరు చెల్లింపు ఈవెంట్లను కోల్పోరు), ఖర్చు నియంత్రణలు (కాబట్టి మీరు నిర్మించిన MCP సర్వర్ ఇతర ఏజెంట్లకు చెల్లిస్తే అది పరిమితంగా ఉంటుంది), మరియు టెస్ట్నెట్-మొదటి ప్రవాహం (కాబట్టి మీరు నిజమైన డబ్బు కాల్చకుండా ధర మార్పులను పంపించవచ్చు).
డెవలపర్లు ఎక్కువగా అడిగే వెబ్హుక్ ప్యాటర్న్స్
ప్రాంప్ట్ ఇంజెక్షన్ను తట్టుకునే ఏజెంట్ ఖర్చు నియంత్రణలను ఏర్పాటు చేయండి
నిజమైన డబ్బు లేకుండా ఏజెంట్ చెల్లింపులను పరీక్షించండి
docs.blockchain0x.comలో పూర్తి API సూచిక. సంబంధిత ఉత్పత్తి ఉపరితలం: MCP ఇంటిగ్రేషన్.