Passer au contenu principal
PERSONA 2 - OPÉRATEURS DE SERVEURS MCP

Monétisez votre serveur MCP en 10 minutes.

Laissez les agents IA payer votre serveur MCP par appel, en USDC, avec des webhooks signés et des journaux d'audit. Compatible x402. Middleware à insérer.

LA DOULEUR

Vous avez construit un serveur MCP. Des milliers de clients l'utilisent gratuitement.

Vous avez expédié votre serveur MCP parce que les clients Claude Desktop, Cursor et Cline avaient besoin de cette capacité. La nouvelle s'est répandue. Vous servez maintenant des milliers d'invocations d'outils payants par jour provenant d'agents IA que vous n'avez jamais rencontrés. Votre facture de sortie est réelle. Votre clé API pour le service sous-jacent est réelle. Votre temps de maintenance est réel. Les revenus sont nuls.

Vous avez trois options. Gardez-le gratuit et brûlez de l'argent sur l'infrastructure. Mettez-le derrière des clés API manuelles (et perdez 95 % du trafic des agents à cause de la friction des formulaires d'inscription). Ou ajoutez une couche de paiement que les agents IA peuvent réellement compléter - ce pour quoi 402 Payment Required + USDC est construit.

Blockchain0x est l'option trois. Votre serveur MCP pointe vers notre API. Lorsque un client AI appelle un outil payant, la réponse est 402 avec une URL de paiement hébergée. Le client (ou son superviseur humain) paie en USDC. Votre webhook se déclenche. Le prochain appel de ce client réussit. La forme entière s'appelle x402, et c'est le protocole que Coinbase a publié pour ce modèle exact.

MODÈLE X402

Comment 402 Payment Required devient un paiement programmatique.

Le code d'état HTTP 402 existe depuis que la spécification a été écrite pour la première fois mais n'a jamais eu d'implémentation standard. Le protocole x402 de Coinbase lui en donne enfin une. La forme est simple : votre outil retourne un défi 402 (un corps JSON structuré décrivant comment payer) ; le client paie et réessaie ; l'appel réussit. requirePayment de @blockchain0x/mcp construit ce corps de défi pour vous.

LE CORPS DU DÉFI 402 requirePayment CONSTRUIT, RETOURNÉ EN TANT QU'ERREUR D'OUTIL
{
  "error": "payment_required",
  "amountUsdc": "0.02",
  "payTo": "0xYourMcpAgentAddress",
  "hostedUrl": "https://pay.blockchain0x.com/checkout/docs-search",
  "network": "mainnet",
  "description": "docs search"
}

Les quatre états

  1. Appel impayé : Le client AI invoque un outil payant. Votre gestionnaire vérifie votre propre état de paiement, constate que le payeur n'est pas marqué comme payé et renvoie le corps du défi 402 de requirePayment comme une erreur d'outil.
  2. Paiement : Le client suit l'URL hébergée vers le paiement hébergé et complète le transfert USDC sur Base (soit de manière programmatique via un portefeuille compatible x402, soit manuellement via un code QR).
  3. Webhook : Blockchain0x déclenche payment.received à votre point de terminaison dans les secondes suivant la confirmation de la chaîne. Vous le vérifiez avec webhooks.verify et enregistrez le payeur comme payé dans votre propre magasin.
  4. Réessayer : Le client réessaie l'appel de l'outil MCP d'origine. Votre gestionnaire voit maintenant le payeur marqué comme payé, exécute l'outil et renvoie le résultat réel.

Chaque paiement est enregistré dans votre tableau de bord Blockchain0x, et chaque webhook payment.received atterrit dans vos propres journaux. Parce que vous possédez l'état de paiement et le gestionnaire de webhook, les analyses de revenus par outil et par payeur découlent des données que vous stockez déjà.

CONFIGURATION DU MIDDLEWARE

Un exemple de travail complet.

requirePayment de @blockchain0x/mcp construit le défi 402 ; webhooks.verify de @blockchain0x/node vérifie la confirmation. Vous possédez les deux petites pièces entre les deux : la vérification de l'état de paiement à l'intérieur de l'outil, et le gestionnaire de webhook qui marque un payeur comme payé. Ci-dessous se trouve un serveur MCP complet qui expose un outil payant ainsi que son point de terminaison webhook.

INDEX.TS - SERVEUR MCP AVEC UN OUTIL PAYANT ET SON WEBHOOK
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 });
});

Étapes de configuration

  1. 1Créer un portefeuille d'agent Blockchain0x pour votre serveur MCP, sur un plan qui inclut l'accès à l'API et aux webhooks. Notez l'adresse du portefeuille que vous utiliserez comme payTo.
  2. 2Installer les packages : npm install @blockchain0x/mcp @blockchain0x/node
  3. 3Définir les variables d'environnement : BLOCKCHAIN0X_API_KEY (le serveur MCP l'envoie en tant qu'Authorization: Bearer) et BLOCKCHAIN0X_WEBHOOK_SECRET (le secret de signature du tableau de bord que webhooks.verify vérifie).
  4. 4Restreindre vos outils payants en vérifiant votre propre état de paiement et en renvoyant le corps du défi requirePayment lorsque l'appelant n'a pas payé. Laissez les outils gratuits non restreints.
  5. 5Configurer le point de terminaison du webhook dans le tableau de bord Blockchain0x (par exemple /webhooks/blockchain0x), puis vérifiez chaque livraison avec webhooks.verify et marquez le payeur comme payé sur payment.received.
  6. 6Déployer. Le premier client IA qui utilise votre outil payant reçoit un 402, paie, et l'appel suivant réussit. Vous voyez le paiement dans le tableau de bord dans les 10 secondes.

Vous pouvez également exécuter le serveur MCP Blockchain0x lui-même avec npx @blockchain0x/mcp (stdio) ou le conteneur HTTP Streamable hébergé à mcp.blockchain0x.com. La configuration complète, y compris les formes de charge utile du webhook, se trouve dans la documentation.

VOTRE FENÊTRE PAYÉE

La décision la plus importante dans votre gestionnaire.

Parce que vous possédez l'état de paiement, vous décidez également combien de temps un paiement compte. Après qu'un client a payé pour un outil, gardez-le marqué comme payé pendant une certaine fenêtre de temps, et à l'intérieur de cette fenêtre, laissez passer les appels sans un nouveau paiement. Fixez la fenêtre trop courte et vous punissez les clients avec des frictions de paiement à chaque appel ; fixez-la trop longue et vous donnez des opérations coûteuses après un paiement bon marché. Un TTL sur votre clé Redis/Postgres est le moyen le plus simple de l'implémenter.

Les fenêtres que nous recommandons

Type d'outilFenêtrePourquoi
Recherche bon marché (0,01 $ - 0,05 $)60 secondesAbsorbe les réessais naturels et les appels de suivi sans donner une session.
Inférence à prix moyen (0,10 $ - 1 $)30 secondesLe paiement par appel est la bonne forme ; le cache temporaire gère la nouvelle tentative en cas d'erreurs transitoires.
Contexte long coûteux (1 $ - 10 $)0 secondes (pas de cache)Chaque appel est son propre événement payant ; pas de mise en cache.
Outils de type abonnement24 heuresPayez une fois par jour pour des appels illimités dans la fenêtre. Revenus plus élevés par client avec moins de friction.

Clé de votre état payé par paire (portefeuille payeur, outil), de la manière dont l'exemple le fait avec search_docs:0xPayer. Deux clients différents utilisent le même outil, chacun paie séparément. Le même client utilise deux outils différents, deux paiements séparés requis. Vous pouvez l'étendre plus largement (par payeur sur tous les outils) si vous le souhaitez ; la granularité par payeur par outil est ce qui rend la tarification équitable.

MODÈLES DE TARIFICATION

Quatre structures tarifaires qui fonctionnent pour les serveurs MCP.

La tarification est votre choix - vous définissez le montant par outil dans le middleware. Voici les quatre modèles que nous voyons le plus souvent et les formes d'outils auxquels ils correspondent.

Tarification micro par appel

$0.01 - $0.05 par appel

Recherche, consultation, classification, conversion de format - opérations peu coûteuses avec un volume élevé.

AVANTAGES

Moins de friction pour les clients ; aligne le coût avec l'utilisation exactement.

INCONVÉNIENTS

Frais de transaction les plus élevés ; ne fonctionne qu'à un volume d'appels élevé.

Tarification intermédiaire par appel

$0.10 - $1.00 par appel

Inférence LLM, génération, production de contenu, tout ce où chaque appel fait un vrai travail.

AVANTAGES

Équilibré - valeur claire par appel, nombre de transactions gérable.

INCONVÉNIENTS

Friction plus élevée par appel ; les clients préfèrent parfois les abonnements à ce niveau de prix.

Tarification élevée par appel

$1 - $10 par appel

Génération de long contexte, traitement de documents, orchestration multi-étapes, enveloppement d'API tierces coûteuses.

AVANTAGES

La marge par appel est significative ; les paiements échoués sont des pertes tolérables.

INCONVÉNIENTS

Les clients négocient fermement à ce prix ; attendez-vous à des demandes de remboursement.

Fenêtre d'abonnement

$5 - $50 par fenêtre de 24h (ou $X par mois)

Clients qui effectuent de nombreux appels dans une session et ne toléreraient pas de friction de paiement par appel.

AVANTAGES

Revenu plus élevé par client ; moins de frais par appel.

INCONVÉNIENTS

Découverte réduite ; les clients doivent s'engager à l'avance. Souvent combiné avec un tarif par appel pour une tarification hybride.

De nombreux opérateurs mélangent les modèles : des outils bon marché à une tarification micro par appel, des outils coûteux à une tarification élevée par appel, plus une fenêtre d'abonnement de 24 heures pour les utilisateurs intensifs. Rien ne vous empêche de faire fonctionner les trois sur le même serveur MCP ; chaque outil définit son propre amountUsdc dans requirePayment et sa propre fenêtre payée dans votre gestionnaire.

QUEL PLAN CONVIENT

Pro est le bon plan pour presque tous les serveurs MCP.

Les opérateurs de serveur MCP commencent presque toujours par Pro car l'accès en écriture à l'API et les webhooks sont requis dès le premier jour : le plan gratuit est en lecture seule, et un outil payant doit recevoir des webhooks payment.received et les vérifier. Consultez la page de tarification pour le coût exact par agent et où se situent les niveaux de frais de transaction ; la version courte est que tout serveur traitant un volume réel de paiements est bien au-delà du point où Pro se rembourse.

  • Free : utile pour expérimenter avec l'API et le dashboard. Pas viable pour des outils payants en production (lecture seule, pas de webhooks).
  • Pro: la formule par défaut pour les serveurs MCP en production. Accès API complet, webhooks, exports.
  • Business : lorsque vous avez besoin du journal d'audit pour la conformité, ou lorsque vous exécutez des serveurs MCP pour plusieurs clients et souhaitez un partage des sièges d'équipe par agent.
Voir les tarifs complets
QUESTIONS FRÉQUEMMENT POSÉES

Cinq questions spécifiques à MCP.

Mon serveur MCP doit-il être hébergé sur Blockchain0x ? Ou fonctionner sur un cloud spécifique ?

Non. Votre serveur MCP peut fonctionner n'importe où où il fonctionnerait normalement : votre ordinateur portable, AWS, Fly.io, Cloudflare Workers, un Raspberry Pi. Le middleware est juste un module Node qui enveloppe vos gestionnaires d'outil. Tant que votre serveur peut effectuer des appels HTTPS sortants vers api.blockchain0x.com et recevoir des webhooks entrants à une URL que vous contrôlez, l'intégration fonctionne. Nous n'hébergeons pas votre serveur MCP ; nous hébergeons la surface de paiement.

Que se passe-t-il lorsqu'un client IA ne comprend pas x402 et reçoit simplement une réponse 402 ?

Le corps du défi est structuré de sorte qu'un client non conscient de x402 voit une erreur significative : un code d'erreur, le amountUsdc, et une hostedUrl pour payer. Les clients qui affichent des erreurs d'outil à l'utilisateur (la plupart des clients basés sur le chat comme Claude Desktop ou Cursor) montreront à l'utilisateur l'URL à cliquer et à payer ; les clients qui gèrent l'appel entièrement de manière programmatique et ignorent l'erreur ne recevront tout simplement pas de résultat, ce qui est le bon résultat (l'appel n'a pas été payé). Les clients conscients de x402 lisent le défi, paient automatiquement en utilisant un portefeuille préautorisé, et réessaient.

Combien de temps la fenêtre payante dure-t-elle ? Un client peut-il payer une fois et appeler indéfiniment ?

C'est entièrement votre décision, car vous possédez l'état payé. Un choix courant est un TTL de 60 secondes sur la clé payée : il absorbe les modèles de réessai et de suivi naturels sans laisser un seul paiement couvrir toute une session. Vous pouvez le rendre plus long pour un tarif de type abonnement, ou zéro (chaque appel nécessite un paiement frais) pour des outils coûteux par appel. La bibliothèque n'impose pas de fenêtre ; votre magasin et son TTL le font.

Puis-je exécuter des outils payants et des outils gratuits sur le même serveur MCP ?

Oui. Ajoutez la vérification de l'état payé (et le défi requirePayment en cas d'échec) uniquement aux outils payants ; laissez les outils gratuits comme des gestionnaires simples. Les outils gratuits fonctionnent pour tout client ; les outils payants renvoient le défi 402 jusqu'à ce qu'ils soient payés. De nombreux opérateurs commencent par rendre les outils bon marché gratuits (pour stimuler l'adoption) et réservent le paiement pour les outils à forte valeur (inférence, génération, travail à long contexte).

Comment voir quels clients ont payé et combien ils ont dépensé?

Chaque paiement est enregistré dans votre tableau de bord Blockchain0x avec l'adresse du portefeuille du payeur, l'horodatage et le montant, et les mêmes données arrivent sur votre webhook payment.received afin que vous puissiez les stocker comme bon vous semble. Parce que vous contrôlez le gestionnaire, vous pouvez également enregistrer les choses que la bibliothèque ne voit jamais : quel outil a été appelé, chaque défi 402 que vous avez retourné, et chaque appel que vous avez servi à partir d'un paiement existant. Joignez-les aux paiements et vous avez des analyses de revenus par payeur et par outil.

Transformez votre serveur MCP en revenus.

Commencez avec Pro, exécutez npx @blockchain0x/mcp ou intégrez requirePayment dans vos propres outils. Dix minutes entre l'installation et le premier appel payant.