मुख्य सामग्री पर जाएं
सीखेंगाइडअपने MCP सर्वर को मुद्रीकरण करें
गाइड

10 मिनट में अपने MCP सर्वर को मुद्रीकरण करें।

10 मिनट
संक्षिप्त उत्तर

इंस्टॉल करें @blockchain0x/mcp, और एक प्रीमियम टूल के अंदर requirePayment को कॉल करें जब कॉलर ने भुगतान नहीं किया हो - यह एक होस्टेड चेकआउट URL के साथ एक x402 402 चुनौती बनाता है, जिसे आप लौटाते हैं। एक बार जब payment.received वेबहुक निपटान की पुष्टि करता है, तो आप अपने स्वयं के स्टोर में कॉलर को भुगतान किया हुआ चिह्नित करते हैं और टूल चलता है। मुफ्त उपकरण मुफ्त रहते हैं। एक साधारण HTTP सर्वर के लिए, रिसीव-साइड x402 एडाप्टर वही काम करता है।

पूर्वापेक्षाएँ

शुरू करने से पहले।

  • एक कार्यशील MCP सर्वर जो आधिकारिक Model Context Protocol SDK का उपयोग करता है Node या Python में। यदि आपके पास अभी तक एक नहीं है, तो पहले अपस्ट्रीम टेम्पलेट के साथ एक स्कैफोल्ड करें।
  • एक Blockchain0x खाता और एक एजेंट प्रोफ़ाइल (5-मिनट सेटअप के लिए add-payments-to-agent गाइड देखें)।
  • एक API कुंजी (इस गाइड के लिए sk_test_ का उपयोग करें)।
  • एक छोटा स्टोर यह याद रखने के लिए कि किसने भुगतान किया है (एक डेटाबेस पंक्ति या एक Redis कुंजी) - आपका कोड इसका मालिक है, जिसे भुगतान वेबहुक द्वारा अपडेट किया गया है।
  • यह स्पष्ट समझ कि आप किन टूल्स के लिए शुल्क लेना चाहते हैं और प्रति कॉल मूल्य। डिज़ाइन पैटर्न के लिए भुगतान किए गए MCP टूल शब्दावली प्रविष्टि देखें।
चरण 1 में 4

पैकेज इंस्टॉल करें।

@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/node
चरण 2 में 4

requirePayment के साथ एक उपकरण को गेट करें।

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.

MCP टूल (TypeScript)
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) }] };
  },
);
सादा HTTP सर्वर (प्राप्त-पक्ष x402)
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"
}
चरण 3 में 4

भुगतान की पुष्टि करें, फिर याद रखें कि किसने भुगतान किया।

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.

वेबहुक हैंडलर (TypeScript)
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");
});

एक भुगतान कितनी देर तक पहुँच प्रदान करता है, यह आपका निर्णय है - एकल कॉल, एक सत्र, एक घंटा। उस भुगतान-राज्य कुंजी पर एक समाप्ति सेट करें जो इस बात से मेल खाती है कि आप उपकरण की कीमत कैसे तय करते हैं। इतना लंबा कि एक सामान्य सत्र एक भुगतान को पुनः उपयोग करता है, इतना छोटा कि दुरुपयोग सीमित हो।

चरण 4 में 4

तैनात करें और सत्यापित करें।

सर्वर को शिप करें। मुफ्त उपकरणों को अभी भी तुरंत अपना परिणाम लौटाना चाहिए; गेटेड उपकरणों को एक नए ग्राहक से पहले कॉल पर 402 शरीर लौटाना चाहिए, फिर उस कॉलर को भुगतान किया गया चिह्नित करने के बाद चलाना चाहिए। लाइव जाने से पहले Base Sepolia के खिलाफ sk_test_ कुंजी पर दोनों पथों की पुष्टि करें।

पहले दिन देखने के लिए दो संकेत: लौटाए गए 402s की संख्या (आपका शीर्ष-फनल) और 402 के बाद सफल उपकरण चलाने की संख्या (आपका रूपांतरण)। यदि रूपांतरण अपेक्षा से बहुत कम है, तो कीमत शायद गलत है। अपने भुगतान-राज्य स्टोर की हिट दर पर भी नज़र रखें - यदि यह शून्य के करीब है, तो आपकी पहुँच विंडो बहुत छोटी है और भुगतान करने वाले कॉलर्स से फिर से भुगतान करने के लिए कहा जा रहा है।

सामान्य pitfalls

पांच चीजें जो पहली बार MCP मुद्रीकरण करने वालों को नुकसान पहुँचाती हैं।

गलती से मुफ्त उपकरणों को गेट करना

हर टूल को 'बस मामले में' गेट करना लुभावना है। ऐसा न करें। भुगतान किए गए MCP सर्वरों का पूरा मूल्य यह है कि मुफ्त टूल भुगतान किए गए टूल के साथ एक ही सर्वर पर सह-अस्तित्व में हैं, इसलिए क्लाइंट बिना भुगतान किए मुफ्त खोज और मेटाडेटा टूल का उपयोग कर सकता है। केवल उन टूल के लिए 402 बनाएं जो वास्तव में प्रीमियम संसाधनों का उपभोग करते हैं; बाकी को सामान्य परिणाम के रूप में छोड़ दें।

requirePayment एक बिल्डर है, मिडलवेयर नहीं।

requirePayment एक शुद्ध फ़ंक्शन है: आप इसे तब कॉल करते हैं जब एक उपकरण अनुपयुक्त हो, यह { status: 402, body } लौटाता है, और आप शरीर को वापस देते हैं। यह आपके हैंडलर को लपेटता नहीं है और यह नहीं ट्रैक करता कि किसने भुगतान किया। यह amountUsdc, payTo, hostedUrl, और एक वैकल्पिक नेटवर्क और विवरण लेता है - और कुछ नहीं। यह कि क्या एक कॉल करने वाले ने भुगतान किया है, यह एक जांच है जो आप अपनी दुकान के खिलाफ चलाते हैं।

कोई भेजा गया रसीद कैश नहीं है

Blockchain0x 402 बिल्डर और निपटान वेबहुक भेजता है, कोई रसीद-स्टोर सहायक नहीं। आप तय करते हैं कि 'इस कॉलर ने भुगतान किया' कहाँ रहता है - एक डेटाबेस पंक्ति, एक Redis कुंजी, एक एकल प्रक्रिया के लिए एक इन-मेमोरी मैप - और आप इसे तब पलटते हैं जब payment.received वेबहुक आता है। यह नीति (एक भुगतान कितनी देर तक पहुंच प्रदान करता है) को पूरी तरह से आपके हाथ में रखता है।

एक रसीद पर भरोसा करना जो क्लाइंट का दावा है कि उसके पास है

कॉलर को यह दावा करने की अनुमति न दें कि उसने भुगतान किया। सत्य का स्रोत payment.received वेबहुक है, जिसे आपके वेबहुक रहस्य के खिलाफ webhooks.verify (या प्रलेखित HMAC) के साथ सत्यापित किया गया है। केवल एक सत्यापित घटना के बाद भुगतानकर्ता को भुगतान किया गया चिह्नित करें, और उस सर्वर-साइड स्थिति पर उपकरण को गेट करें - कभी भी उस पर नहीं जो क्लाइंट भेजता है।

भुगतान किए गए टूल की विलंबता पर कोई मैट्रिक्स नहीं

क्लाइंट और टूल निष्पादन के बीच एक भुगतान चरण डालने से पहले कॉल पर भुगतान करने और निपटाने में कॉलर का समय जोड़ता है, फिर एक बार जब आपने उन्हें भुगतान किया है तो लगभग शून्य। दोनों शाखाओं को उपकरण करें ताकि आप ग्राहक की शिकायत करते समय 'टूल धीमा है' को 'भुगतान धीमा है' से बता सकें। बिना मीट्रिक के आप बाधा का गलत निदान करेंगे।

अगले कदम

एक बार जब भुगतान किया गया ट्रैफ़िक बहने लगे।

मुद्रीकरण स्थापित होने के साथ, सबसे उपयोगी फॉलो-अप विश्वसनीय वेबहुक हैंडलिंग हैं (ताकि आप भुगतान घटनाओं को न चूकें), खर्च नियंत्रण (ताकि आप जो MCP सर्वर बनाते हैं जो अन्य एजेंटों को भी भुगतान करता है, वह सीमित रहे), और एक टेस्टनेट-प्रथम प्रवाह (ताकि आप वास्तविक धन जलाए बिना मूल्य परिवर्तन भेज सकें)।

पूर्ण API संदर्भ docs.blockchain0x.com पर है। संबंधित उत्पाद सतह: MCP एकीकरण

अंतिम समीक्षा: 2026-05-15। CC BY 4.0 के तहत प्रकाशित।

प्रत्येक उपकरण कॉल के लिए शुल्क लें।

402 लौटाएँ, अपनी कीमत सेट करें, USDC स्वीकार करें। शुरू करने के लिए मुफ्त।