मुख्य सामग्री पर जाएं
MCP एकीकरण

MCP के माध्यम से Blockchain0x.

किसी भी MCP होस्ट - Claude Desktop, Cursor, VS Code - को एक कॉन्फ़िग ब्लॉक के साथ एजेंट वॉलेट टूल दें। और जब आप अपने उपकरणों के लिए शुल्क लेना चाहते हैं, तो वास्तविक requirePayment x402 बिल्डर का उपयोग करें।

संक्षिप्त उत्तर

@blockchain0x/mcp सर्वर एक MCP होस्ट को पांच एजेंट-वॉलेट उपकरण प्रदान करता है: एक वॉलेट पढ़ें, वॉलेट की सूची बनाएं, एक लेनदेन की जांच करें, एक USDC भुगतान भेजें, और एक x402 चालान का निपटारा करें। इसे npx @blockchain0x/mcp के साथ चलाएँ (आपकी कुंजी आपके मशीन पर रहती है) या होस्ट किए गए URL पर इंगित करें। अलग से, पैकेज requirePayment को निर्यात करता है ताकि आप अपने स्वयं के MCP उपकरणों पर x402 402 चुनौती के साथ एक मूल्य रख सकें।

दो कार्य, एक पैकेज

MCP के माध्यम से खर्च करें। MCP के माध्यम से चार्ज करें।

काम एक: एक एजेंट को अपने होस्ट के अंदर से एक वॉलेट का उपयोग करने दें। @blockchain0x/mcp सर्वर @blockchain0x/node SDK पर एक पतला, स्टेटलेस प्रॉक्सी है। यह Claude Desktop, Cursor, या VS Code को पांच वॉलेट टूल प्रदान करता है, और आपकी API कुंजी का दायरा, भत्ता, और प्रति-काल सीमा बैकएंड द्वारा ठीक उसी तरह लागू की जाती है जैसे किसी अन्य API कॉल के लिए। सर्वर कोई कुंजी नहीं रखता है और कुछ भी संग्रहीत नहीं करता है।

काम दो: एजेंटों से अपने उपकरणों को कॉल करने के लिए शुल्क लें। MCP ने टूल आह्वान को बिना किसी रुकावट के बना दिया, जो तब तक अच्छा है जब तक आपका सर्वर मुफ्त में बाहर निकलने, टोकन, और तीसरे पक्ष के API लागतों को खा रहा है। 402 भुगतान आवश्यक पैटर्न यहां ठीक बैठता है। requirePayment एक संरचित x402 चुनौती बनाता है जिसमें एक होस्टेड चेकआउट URL होता है; आप इसे तब लौटाते हैं जब एक टूल अनपेक्षित होता है और भुगतान निपटने के बाद कॉल को आगे बढ़ने देते हैं। जो क्लाइंट x402 बोलते हैं वे स्वचालित रूप से भुगतान करते हैं; बाकी URL को मानव के लिए सतह करते हैं।

SERVER चलाएँ

इसे चलाने के दो तरीके। होस्टेड के लिए कोई इंस्टॉल नहीं।

इसे स्थानीय रूप से stdio के माध्यम से npx के साथ चलाएँ (आपकी कुंजी आपके मशीन पर रहती है), या किसी भी MCP होस्ट को होस्ट किए गए स्ट्रीम करने योग्य HTTP URL पर इंगित करें और कुंजी को एक बियरर टोकन के रूप में पास करें। दोनों सीधे होस्ट के MCP कॉन्फ़िगरेशन में गिरते हैं। स्थानीय पथ के लिए Node 20+।

LOCAL - STDIO (npx)
{
  "mcpServers": {
    "blockchain0x": {
      "command": "npx",
      "args": ["-y", "@blockchain0x/mcp"],
      "env": {
        "BLOCKCHAIN0X_API_KEY": "sk_live_...",
        "BLOCKCHAIN0X_API_BASE_URL": "https://api.blockchain0x.com"
      }
    }
  }
}
HOSTED - STREAMABLE HTTP
{
  "mcpServers": {
    "blockchain0x": {
      "url": "https://mcp.blockchain0x.com/mcp",
      "headers": { "Authorization": "Bearer sk_live_..." }
    }
  }
}

BLOCKCHAIN0X_API_KEY आपके डैशबोर्ड से एक sk_test_ टेस्टनेट या sk_live_ मेननेट कुंजी है; BLOCKCHAIN0X_API_BASE_URL डिफ़ॉल्ट रूप से https://api.blockchain0x.com है। सर्वर आपकी कुंजी को बैकएंड पर अग्रेषित करता है और कुछ भी नहीं रखता है, इसलिए उस कुंजी पर दायरा और सीमाएँ ठीक वही हैं जो एजेंट कर सकता है। यह पांच उपकरण उजागर करता है: get_wallet, list_wallets, get_transaction, send_payment, और settle_payment_request।

अपने टूल की कीमत तय करें

वास्तविक requirePayment बिल्डर के साथ एक टूल गेट करें।

requirePayment @blockchain0x/mcp से एक शुद्ध फ़ंक्शन है। आप इसे तब कॉल करते हैं जब एक उपकरण अनुपयुक्त हो, यह एक x402 402 चुनौती (कीमत, आपका वॉलेट, एक होस्टेड चेकआउट URL) बनाता है, और आप उस शरीर को मानक MCP त्रुटि आकार में वापस देते हैं। यह आपके हैंडलर को लपेटता नहीं है और यह नहीं ट्रैक करता कि किसने भुगतान किया - वह भाग आपका है, जो सहायक को छोटा और ईमानदार रखता है।

SERVER.TS
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { requirePayment } from "@blockchain0x/mcp";
import { z } from "zod";

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

server.tool(
  "search_docs",
  "Semantic search across our private docs",
  { query: z.string() },
  async ({ query }, extra) => {
    if (!hasPaid(extra)) {
      // Mint an x402 402 challenge and hand it back to the caller.
      const { body } = requirePayment({
        amountUsdc: "0.10",
        payTo: "0xYourWallet",
        hostedUrl: "https://pay.blockchain0x.com/checkout/abc",
      });
      return { content: [{ type: "text", text: JSON.stringify(body) }], isError: true };
    }
    const results = await runVectorSearch(query);
    return { content: [{ type: "text", text: JSON.stringify(results) }] };
  },
);

जब एजेंट search_docs unpaid को कॉल करता है, तो उसे 402 बॉडी मिलती है। जो क्लाइंट x402 बोलते हैं वे स्वचालित रूप से इसका भुगतान करते हैं; Claude Desktop और Cursor मानव के लिए चेकआउट URL को प्रदर्शित करते हैं। एक बार भुगतान निपटने पर आप उस कॉलर को भुगतान किया हुआ चिह्नित करते हैं (अगला अनुभाग) और कॉल आगे बढ़ता है। क्या आप MCP सर्वर के बजाय एक सामान्य HTTP सर्वर पसंद करते हैं? रिसीव-साइड x402 एडेप्टर - Express के लिए createX402Middleware, Fastify के लिए createX402Plugin - ढांचे की परत पर वही गेटिंग करता है।

भुगतान की पुष्टि करें

जब वेबहुक लैंड करता है तो कॉलर को भुगतान किया गया मार्क करें।

जब एक भुगतान निपटता है, तो Blockchain0x आपके वेबहुक URL पर एक साइन किया हुआ payment.received इवेंट POST करता है। इसे Node SDK से webhooks.verify के साथ सत्यापित करें, फिर रिकॉर्ड करें कि कॉलर ने जिस भी स्टोर में आप पहले से चलाते हैं, उसमें भुगतान किया। कॉन्फ़िगर करने के लिए कोई भेजा गया रसीद कैश नहीं है - आप उस बिट के मालिक हैं, जिसका अर्थ है कोई आश्चर्यजनक बुनियादी ढांचा नहीं।

WEBHOOK.TS
import express from "express";
import { webhooks } from "@blockchain0x/node";

const app = express();
// Capture the RAW body. The HMAC is over the exact bytes on the wire.
app.use(express.raw({ type: "application/json" }));

app.post("/webhooks/payment", (req, res) => {
  const result = webhooks.verify({
    headers: req.headers,
    rawBody: req.body, // Buffer, raw bytes
    secret: process.env.BLOCKCHAIN0X_WEBHOOK_SECRET!,
  });
  if (!result.ok) return res.status(400).json({ code: result.code });

  if (result.eventType === "payment.received") {
    // Mark this payer paid however you like - a DB row, a Redis key, your call.
    markPaid(result.eventId);
  }
  res.status(200).send("ok");
});

webhooks.verify HMAC-SHA256 को स्थिर समय में करता है और एक भेदित संघ लौटाता है, इसलिए आप result.ok पर शाखा करते हैं बिना किसी प्रयास/पकड़ के। कच्चे शरीर को पढ़ें, न कि एक पार्स की गई प्रति, क्योंकि सिग्नेचर सटीक बाइट्स को कवर करता है। भेजे गए घटनाएँ हैं payment.received, payment.sent, wallet.deployed, और webhook.test; आपके वॉलेट के लिए एक भुगतान payment.received है। 'इस कॉलर ने भुगतान किया' को कहां बनाए रखें - एक डेटाबेस पंक्ति, एक Redis कुंजी, एक एकल प्रक्रिया के लिए एक इन-मेमोरी मैप - यह आपका निर्णय है।

सोर्स और डॉक्स

सर्वर खुला और राज्यहीन है। इसे पढ़ें।

MCP server और requirePayment builder Node SDK के ऊपर एक thin pass-through हैं, जिनमें कोई database और कोई volumes नहीं हैं, इसलिए audit करने के लिए बहुत कुछ नहीं है - और यही उद्देश्य है. Native MCP OAuth 2.1 एक planned follow-up है; pasted-key path पहले ship होता है क्योंकि यह मौजूदा API-key trust model का पुन: उपयोग करता है.

github.com/tosh-labs/blockchain0x-node

पूरी tool list, scopes, और hosted environment URLs the docs पर documented हैं. real key को point करने से पहले testing के लिए staging और dev hosted endpoints, production के साथ उपलब्ध हैं.

सामान्य pitfalls

पांच MCP-विशिष्ट जाल से बचें।

ये उन ऑपरेटरों से आते हैं जो उत्पादन में भुगतान किए गए MCP सर्वर चला रहे हैं। अधिकांश कैश आर्किटेक्चर और MCP प्रोटोकॉल के विशिष्ट त्रुटि प्रारूप से संबंधित हैं।

PITFALL 1

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

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

PITFALL 2

stdio आपकी कुंजी को आपकी मशीन पर रखता है।

npx और BLOCKCHAIN0X_API_KEY के साथ सर्वर चलाएँ और कुंजी कभी भी आपके बॉक्स से बाहर नहीं जाती - इसे स्थानीय रूप से पढ़ा जाता है, नेटवर्क हेडर के रूप में नहीं भेजा जाता है। होस्ट किया गया URL विपरीत व्यापार है: शून्य स्थापना, लेकिन आप कुंजी को mcp.blockchain0x.com पर एक बियरर टोकन के रूप में पेस्ट करते हैं। एक डेवलपर की अपनी मशीन के लिए stdio चुनें, साझा तैनाती के लिए होस्ट किया गया।

PITFALL 3

डैशबोर्ड-केवल सतहें उजागर नहीं हैं

सर्वर @blockchain0x/node पर एक पतला, राज्यहीन प्रॉक्सी है। यह ठीक पांच उपकरणों को सतह पर लाता है: get_wallet, list_wallets, get_transaction, send_payment, settle_payment_request। पहचान परिवर्तन, API-कुंजी और वेबहुक CRUD, निकासी, और बिलिंग API-कुंजी प्रमाणीकरण के तहत हार्ड-ब्लॉक होते हैं और सर्वर कभी भी SDK से आगे नहीं बढ़ता। उन उपकरणों की अपेक्षा न करें - वे डिज़ाइन द्वारा डैशबोर्ड में रहते हैं।

PITFALL 4

send_payment idempotent है और पुनः प्रयास नहीं करता है।

The send_payment tool wraps payments.create: it auto-mints an Idempotency-Key so a retried call collapses to one transfer, and it does not retry on its own. It can also answer 503 until the chain adapter is wired for your network. If the model gets a 503, do not let it hammer the tool - surface the state and move on. amountWei is USDC base units (6 decimals), so 0.01 USDC is the string "10000".

PITFALL 5

requirePayment पर amountUsdc एक 6-दशमलव स्ट्रिंग है

requirePayment validates amountUsdc as a USDC decimal with at most six fractional digits, so "0.10" is fine and "0.1234567" throws. payTo and hostedUrl are required; network defaults to mainnet. Keep the hostedUrl pointing at a real checkout you control (the pattern is https://pay.blockchain0x.com/checkout/<id>). A malformed amount fails fast rather than minting a broken challenge.

अक्सर पूछे जाने वाले

तीन MCP-विशिष्ट प्रश्न।

क्या यह Claude Desktop, Cursor, और VS Code के साथ बिना किसी बदलाव के काम करता है?

हाँ। वे मानक MCP होस्ट हैं। होस्ट के MCP कॉन्फ़िग में blockchain0x सर्वर जोड़ें - stdio ब्लॉक (npx + आपके कुंजी को env में) या होस्टेड ब्लॉक (mcp.blockchain0x.com URL + एक बियरर कुंजी) - और पांच वॉलेट टूल एजेंट के लिए दिखाई देते हैं। वहां से एजेंट एक वॉलेट पढ़ सकता है, एक लेनदेन की जांच कर सकता है, एक USDC भुगतान भेज सकता है, या एक x402 चालान को निपटा सकता है, सभी उस दायरे, भत्ते, और सीमाओं के भीतर जो आपकी API कुंजी पहले से लागू करती है।

एक बार सर्वर से जुड़े होने पर एजेंट वास्तव में क्या कर सकता है?

पांच चीजें, पांच उपकरणों से मेल खाती हैं: get_wallet और list_wallets वॉलेट मेटाडेटा पढ़ते हैं, get_transaction एक लेनदेन की स्थिति और हैश को पोल करता है, send_payment एक आउटबाउंड USDC भुगतान करता है, और settle_payment_request एक x402 चालान को ऑन-चेन प्रमाण के साथ निपटाता है। यही पूरा सतह है। सर्वर एक स्टेटलेस प्रॉक्सी है: यह कोई कुंजी नहीं रखता, कुछ भी स्टोर नहीं करता, और डैशबोर्ड-केवल संचालन तक नहीं पहुँच सकता, इसलिए एक एजेंट कुंजियों को घुमा नहीं सकता, पहचान नहीं बदल सकता, या इसके माध्यम से निकासी नहीं कर सकता।

मैं एजेंटों से अपने OWN MCP उपकरणों को कॉल करने के लिए कैसे शुल्क लूं?

वास्तविक requirePayment सहायक का उपयोग करें जो @blockchain0x/mcp द्वारा निर्यात किया गया है। जब कॉलर ने भुगतान नहीं किया हो, तो अपने उपकरण के अंदर requirePayment({ amountUsdc, payTo, hostedUrl }) को कॉल करें, और परिणामी 402 बॉडी लौटाएँ - यह @blockchain0x/x402 के साथ वायर-संगत है। आप यह ट्रैक करते हैं कि किसने भुगतान किया है (payment.received पर एक वेबहुक और आपकी अपनी स्टोर), और आप उन्हें कॉल करने देते हैं जब उन्होंने भुगतान किया हो। एक साधारण HTTP सर्वर के लिए न कि MCP एक के लिए, रिसीव-साइड x402 अडैप्टर (Express के लिए createX402Middleware, Fastify के लिए createX402Plugin) फ्रेमवर्क स्तर पर वही काम करता है।

अपने एजेंट को MCP के माध्यम से एक वॉलेट दें।

वॉलेट टूल को कनेक्ट करने के लिए एक कॉन्फ़िग ब्लॉक। जब आप अपने लिए शुल्क लेना चाहते हैं तो वास्तविक requirePayment बिल्डर। शुरू करने के लिए मुफ्त।