Skip to main content
Glama

MCPay sitzt zwischen einem KI-Agenten und einem MCP-Server. Der Agent erhält ein kurzlebiges Ausgabetoken, das an einen Server, eine feste Aktionsliste, exakte Preise, ein Budget, eine Ablaufzeit und einen Nonce-Bereich gebunden ist. Das Gateway überprüft diese Richtlinie, beansprucht die Nonce atomar, ruft das Upstream-Tool auf und zeichnet dann erfolgreich gelieferte 2xx-Nutzung in einer dauerhaften Outbox auf.

Kein Abonnement pro Tool. Kein Creator-API-Schlüssel im Agenten. Kein Gleitkomma-Geld.

Beta-Status: Das Repository führt eine geschlossene Beta ohne echtes Geld durch. Wallet-Aufladungen sind Test-Ledger-Guthaben; Stripe-Einzahlungen, Creator-Auszahlungen, KYC/AML, Streitfälle und Steuer-Workflows sind noch nicht enthalten.

  1. Der Agent erstellt eine Ausgabesitzung, die durch ein reserviertes Wallet-Guthaben gedeckt ist.

  2. MCPay signiert den exakten Server, die Aktionspreise, das Budget, die Ablaufzeit und den Nonce-Bereich.

  3. Das Gateway verifiziert das Token und beansprucht die Nonce in PostgreSQL vor dem Versand.

  4. Eine gelieferte 2xx-Antwort gelangt in die lokale bbolt-Outbox und wird asynchron abgerechnet.

Das Repository enthält eine Go-API, ein Gateway, einen Abrechnungs-Worker, PostgreSQL-Migrationen, ein Creator-Dashboard, JavaScript- und Python-SDKs, Browser-Tests und einen Docker-Compose-Beta-Stack. Echte Einzahlungen und Auszahlungen bleiben absichtlich deaktiviert.

Produkttour

Die Control Plane zeigt reserviertes Agentenbudget, Creator-Umsatz, Volumen bezahlter Aufrufe, lokale Autorisierungslatenz und aktuelle Abrechnungsaktivität.

Screenshots verwenden einen festen Dokumentationsdatensatz. Die Zahlen sind keine Produktionsmetriken.

Related MCP server: MCP Gateway

Warum MCPay existiert

Ein Agent, der zehn bezahlte Tools aufruft, sollte nicht zehn Abonnements, zehn Abrechnungs-SDKs und zehn langlebige Geheimnisse benötigen. Ein Creator sollte keine Reservierungslogik, Replay-Schutz, Preischecks, Belegspeicherung und Abrechnungs-Worker schreiben müssen, bevor er fünf Cent für web_search verlangt.

MCPay macht den Ausgabenvertrag vor der Ausführung explizit:

Richtlinie

In jede Ausgabesitzung eingebunden

Wohin das Geld fließen kann

Eine server_id und Umgebung

Was der Agent aufrufen kann

Eine Whitelist von Aktionsnamen

Was jeder Aufruf kostet

Unveränderliche action -> price_minor-Schnappschüsse

Maximale Exposition

Reserviertes Budget und maximaler Preis pro Aufruf

Replay-Grenze

Nonce-Start/Ende-Bereich mit verteiltem atomarem Anspruch

Lebensdauer

Signierter Ablaufzeitstempel und Online-Widerrufsprüfung

Wenn der Anspruch nicht zur aktiven Sitzung passt, stoppt das Gateway, bevor das Upstream die Anfrage sieht.

Vergleich

MCPay

API-Schlüssel plus eigene Abrechnung

Zentraler Abrechnungs-Proxy

Pro-Tool-Abonnements

Agent erhält begrenzten Ausgabegrant

Ja

Du baust es selbst

Manchmal

Nein

Exakter Preis in die Sitzung signiert

Ja

Du baust es selbst

Anbieterabhängig

Nein

Replay-Schutz über Gateways hinweg

PostgreSQL-atomarer Anspruch

Meist fehlend

Hängt vom Anbieter ab

Nicht zutreffend

Tool-Handler besitzt Zahlungscode

Nein

Ja

Teilweise

Ja

Gelieferte 2xx-Nutzung überlebt Gateway-Neustart

bbolt-Outbox

Du baust es selbst

Anbieterbesitz

Anbieterbesitz

Selbst gehostete Control Plane

Ja

Ja

Meist nein

Nein

Ein Wallet über Creators hinweg

Dafür ausgelegt

Kein gemeinsamer Vertrag

Plattformspezifisch

Nein

Quelle kann geprüft werden

Ja

Nur dein Code

Meist nein

Meist nein

Checkout ist der einfache Teil. MCPay übernimmt begrenzte Autorisierung, Duplikatunterdrückung über Hosts hinweg, unveränderliche Preise, Widerrufsreihenfolge, dauerhafte Lieferung akzeptierter Nutzung und wiederholungssichere Abrechnung.

Anforderungspfad

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

Der Control-Plane-Aufruf erfolgt vor dem Versand, weil reiner Offline-Replay-Schutz zwei Gateway-Maschinen nicht koordinieren oder eine widerrufene Sitzung stoppen kann. Signaturprüfungen finden weiterhin lokal statt, sodass fehlerhafte oder nicht zulässige Token nie den Datenbank-Anspruch erreichen.

Sicherheitsmodell

MCPay nennt ein signiertes JWT nicht "verschlüsselt". Das ist es nicht. Ausgabetoken tragen lesbare Ansprüche und verwenden Ed25519-Signaturen, damit ein Gateway jede Änderung erkennen kann, ohne den Signaturschlüssel zu besitzen.

Grenze

Was MCPay tut

Ausgabetoken

Ed25519-Signaturen; die API behält den privaten Schlüssel, Gateways erhalten nur den öffentlichen Schlüssel

Browser-Authentifizierung

HttpOnly-, SameSite=Strict-Cookie; Secure wird bei HTTPS-Anfragen gesetzt

Passwortspeicherung

bcrypt-Hashes, niemals Klartext-Passwörter

Einladungscodes und Sitzungstoken

SHA-256-Hashes in PostgreSQL gespeichert

Gateway-Anmeldedaten

HMAC-SHA-256 signiert, versioniert und auf einen Server beschränkt

Öffentlicher Transport

HTTPS erforderlich außerhalb des expliziten lokalen Entwicklungsmodus

Interner Docker-Verkehr

Private CA und TLS zwischen Caddy und der API

Geldzustand

Ganzzahlige Nebenwerteinheiten, append-only Ledger-Ereignisse, serialisierbare Transaktionen, deterministische Idempotenzschlüssel

Replay-Kontrolle

Zweiphasiger PostgreSQL-Nonce-Anspruch mit kurzem Pre-Dispatch-Lease, dann nicht wiederverwendbarer Dispatch-Zustand

Nutzungslieferung

Gelieferte 2xx-Aufrufe gelangen in eine begrenzte bbolt-Outbox mit At-least-once-Upload, idempotenter Aufnahme und idempotenter Abrechnung

HTTP-Weiterleitung

Weiterleitungen blockiert, Hop-by-Hop-Header entfernt, Weiterleitungs-Header entfernt, Größen- und Zeitlimits angewendet

Agent-Token-Injektion

HTTPS plus explizite Gateway-Origin-Whitelist; Ausgabe-Header werden nicht zu beliebigen URLs hinzugefügt

Was Verschlüsselung im Ruhezustand hier bedeutet

MCPay fügt keine anwendungsseitige Feldverschlüsselung zu Ledger-Zeilen hinzu. PostgreSQL-Anmeldedaten, Signaturschlüssel, Gateway-Geheimnisse und Backups gehören in deinen Secret-Manager und verschlüsselten Speicher; verwaltetes PostgreSQL oder verschlüsselte Host-Volumes sollten Datenbankdateien im Ruhezustand schützen. Diese Unterscheidung ist wichtig, weil die Behauptung "alles ist verschlüsselt" die tatsächliche Vertrauensgrenze verbergen würde.

Für eine Beta-Bereitstellung halte PostgreSQL und den Worker in einem privaten Netzwerk, beende öffentliches TLS an Caddy, mounte Geheimnisse zur Laufzeit, sichere vor Migrationen und committe niemals deploy/.env.beta.

Lokal ausführen

Voraussetzungen: Docker Engine mit Compose v2, Go 1.25+ für die Schlüsselerzeugung und 4 GB verfügbarer Speicher. Node.js 24 läuft im Dashboard-Build-Container.

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

Füge die generierten Ed25519-Werte in deploy/.env.beta ein, ersetze alle replace-*-Werte und starte dann den Stack:

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

Öffne http://localhost:8080. Der Compose-Stack startet PostgreSQL, Migrationen, API, Worker, Dashboard, Caddy und internes TLS. Test-Aufladungen bleiben virtuelle Guthaben.

Überprüfe den laufenden Stack:

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

PowerShell:

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

Bereitstellungshinweise, Backups, DNS und die Vercel/Supabase-Option findest du in docs/central-beta-runbook.md und docs/beta-deployment.md.

Einen MCP-Server verbinden

Erstelle einen Server und eine Aktion im Creator Studio, stelle seine serverbezogene Gateway-Anmeldedaten aus und führe dann das Gateway aus dem Repository neben dem MCP-Prozess aus:

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

Bezahlte Anfragen tragen zwei Header:

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

Das Gateway entfernt beide Header, bevor es die Anfrage an das Upstream weiterleitet.

Einen Agenten verbinden

MCPayAgentClient erstellt kurzlebige Sitzungen und injiziert Zahlungs-Header nur in erlaubte HTTPS-Gateway-Origins:

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" },
    },
  }),
});

Initialisierung und Tool-Erkennung laufen ohne Ausgabe-Header durch. Die Sitzungserstellung verwendet einen Idempotenzschlüssel, sodass eine verlorene Antwort das Budget nicht doppelt reserviert.

Direkte SDK-Wrapper

JavaScript- und Python-Wrapper existieren für Entwicklung und private Integrationen. Der Produktionsmodus lehnt flüchtige Nutzung ab; das dauerhafte Gateway bleibt der empfohlene Bereitstellungspfad, da es Nonce- und Nutzungsstatus über Prozessneustarts hinweg beibehält.

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)

Verifizierung

Der Hauptzweig prüft Go, PostgreSQL-Integration, Migrationen, beide SDKs, Browsertests, Paket-Builds, Abhängigkeits-Audits und die Docker-Compose-Konfiguration.

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

Für PostgreSQL-Tests setzen Sie MCPAY_TEST_DATABASE_URL auf eine wegwerfbare migrierte Datenbank. Die Tests leeren Anwendungstabellen; verwenden Sie niemals eine Produktionsdatenbank.

Führen Sie den Loopback-Autorisierungs-Benchmark aus mit:

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

Er meldet rohe, lokale SDK- und Gateway-p50/p95/p99 auf Ihrer Maschine. Der Benchmark schließt Sitzungseinrichtung, zentrale Ledger-Schreibvorgänge und asynchronen Nutzungs-Upload aus, ist also keine Produktions-SLA.

Was heute ausgeliefert wird

Verfügbar in der Beta

Noch erforderlich vor dem Start mit echtem Geld

Einladungsbasierte Konten und virtuelle USD-Wallets

Stripe- oder Bankeinzahlungs-Integration

Server-/Aktionskatalog mit unveränderlichen Preis-Snapshots

Creator-Auszahlungen und Auszahlungsabstimmung

Signierte Ausgabesitzungen und Online-Widerruf

KYC/AML, Sanktionen, Streitfälle und Steuerabwicklung

Verteilte Nonce-Ansprüche über Gateway-Hosts

Signaturschlüssel-Rotation mit kid-Rollout-Verfahren

Dauerhafter Outbox für erfolgreich zugestellte 2xx-Nutzung und wiederholungssichere Abrechnung

Produktionsüberwachung, Paging, Backup-Übungen und Incident-Runbooks

Creator-Belege, Analysen und Test-Aufladungen

Rechtliche Prüfung für jede Start-Jurisdiktion

MCPay ist bereit für eine kontrollierte Beta mit Testguthaben. Es ist nicht bereit, Kundengelder zu halten.

Repository-Übersicht

Pfad

Zweck

apps/api

HTTP-Control-Plane-Handler und Authentifizierung

apps/dashboard

Creator- und Agent-Budget-Dashboard

cmd/mcpay-api

Dauerhafter Go-API-Prozess

cmd/mcpay-gateway

Bezahlter MCP- und HTTP-Reverse-Proxy

cmd/mcpay-worker

Abrechnungs-, Wiederholungs-, Abstimmungs- und Ablaufschleife

internal/controlplane

PostgreSQL-Geld- und Nutzungstransaktionen

internal/gateway

Autorisierungs-Proxy und bbolt-Zustand

internal/sessions

Ausgabeansprüche und Ed25519-Token-Code

packages/sdk-js

Agent-Client und JavaScript-Wrapper für bezahlte Tools

packages/sdk-python

Python-Async-Wrapper für bezahlte Tools

migrations

Geordnete PostgreSQL-Schemaänderungen

Lizenz

MCPay verwendet die Business Source License 1.1. BSL ist keine OSI-anerkannte Open-Source-Lizenz, gibt aber jedem Zugriff auf den Quellcode und erlaubt Kopieren, Modifizieren, Weiterverbreiten und nicht-kommerzielle Nutzung.

Der MCPay Additional Use Grant erlaubt interne Produktionsnutzung, wenn der Nutzer oder die Organisation in den letzten 12 Monaten einen aggregierten Bruttoumsatz von nicht mehr als 100.000 USD hat. Er erlaubt keinen gehosteten, verwalteten, eingebetteten oder White-Label-MCPay-Dienst für Dritte. Produktionsnutzung außerhalb dieses Grants erfordert eine kommerzielle Lizenz; öffnen Sie ein Issue im offiziellen Repository, um kommerzielle Bedingungen anzufragen.

Am 13. August 2030 wechselt diese Version zur Apache License 2.0. BSL wendet auch ihre Open-Source-Change-License am vierten Jahrestag der ersten öffentlichen BSL-Verteilung einer Version an, falls dieses Datum früher eintritt.

Lesen Sie LICENSE für die verbindlichen Bedingungen. Das Dashboard wird separat unter der MIT-Lizenz in apps/dashboard/LICENSE verteilt, einschließlich Namensnennung für seinen ursprünglichen Autor und MCPay-Änderungen. Lassen Sie die BSL-Parameter vor einem Start mit echtem Geld oder einer Finanzierungs-Due-Diligence von Rechtsberatern prüfen.

Sicherheitsforschung ist willkommen. Quellcode-Zugang ermöglicht Überprüfung; er beweist nicht die Abwesenheit von Schwachstellen, und BSL liefert die Software ohne Sicherheitsgewähr.

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