주 콘텐츠로 건너뛰기
페르소나 2 - MCP 서버 운영자

10분 안에 당신의 MCP 서버를 수익화하세요.

AI 에이전트가 귀하의 MCP 서버에 대해 호출당 USDC로 결제하도록 하세요. 서명된 웹후크와 감사 로그가 포함되어 있습니다. x402 호환. 드롭인 미들웨어.

고통

귀하는 MCP 서버를 구축했습니다. 수천 명의 클라이언트가 이를 무료로 사용하고 있습니다.

Claude Desktop, Cursor 및 Cline 클라이언트가 이 기능이 필요했기 때문에 MCP 서버를 배포했습니다. 소문이 퍼졌습니다. 이제 당신은 결제 도구 호출을 위해 하루에 수천 건의 AI 에이전트 요청을 처리하고 있습니다. 당신의 아웃바운드 청구서는 실제입니다. 기본 서비스에 대한 API 키도 실제입니다. 유지 관리 시간도 실제입니다. 수익은 제로입니다.

세 가지 옵션이 있습니다. 무료로 유지하고 인프라에 돈을 소모하세요. 수동 API 키 뒤에 가두세요(가입 양식의 마찰로 인해 에이전트 트래픽의 95%를 잃게 됩니다). 또는 AI 에이전트가 실제로 완료할 수 있는 결제 레이어를 추가하세요 - 이것이 바로 402 Payment Required + USDC가 구축된 목적입니다.

Blockchain0x는 옵션 세입니다. 귀하의 MCP 서버는 우리의 API를 가리킵니다. AI 클라이언트가 유료 도구를 호출할 때, 응답은 호스팅된 결제 URL과 함께 402입니다. 클라이언트(또는 그 인간 감독자)는 USDC로 결제합니다. 귀하의 웹후크가 작동합니다. 해당 클라이언트의 다음 호출이 성공합니다. 전체 형태는 x402라고 하며, Coinbase가 이 정확한 패턴을 위해 발표한 프로토콜입니다.

X402 패턴

402 Payment Required가 프로그래밍 가능한 체크아웃이 되는 방법.

HTTP 상태 코드 402는 사양이 처음 작성된 이후로 존재했지만 표준 구현이 없었습니다. Coinbase의 x402 프로토콜이 마침내 이를 제공합니다. 형식은 간단합니다: 도구가 402 챌린지(지불 방법을 설명하는 구조화된 JSON 본문)를 반환합니다; 클라이언트가 지불하고 재시도합니다; 호출이 성공합니다. @blockchain0x/mcp의 requirePayment가 그 챌린지 본문을 생성합니다.

도구 오류로 반환되는 402 챌린지 본문 requirePayment 빌드
{
  "error": "payment_required",
  "amountUsdc": "0.02",
  "payTo": "0xYourMcpAgentAddress",
  "hostedUrl": "https://pay.blockchain0x.com/checkout/docs-search",
  "network": "mainnet",
  "description": "docs search"
}

네 가지 상태

  1. 미지급 호출: AI 클라이언트가 유료 도구를 호출합니다. 핸들러는 자신의 유료 상태를 확인하고, 지불자가 지불 완료로 표시되지 않은 것을 발견하며, requirePayment에서 402 챌린지 본문을 도구 오류로 반환합니다.
  2. 결제: 클라이언트는 hostedUrl을 따라 호스팅된 체크아웃으로 이동하고 Base에서 USDC 전송을 완료합니다(프로그램적으로 x402 인식 지갑을 통해 또는 QR 코드를 통해 수동으로).
  3. 웹훅: Blockchain0x는 체인 확인 후 몇 초 이내에 payment.received를 귀하의 엔드포인트로 전송합니다. 귀하는 webhooks.verify로 이를 확인하고 지불자를 귀하의 저장소에 지불 완료로 기록합니다.
  4. 재시도: 클라이언트가 원래의 MCP 도구 호출을 재시도합니다. 이제 핸들러는 지불자가 지불 완료로 표시된 것을 보고 도구를 실행하고 실제 결과를 반환합니다.

모든 결제는 귀하의 Blockchain0x 대시보드에 기록되며, 모든 payment.received 웹후크는 귀하의 로그에 기록됩니다. 귀하가 유료 상태와 웹후크 핸들러를 소유하므로, 도구별 및 지불자별 수익 분석은 이미 저장된 데이터에서 발생합니다.

미들웨어 설정

완전한 작동 예제입니다.

requirePayment는 @blockchain0x/mcp에서 402 챌린지를 생성합니다; webhooks.verify는 @blockchain0x/node에서 확인을 검증합니다. 귀하는 그 사이의 두 작은 부분을 소유합니다: 도구 내의 유료 상태 확인과 지불자를 유료로 표시하는 웹훅 핸들러입니다. 아래는 하나의 유료 도구와 그 웹훅 엔드포인트를 노출하는 완전한 MCP 서버입니다.

INDEX.TS - 하나의 유료 도구와 그 웹후크가 있는 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. 1Blockchain0x 에이전트 지갑을 생성하세요 MCP 서버를 위해, API 및 웹훅 접근이 포함된 요금제에서. payTo로 사용할 지갑 주소를 기록하세요.
  2. 2패키지를 설치하세요: npm install @blockchain0x/mcp @blockchain0x/node
  3. 3환경 변수를 설정하세요: BLOCKCHAIN0X_API_KEY (MCP 서버가 Authorization: Bearer로 전송)와 BLOCKCHAIN0X_WEBHOOK_SECRET (dashboard의 서명 비밀키로, webhooks.verify가 이를 검증합니다).
  4. 4유료 도구를 보호하세요 자신의 유료 상태를 확인하고 호출자가 지불하지 않았을 때 requirePayment 챌린지 본문을 반환하세요. 무료 도구는 보호하지 마세요.
  5. 5웹훅 엔드포인트를 구성하세요 Blockchain0x 대시보드에서 (예: /webhooks/blockchain0x), 그런 다음 webhooks.verify로 모든 배달을 확인하고 payment.received에서 지불자를 지불 완료로 표시하세요.
  6. 6배포하기. 유료 도구에 처음으로 접근한 AI 클라이언트는 402를 받고, 결제를 한 후 다음 호출이 성공합니다. 10초 이내에 대시보드에서 결제를 확인할 수 있습니다.

귀하는 npx @blockchain0x/mcp (stdio) 또는 mcp.blockchain0x.com의 호스팅된 스트리밍 HTTP 컨테이너를 사용하여 Blockchain0x MCP 서버를 직접 실행할 수 있습니다. 웹훅 페이로드 형식을 포함한 전체 설정은 문서에 있습니다.

귀하의 결제 창

핸들러에서 가장 중요한 결정입니다.

유료 상태를 소유하고 있기 때문에 결제가 얼마나 오래 유효한지를 결정할 수 있습니다. 클라이언트가 도구에 대한 결제를 한 후, 일정 시간 동안 결제된 상태로 유지하고, 그 시간 안에서는 새 결제 없이 호출을 허용하십시오. 시간을 너무 짧게 설정하면 모든 호출에서 결제 마찰로 클라이언트를 처벌하게 되고; 너무 길게 설정하면 하나의 저렴한 결제 후 비싼 작업을 무료로 제공하게 됩니다. Redis/Postgres 키에 TTL을 설정하는 것이 이를 구현하는 가장 간단한 방법입니다.

우리가 추천하는 창

도구 유형이유
저렴한 조회($0.01-$0.05)60초세션을 제공하지 않고 자연스러운 재시도 및 후속 호출을 흡수합니다.
중간 가격의 추론 ($0.10-$1)30초호출당 요금이 적절하며, 짧은 캐시는 일시적인 오류에 대한 재시도를 처리합니다.
비싼 긴 컨텍스트 ($1-$10)0초 (캐시 없음)각 호출은 자체 유료 이벤트입니다; 캐싱이 없습니다.
구독형 도구24시간하루에 한 번 결제하여 창 내에서 무제한 호출이 가능합니다. 낮은 마찰로 더 높은 수익을 얻을 수 있습니다.

지불 상태를 (지불자 지갑, 도구) 쌍별로 키하세요. 예제에서 search_docs:0xPayer와 같은 방식으로. 두 개의 다른 클라이언트가 동일한 도구를 사용하면 각각 별도로 결제합니다. 동일한 클라이언트가 두 개의 다른 도구를 사용하면 두 개의 별도 결제가 필요합니다. 원하신다면 더 넓게 범위를 설정할 수 있습니다 (모든 도구에 대해 지불자별로); 지불자별 도구별 세분화가 가격 책정이 공정하게 느껴지도록 합니다.

가격 책정 패턴

MCP 서버에 적합한 네 가지 가격 형태.

가격 책정은 귀하의 선택입니다 - 미들웨어에서 도구별 금액을 설정합니다. 아래는 우리가 가장 자주 보는 네 가지 패턴과 그에 맞는 도구 형태입니다.

호출당 마이크로 가격 책정

$0.01 - $0.05 per 호출

검색, 조회, 분류, 형식 변환 - 대량으로 저렴한 작업.

장점

고객에게 가장 낮은 마찰; 비용이 사용량과 정확히 일치합니다.

단점

가장 높은 거래 오버헤드; 높은 호출량에서만 작동합니다.

호출당 중간 가격 책정

$0.10 - $1.00 per 호출

LLM 추론, 생성, 콘텐츠 제작, 각 호출이 실제 작업을 수행하는 모든 것.

장점

균형 잡힌 - 호출당 명확한 가치, 관리 가능한 거래 수.

단점

호출당 마찰이 더 높습니다; 고객들은 때때로 이 가격대에서 구독을 선호합니다.

호출당 고가 책정

$1 - $10 per 호출

긴 컨텍스트 생성, 문서 처리, 다단계 오케스트레이션, 비싼 제3자 API 래핑.

장점

호출당 마진은 의미가 있으며, 실패한 결제는 허용 가능한 손실입니다.

단점

고객들은 이 가격에서 강하게 협상하며, 환불 요청이 있을 것으로 예상됩니다.

구독 창

$5 - $50 per 24시간 (또는 $X per 월)

세션에서 많은 호출을 하는 고객들은 호출당 결제 마찰을 참지 않을 것입니다.

장점

고객당 더 높은 수익; 호출당 오버헤드가 적습니다.

단점

발견 가능성이 낮음; 고객은 사전 약정을 해야 합니다. 하이브리드 가격 책정을 위해 호출당 요금과 결합되는 경우가 많습니다.

많은 운영자들이 패턴을 혼합합니다: 호출당 마이크로 가격의 저렴한 도구, 호출당 높은 가격의 비싼 도구, 그리고 중량 사용자를 위한 24시간 구독 창. 동일한 MCP 서버에서 세 가지 모두를 실행하는 것을 막는 것은 없습니다; 각 도구는 requirePayment에서 자체 amountUsdc를 설정하고 핸들러에서 자체 유료 창을 설정합니다.

어떤 계획이 적합한가

프로는 거의 모든 MCP 서버에 적합한 플랜입니다.

MCP 서버 운영자는 거의 항상 Pro에서 시작합니다. API 쓰기 액세스와 웹훅이 첫날부터 필요하기 때문입니다: 무료는 읽기 전용이며, 유료 도구는 payment.received 웹훅을 수신하고 이를 검증해야 합니다. 정확한 에이전트당 비용과 거래 수수료 계층이 어디에 있는지 가격 페이지를 참조하세요; 짧은 버전은 실제 유료 볼륨을 처리하는 모든 서버는 Pro가 스스로 비용을 충당하는 지점을 훨씬 넘어선다는 것입니다.

  • Free: API와 대시보드를 실험하는 데 유용합니다. 프로덕션 유료 도구에는 적합하지 않습니다 (읽기 전용, webhooks 없음).
  • Pro: 운영 중인 MCP 서버의 기본 선택. 전체 API 접근, webhooks, 내보내기 제공.
  • Business: compliance를 위한 감사 로그가 필요하거나, 여러 클라이언트를 위한 MCP 서버를 운영하며 agent별 팀 좌석 공유가 필요할 때.
전체 가격 보기
자주 묻는 질문

MCP에 특화된 다섯 가지 질문.

내 MCP 서버는 Blockchain0x에 호스팅되어야 합니까? 아니면 특정 클라우드에서 실행해야 합니까?

아니요. 귀하의 MCP 서버는 일반적으로 실행되는 모든 곳에서 실행될 수 있습니다: 귀하의 노트북, AWS, Fly.io, Cloudflare Workers, Raspberry Pi. 미들웨어는 귀하의 도구 핸들러를 감싸는 Node 모듈일 뿐입니다. 귀하의 서버가 api.blockchain0x.com에 아웃바운드 HTTPS 호출을 할 수 있고 귀하가 제어하는 URL에서 인바운드 웹훅을 받을 수 있는 한, 통합이 작동합니다. 우리는 귀하의 MCP 서버를 호스팅하지 않으며, 결제 표면을 호스팅합니다.

AI 클라이언트가 x402를 이해하지 못하고 단순히 402 응답을 받으면 어떻게 되나요?

챌린지 본문은 비-x402 인식 클라이언트가 의미 있는 오류를 볼 수 있도록 구조화되어 있습니다: 오류 코드, amountUsdc 및 지불할 호스팅 URL. 사용자에게 도구 오류를 표시하는 클라이언트(Claude Desktop이나 Cursor와 같은 대부분의 채팅 기반 클라이언트)는 사용자에게 클릭하고 지불할 URL을 보여줄 것입니다; 호출을 완전히 프로그래밍적으로 처리하고 오류를 무시하는 클라이언트는 결과를 얻지 못할 것입니다. 이는 올바른 결과입니다(호출이 지불되지 않았습니다). x402 인식 클라이언트는 챌린지를 읽고 미리 승인된 지갑을 사용하여 자동으로 지불하고 재시도합니다.

유료 창이 얼마나 지속되나요? 클라이언트가 한 번 결제하고 영원히 호출할 수 있나요?

그것은 전적으로 귀하의 결정입니다. 유료 상태를 소유하고 있기 때문입니다. 일반적인 선택은 유료 키에 대한 60초 TTL입니다: 이는 단일 결제가 전체 세션을 커버하지 않도록 자연스러운 재시도 및 후속 패턴을 흡수합니다. 구독 스타일 가격 책정을 위해 더 길게 설정할 수 있으며, 비싼 호출 도구의 경우 0으로 설정하면(모든 호출이 새 결제를 요구함) 됩니다. 라이브러리는 창을 강제하지 않습니다; 귀하의 저장소와 그 TTL이 그렇게 합니다.

같은 MCP 서버에서 유료 도구와 무료 도구를 실행할 수 있나요?

네. 결제 상태 확인(및 누락 시 requirePayment 챌린지)을 결제 도구에만 추가하고; 무료 도구는 일반 핸들러로 남겨두세요. 무료 도구는 모든 클라이언트에서 작동하며; 유료 도구는 결제될 때까지 402 챌린지를 반환합니다. 많은 운영자는 저렴한 도구를 무료로 제공하여 채택을 촉진하고, 고부가가치 도구(추론, 생성, 긴 맥락 작업)에 대한 결제를 예약하는 것으로 시작합니다.

어떤 클라이언트가 결제했는지, 얼마나 지출했는지 어떻게 확인하나요?

모든 결제는 귀하의 Blockchain0x 대시보드에 지불자의 지갑 주소, 타임스탬프 및 금액과 함께 기록되며, 동일한 데이터가 귀하의 payment.received 웹후크에 도착하므로 원하는 대로 저장할 수 있습니다. 핸들러를 제어하므로 라이브러리가 절대 보지 않는 것들도 기록할 수 있습니다: 어떤 도구가 호출되었는지, 반환한 모든 402 도전, 기존 결제에서 제공한 모든 호출. 이를 결제와 결합하면 지불자별 및 도구별 수익 분석을 얻을 수 있습니다.

MCP 서버를 수익으로 전환합니다.

Pro에서 시작하여 npx @blockchain0x/mcp를 실행하거나 requirePayment를 자신의 도구에 연결하십시오. 설치 후 10분 만에 첫 유료 호출이 가능합니다.