Монетизируйте свой сервер MCP за 10 минут.
Позвольте AI-агентам оплачивать ваш сервер MCP за вызов в USDC с подписанными вебхуками и журналами аудита. Совместимо с x402. Промежуточное ПО для внедрения.
Вы создали MCP-сервер. Тысячи клиентов используют его бесплатно.
Вы выпустили свой MCP-сервер, потому что клиентам Claude Desktop, Cursor и Cline нужна была эта возможность. Слухи распространились. Теперь вы обслуживаете тысячи вызовов платных инструментов в день от AI-агентов, которых вы никогда не встречали. Ваш счет за исходящий трафик реальный. Ваш API-ключ для основного сервиса реальный. Ваше время на обслуживание реальное. Доход ноль.
У вас есть три варианта. Оставить это бесплатным и тратить деньги на инфраструктуру. Закрыть его за ручными API-ключами (и потерять 95% трафика агентов из-за трения форм регистрации). Или добавить платежный слой, который AI-агенты могут действительно завершить - именно для этого и создан 402 Payment Required + USDC.
Blockchain0x - это третий вариант. Ваш сервер MCP указывает на наш API. Когда AI-клиент вызывает платный инструмент, ответ - 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-код).
- Вебхук: Blockchain0x отправляет payment.received на вашу конечную точку в течение нескольких секунд после подтверждения цепочки. Вы проверяете это с помощью webhooks.verify и записываете плательщика как оплаченного в своем собственном хранилище.
- Повторная попытка: Клиент повторяет исходный вызов инструмента MCP. Ваш обработчик теперь видит, что плательщик отмечен как оплаченный, выполняет инструмент и возвращает фактический результат.
Каждый платеж записывается в вашей панели управления Blockchain0x, и каждый webhook payment.received попадает в ваши собственные логи. Поскольку вы владеете состоянием оплаты и обработчиком webhook, аналитика доходов по инструментам и плательщикам вытекает из данных, которые вы уже храните.
Полный рабочий пример.
requirePayment от @blockchain0x/mcp создает вызов 402; webhooks.verify от @blockchain0x/node проверяет подтверждение. У вас есть два небольших элемента между ними: проверка состояния оплаты внутри инструмента и обработчик вебхуков, который помечает плательщика как оплаченного. Ниже представлен полный сервер MCP, который открывает один платный инструмент и его конечную точку вебхука.
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 и вебхукам. Запишите адрес кошелька, который вы будете использовать как payTo.
- 2Установите пакеты:
npm install @blockchain0x/mcp @blockchain0x/node - 3Задайте переменные окружения: BLOCKCHAIN0X_API_KEY (MCP server отправляет его как Authorization: Bearer) и BLOCKCHAIN0X_WEBHOOK_SECRET (секрет подписи из dashboard, который проверяет webhooks.verify).
- 4Ограничьте доступ к вашим платным инструментам, проверяя ваше собственное состояние оплаты и возвращая тело вызова requirePayment, когда вызывающий не оплатил. Оставьте бесплатные инструменты без ограничений.
- 5Настройте конечную точку вебхука в панели управления Blockchain0x (например, /webhooks/blockchain0x), затем проверяйте каждую доставку с помощью webhooks.verify и отмечайте плательщика как оплаченного на payment.received.
- 6Развернуть. Первый AI-клиент, который обращается к вашему платному инструменту, получает 402, платит, и следующий вызов проходит успешно. Вы увидите платеж на панели управления в течение 10 секунд.
Вы также можете запустить сервер Blockchain0x MCP с помощью npx @blockchain0x/mcp (stdio) или хостинг-контейнера Streamable HTTP на mcp.blockchain0x.com. Полная настройка, включая формы полезной нагрузки вебхука, находится в документации.
Единственное самое важное решение в вашем обработчике.
Поскольку вы владеете состоянием оплаты, вы также решаете, как долго платеж считается действительным. После того, как клиент оплачивает инструмент, оставьте его помеченным как оплаченный на некоторое время, и в течение этого времени позволяйте вызовам проходить без нового платежа. Установите окно слишком коротким, и вы наказываете клиентов трением при оплате за каждый вызов; установите его слишком длинным, и вы отдаете дорогие операции после одной дешевой оплаты. 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 и вебхуки требуются с первого дня: Free доступен только для чтения, а платный инструмент должен получать вебхуки payment.received и проверять их. См. страницу с ценами для точной стоимости на агента и для определения уровней транзакционных сборов; краткая версия такова, что любой сервер, обрабатывающий реальные платные объемы, уже давно перешел точку, где Pro окупает себя.
- Free: полезно для экспериментов с API и dashboard. Не подходит для production платных инструментов (только чтение, без webhooks).
- Pro: по умолчанию для рабочих MCP servers. Полный доступ к API, webhooks, экспортам.
- Business: когда вам нужен журнал аудита для compliance, или когда вы запускаете MCP-серверы для нескольких клиентов и хотите совместные командные места на уровне агента.