Skip to main content
Glama

MCPay se sitúa entre un agente de IA y un servidor MCP. El agente recibe un token de gasto de corta duración vinculado a un único servidor, una lista de acciones fija, precios exactos, un presupuesto, una hora de expiración y un rango de nonces. La pasarela verifica esa política, reclama el nonce de forma atómica, llama a la herramienta ascendente y luego registra el uso de respuestas 2xx entregadas correctamente en un outbox duradero.

Sin suscripción por herramienta. Sin clave de API del creador dentro del agente. Sin dinero en coma flotante.

Estado de la beta: el repositorio ejecuta una beta cerrada sin dinero real. Las recargas de cartera son créditos de prueba en el libro mayor; los depósitos de Stripe, los pagos a creadores, KYC/AML, las disputas y los flujos de impuestos aún no están incluidos.

  1. El agente crea una sesión de gasto respaldada por un saldo de cartera reservado.

  2. MCPay firma el servidor exacto, los precios de las acciones, el presupuesto, la expiración y el rango de nonces.

  3. La pasarela verifica el token y reclama el nonce en PostgreSQL antes del envío.

  4. Una respuesta 2xx entregada entra en el outbox local de bbolt y se liquida de forma asíncrona.

El repositorio incluye una API en Go, una pasarela, un trabajador de liquidación, migraciones de PostgreSQL, un panel de creadores, SDK de JavaScript y Python, pruebas de navegador y una pila beta de Docker Compose. Los depósitos y pagos reales permanecen deshabilitados deliberadamente.

Recorrido por el producto

El plano de control muestra el presupuesto reservado del agente, los ingresos del creador, el volumen de llamadas de pago, la latencia de autorización local y la actividad de liquidación reciente.

Las capturas de pantalla usan un conjunto de datos de documentación fijo. Las cifras no son métricas de producción.

Related MCP server: MCP Gateway

Por qué existe MCPay

Un agente que llama a diez herramientas de pago no debería necesitar diez suscripciones, diez SDK de facturación y diez secretos de larga duración. Un creador no debería tener que escribir lógica de reserva, protección contra repetición, comprobaciones de precios, almacenamiento de recibos y trabajadores de liquidación antes de cobrar cinco centavos por web_search.

MCPay hace explícito el contrato de gasto antes de la ejecución:

Política

Vinculada a cada sesión de gasto

A dónde puede ir el dinero

Un server_id y entorno

Qué puede llamar el agente

Una lista blanca de nombres de acciones

Cuánto cuesta cada llamada

Instantáneas inmutables de action -> price_minor

Exposición máxima

Presupuesto reservado y precio máximo por llamada

Límite de repetición

Rango de inicio/fin de nonce con reclamo atómico distribuido

Vigencia

Marca de tiempo de expiración firmada y verificación de revocación en línea

Si el reclamo no coincide con la sesión activa, la pasarela se detiene antes de que el servidor ascendente vea la solicitud.

Cómo se compara

MCPay

Claves de API más facturación personalizada

Proxy central de facturación

Suscripciones por herramienta

El agente recibe una concesión de gasto limitada

Lo construyes tú

A veces

No

Precio exacto firmado en la sesión

Lo construyes tú

Específico del proveedor

No

Protección contra repetición entre pasarelas

Reclamo atómico en PostgreSQL

Normalmente ausente

Depende del proveedor

No aplicable

El manejador de herramientas posee el código de pago

No

Parcialmente

El uso 2xx entregado sobrevive al reinicio de la pasarela

Outbox de bbolt

Lo construyes tú

Propiedad del proveedor

Propiedad del proveedor

Plano de control autoalojado

Normalmente no

No

Una cartera para varios creadores

Diseñado para ello

Sin contrato común

Específico de la plataforma

No

El código fuente se puede auditar

Solo tu código

Normalmente no

Normalmente no

El checkout es la parte fácil. MCPay gestiona la autorización limitada, la supresión de duplicados entre hosts, los precios inmutables, el orden de revocación, la entrega duradera del uso aceptado y la liquidación segura frente a reintentos.

Ruta de la solicitud

sequenceDiagram
    participant A as Agent
    participant C as MCPay API
    participant G as MCPay Gateway
    participant P as PostgreSQL
    participant T as MCP Tool
    participant W as Settlement Worker

    A->>C: Create spend session
    C->>P: Reserve budget and store price snapshot
    C-->>A: Ed25519-signed spend token
    A->>G: tools/call + token + nonce
    G->>G: Verify issuer, server, action, price, expiry
    G->>P: Atomic nonce claim
    P-->>G: Active and unique
    G->>P: Mark nonce dispatched
    G->>T: Execute tool
    T-->>G: Result
    G-->>A: Result
    G->>G: Persist delivered 2xx usage in bbolt outbox
    G->>C: Upload usage batch
    C->>P: Insert idempotent usage record
    W->>P: Settle creator credit

La llamada al plano de control ocurre antes del envío porque la protección contra repetición solo sin conexión no puede coordinar dos máquinas de pasarela ni detener una sesión revocada. Las comprobaciones de firma aún se realizan localmente, por lo que los tokens malformados o fuera de alcance nunca llegan al reclamo de la base de datos.

Modelo de seguridad

MCPay no llama "cifrado" a un JWT firmado. No lo está. Los tokens de gasto llevan reclamaciones legibles y usan firmas Ed25519 para que una pasarela pueda detectar cualquier modificación sin tener la clave de firma.

Límite

Qué hace MCPay

Tokens de gasto

Firmas Ed25519; la API conserva la clave privada, las pasarelas reciben solo la clave pública

Autenticación del navegador

Cookie HttpOnly, SameSite=Strict; Secure se establece en solicitudes HTTPS

Almacenamiento de contraseñas

Hashes bcrypt, nunca contraseñas en texto plano

Códigos de invitación y tokens de sesión

Hashes SHA-256 almacenados en PostgreSQL

Credenciales de pasarela

Firmadas con HMAC-SHA-256, versionadas y limitadas a un servidor

Transporte público

HTTPS obligatorio fuera del modo explícito de desarrollo local

Tráfico Docker interno

CA privada y TLS entre Caddy y la API

Estado del dinero

Unidades menores enteras, eventos de libro mayor de solo añadido, transacciones serializables, claves de idempotencia deterministas

Control de repetición

Reclamo de nonce en dos fases en PostgreSQL con una concesión corta previa al envío, luego un estado enviado no reutilizable

Entrega de uso

Las llamadas 2xx entregadas entran en un outbox de bbolt limitado con carga al menos una vez, ingesta idempotente y liquidación idempotente

Reenvío HTTP

Redirecciones bloqueadas, cabeceras salto a salto eliminadas, cabeceras de reenvío eliminadas, límites de tamaño de solicitud y tiempo aplicados

Inyección de tokens de agente

HTTPS más una lista blanca explícita de orígenes de pasarela; las cabeceras de gasto no se añaden a URLs arbitrarias

Qué significa el cifrado en reposo aquí

MCPay no añade cifrado de campos a nivel de aplicación a las filas del libro mayor. Las credenciales de PostgreSQL, las claves de firma, los secretos de pasarela y las copias de seguridad pertenecen a tu gestor de secretos y a tu almacenamiento cifrado; PostgreSQL gestionado o volúmenes de host cifrados deberían proteger los archivos de la base de datos en reposo. Esa distinción importa porque afirmar que "todo está cifrado" ocultaría el límite de confianza real.

Para un despliegue beta, mantén PostgreSQL y el trabajador en una red privada, termina el TLS público en Caddy, monta los secretos en tiempo de ejecución, haz copias de seguridad antes de las migraciones y nunca confirmes deploy/.env.beta.

Ejecútalo localmente

Requisitos: Docker Engine con Compose v2, Go 1.25+ para la generación de claves y 4 GB de memoria disponible. Node.js 24 se ejecuta dentro del contenedor de compilación del panel.

cp deploy/.env.beta.example deploy/.env.beta
go run ./cmd/mcpay-keygen

Pega los valores Ed25519 generados en deploy/.env.beta, reemplaza cada valor replace-* y luego inicia la pila:

docker compose --env-file deploy/.env.beta -f deploy/compose.beta.yml config
docker compose --env-file deploy/.env.beta -f deploy/compose.beta.yml build
docker compose --env-file deploy/.env.beta -f deploy/compose.beta.yml up -d
docker compose --env-file deploy/.env.beta -f deploy/compose.beta.yml ps

Abre http://localhost:8080. La pila de compose inicia PostgreSQL, migraciones, API, trabajador, panel, Caddy y TLS interno. Las recargas de prueba siguen siendo créditos virtuales.

Comprueba la pila en ejecución:

MCPAY_BETA_URL=http://localhost:8080 ./scripts/verify-central-beta.sh

PowerShell:

./scripts/verify-central-beta.ps1 -BaseUrl http://localhost:8080

Las notas de despliegue, las copias de seguridad, el DNS y la opción de Vercel/Supabase están en docs/central-beta-runbook.md y docs/beta-deployment.md.

Conecta un servidor MCP

Crea un servidor y una acción en Creator Studio, emite su credencial de pasarela limitada al servidor y luego ejecuta la pasarela desde el repositorio junto al proceso MCP:

go run ./cmd/mcpay-gateway \
  --target https://your-mcp-server.example \
  --mcp-path /mcp \
  --server-id srv_example \
  --environment beta \
  --token-issuer mcpay.beta \
  --public-key "$MCPAY_PUBLIC_KEY" \
  --control-plane-api https://api.example/v1/gateway/servers/srv_example \
  --nonce-claim-api https://api.example/v1/gateway/nonces/claim \
  --usage-api https://api.example/v1/usage-records \
  --usage-api-token "$MCPAY_GATEWAY_API_TOKEN" \
  --state-file ./mcpay-gateway.db

Las solicitudes de pago llevan dos cabeceras:

Authorization: Bearer <spend-token>
X-MCPay-Nonce: <nonce-within-the-signed-range>

La pasarela elimina ambas cabeceras antes de reenviar la solicitud al servidor ascendente.

Conecta un agente

MCPayAgentClient crea sesiones de corta duración e inyecta cabeceras de pago solo en orígenes de pasarela HTTPS de la lista blanca:

import {
  FileAgentSessionCreationStore,
  MCPayAgentClient,
} from "@mcpay/sdk-js";

const paid = new MCPayAgentClient({
  apiBaseUrl: "https://pay.example.com/api/mcpay",
  accessToken: process.env.MCPAY_ACCESS_TOKEN!,
  walletId: process.env.MCPAY_WALLET_ID!,
  serverId: process.env.MCPAY_SERVER_ID!,
  reservedBudget: 50,
  gatewayOrigins: ["https://tools.example.com"],
  sessionCreationStore: new FileAgentSessionCreationStore(
    "./mcpay-agent-sessions.json",
  ),
});

const response = await paid.fetch("https://tools.example.com/mcp", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    jsonrpc: "2.0",
    id: 1,
    method: "tools/call",
    params: {
      name: "web_search",
      arguments: { query: "payment rails for MCP" },
    },
  }),
});

La inicialización y el descubrimiento de herramientas pasan sin cabeceras de gasto. La creación de sesiones usa una clave de idempotencia, por lo que una respuesta perdida no reserva el presupuesto dos veces.

Envoltorios directos del SDK

Existen wrappers de JavaScript y Python para desarrollo e integraciones privadas. El modo de producción rechaza el uso volátil; la puerta de enlace duradera sigue siendo la ruta de despliegue recomendada porque conserva el estado de nonce y uso entre reinicios del proceso.

import { MCPayClient } from "@mcpay/sdk-js";

const mcpay = new MCPayClient({
  publicKey: process.env.MCPAY_PUBLIC_KEY!,
  issuer: process.env.MCPAY_TOKEN_ISSUER!,
  serverId: process.env.MCPAY_SERVER_ID!,
  environment: "development",
  allowVolatileUsage: true,
});

export const paidSearch = mcpay.tool({
  name: "web_search",
  priceMinor: 5,
  handler: async (query: string) => search(query),
});
import os

from mcpay import MCPayClient

mcpay = MCPayClient(
    public_key=os.environ["MCPAY_PUBLIC_KEY"],
    issuer=os.environ["MCPAY_TOKEN_ISSUER"],
    server_id=os.environ["MCPAY_SERVER_ID"],
    environment="development",
    allow_volatile_usage=True,
)

@mcpay.tool(name="web_search", price_minor=5)
async def search(query: str):
    return await run_search(query)

Verificación

La rama principal comprueba Go, la integración con PostgreSQL, las migraciones, ambos SDK, las pruebas de navegador, las compilaciones de paquetes, las auditorías de dependencias y la configuración de Docker Compose.

go test ./...
go test -race ./...
go vet ./...
go build ./cmd/...
npm ci
npm audit --audit-level=high
npm run build
npm run test
python -m pip install build
python -m build packages/sdk-python
python -m unittest discover -s packages/sdk-python/tests

Para las pruebas de PostgreSQL, apunta MCPAY_TEST_DATABASE_URL a una base de datos migrada desechable. Las pruebas truncan las tablas de la aplicación; nunca uses una base de datos de producción.

Ejecuta el benchmark de autorización de bucle de retorno con:

go run ./cmd/mcpay-benchmark --samples 1000 --warmup 100

Informa de p50/p95/p99 sin procesar, del SDK local y de la puerta de enlace en tu máquina. El benchmark excluye la configuración de sesión, las escrituras en el libro mayor central y la carga asíncrona de uso, por lo que no es un SLA de producción.

Qué se incluye hoy

Disponible en la beta

Aún necesario antes del lanzamiento con dinero real

Cuentas solo por invitación y carteras virtuales en USD

Integración de depósitos con Stripe o banco

Catálogo de servidores/acciones con instantáneas de precios inmutables

Pagos a creadores y conciliación de pagos

Sesiones de gasto firmadas y revocación en línea

KYC/AML, sanciones, disputas y gestión fiscal

Reclamaciones de nonce distribuidas entre hosts de la puerta de enlace

Rotación de claves de firma con procedimientos de implementación de kid

Buzón de salida duradero para uso 2xx entregado correctamente y liquidación segura con reintentos

Monitorización de producción, paginación, simulacros de copia de seguridad y runbooks de incidentes

Recibos de creadores, análisis y recargas de prueba

Revisión legal para cada jurisdicción de lanzamiento

MCPay está listo para una beta controlada con créditos de prueba. No está listo para custodiar fondos de clientes.

Mapa del repositorio

Ruta

Propósito

apps/api

Manejadores del plano de control HTTP y autenticación

apps/dashboard

Panel de creadores y presupuesto de agentes

cmd/mcpay-api

Proceso de API Go duradero

cmd/mcpay-gateway

Proxy inverso de MCP y HTTP de pago

cmd/mcpay-worker

Bucle de liquidación, reintento, conciliación y caducidad

internal/controlplane

Transacciones de dinero y uso en PostgreSQL

internal/gateway

Proxy de autorización y estado bbolt

internal/sessions

Reclamaciones de gasto y código de token Ed25519

packages/sdk-js

Cliente de agente y wrapper de herramienta de pago en JavaScript

packages/sdk-python

Wrapper de herramienta de pago asíncrono en Python

migrations

Cambios de esquema de PostgreSQL ordenados

Licencia

MCPay utiliza la Business Source License 1.1. BSL no es una licencia de código abierto aprobada por OSI, pero da a todos acceso al código fuente y permite la copia, modificación, redistribución y uso no productivo.

La Concesión de Uso Adicional de MCPay permite el uso productivo interno cuando el usuario u organización no supera los 100.000 USD de ingresos brutos agregados durante los 12 meses anteriores. No permite un servicio MCPay alojado, gestionado, integrado o de marca blanca para terceros. El uso productivo fuera de esa concesión requiere una licencia comercial; abre un issue en el repositorio oficial para solicitar condiciones comerciales.

El 13 de agosto de 2030, esta versión pasa a la Apache License 2.0. BSL también aplica su Change License de código abierto en el cuarto aniversario de la primera distribución pública BSL de una versión si esa fecha llega antes.

Lee LICENSE para conocer los términos vinculantes. El panel se distribuye por separado bajo la licencia MIT en apps/dashboard/LICENSE, incluida la atribución a su autor original y las modificaciones de MCPay. Haz que un asesor legal revise los parámetros de BSL antes de un lanzamiento con dinero real o una diligencia de recaudación de fondos.

La investigación de seguridad es bienvenida. El acceso al código fuente hace posible la revisión; no demuestra la ausencia de vulnerabilidades, y BSL proporciona el software sin garantía de seguridad.

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

1Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • MCP Gateway: wrap any MCP server with cold-start retries, uptime SLA, and per-execution MPP billing.

  • Hosted MCP server for LLM cost estimation, model comparison, and budget-aware routing.

  • nexusOAuth

    Zero-setup MCP gateway securely connecting AI to your tools with authentication and workflows

  • Governed MCP gateway: one endpoint for your tools, with credential custody and audit log.

View all MCP Connectors

Related MCP Servers

  • F
    license
    C
    quality
    D
    maintenance
    A powerful gateway for the Model Context Protocol (MCP) that unifies AI toolchains by federating multiple MCP servers, wrapping REST APIs as MCP tools, and supporting multiple transport methods with an admin dashboard.
    1
  • A
    license
    Not graded
    quality
    D
    maintenance
    A production-ready unified entry point for AI agents that implements the Model Context Protocol (MCP). It provides a secure gateway with rate limiting, authentication, and observability for managing and proxying requests to multiple downstream APIs.
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Security, cost, and health governance proxy for MCP infrastructure. Enforces YAML-configurable security policies (blocklists, rate limits, token budgets), tracks real token costs via tiktoken, monitors server health with live JSON-RPC probes. Features OAuth 2.1/OIDC with RBAC, web dashboard, payload normalization, semantic shell AST analysis, mTLS, and a formal STRIDE threat model.
    4
    193
    3
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Bridges stdio Model Context Protocol (MCP) servers to MCP Streamable HTTP behind a single gateway, enabling multi-tenant, multi-user deployment with per-tenant environment variables via HTTP headers.

View all related MCP servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/yiaany/MCPay'

If you have feedback or need assistance with the MCP directory API, please join our Discord server