10 মিনিটে আপনার MCP সার্ভারকে মুনাফা করুন।
ইনস্টল করুন @blockchain0x/mcp, এবং একটি প্রিমিয়াম টুলের মধ্যে requirePayment কল করুন যখন কলকারী পেমেন্ট করেনি - এটি একটি হোস্টেড চেকআউট URL সহ একটি x402 402 চ্যালেঞ্জ তৈরি করে, যা আপনি ফেরত দেন। একবার পেমেন্ট.received ওয়েবহুক নিষ্পত্তি নিশ্চিত করলে, আপনি আপনার নিজস্ব স্টোরে কলকারীকে পেইড চিহ্নিত করেন এবং টুলটি চলে। ফ্রি টুলগুলি ফ্রি থাকে। একটি সাধারণ HTTP সার্ভারের জন্য, রিসিভ-সাইড x402 অ্যাডাপ্টার একই কাজ করে।
আপনি শুরু করার আগে।
- একটি কার্যকর MCP সার্ভার যা অফিসিয়াল Model Context Protocol SDK Node বা Python এ ব্যবহার করে। যদি আপনার এখনও একটি না থাকে, তবে প্রথমে উপরের টেম্পলেটের সাথে একটি স্ক্যাফোল্ড করুন।
- একটি Blockchain0x অ্যাকাউন্ট এবং একটি এজেন্ট প্রোফাইল (৫ মিনিটের সেটআপের জন্য 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 কী, একটি একক প্রক্রিয়ার জন্য একটি ইন-মেমরি মানচিত্র - এবং আপনি এটি পরিবর্তন করেন যখন payment.received ওয়েবহুক আসে। এটি নীতিটি (একটি পেমেন্ট কতক্ষণ অ্যাক্সেস দেয়) সম্পূর্ণরূপে আপনার হাতে রাখে।
গ্রাহক যে রসিদটি থাকার দাবি করে তাতে বিশ্বাস করা
কলকারীকে এটি পেমেন্ট করেছে বলে দাবি করতে দেবেন না। সত্যের উৎস হল payment.received ওয়েবহুক, যা আপনার ওয়েবহুক গোপনীয়তার বিরুদ্ধে webhooks.verify (অথবা নথিভুক্ত HMAC) দিয়ে যাচাই করা হয়। একটি যাচাইকৃত ইভেন্টের পরে শুধুমাত্র পেমেন্টকারীকে পেমেন্ট হিসাবে চিহ্নিত করুন, এবং সেই সার্ভার-সাইড অবস্থায় টুলটি গেট করুন - কখনও ক্লায়েন্ট দ্বারা পাঠানো কিছুতে নয়।
পেইড-টুল লেটেন্সিতে কোন মেট্রিক নেই
ক্লায়েন্ট এবং টুলের কার্যকরীর মধ্যে একটি অর্থপ্রদান পদক্ষেপ রাখা প্রথম কলের জন্য অর্থপ্রদান করতে এবং সেটেল করতে কলারের সময় যোগ করে, তারপর আপনি যখন তাদের অর্থপ্রদান চিহ্নিত করেছেন তখন প্রায় শূন্য। উভয় শাখাকে যন্ত্রপাতি করুন যাতে আপনি যখন একজন গ্রাহক অভিযোগ করেন তখন 'টুল ধীর' এবং 'অর্থপ্রদান ধীর' বলতে পারেন। মেট্রিক ছাড়া আপনি বোতল নেকের ভুল নির্ণয় করবেন।
একবার পেইড ট্রাফিক প্রবাহিত হলে।
মুনাফা স্থাপিত হলে, সবচেয়ে কার্যকরী ফলো-আপগুলি হল নির্ভরযোগ্য ওয়েবহুক পরিচালনা (যাতে আপনি পেমেন্ট ইভেন্টগুলি মিস না করেন), ব্যয় নিয়ন্ত্রণ (যাতে আপনি যে MCP সার্ভারটি তৈরি করেন তা অন্যান্য এজেন্টদেরও অর্থ প্রদান করে সীমাবদ্ধ থাকে), এবং একটি টেস্টনেট-প্রথম প্রবাহ (যাতে আপনি বাস্তব অর্থ পোড়ানো ছাড়াই মূল্য পরিবর্তন পাঠাতে পারেন)।
ওয়েবহুক প্যাটার্নগুলি যা ডেভেলপাররা সবচেয়ে বেশি জিজ্ঞাসা করে
এজেন্ট খরচ নিয়ন্ত্রণ সেট আপ করুন যা প্রম্পট ইনজেকশন সহ্য করে
বাস্তব অর্থ ছাড়া এজেন্ট পেমেন্ট পরীক্ষা করুন
পূর্ণ API রেফারেন্স docs.blockchain0x.com এ। সম্পর্কিত পণ্য পৃষ্ঠ: MCP integration.