Skip to main content
Glama

MCPay находится между AI-агентом и MCP-сервером. Агент получает кратковременный токен расходов, привязанный к одному серверу, фиксированный список действий, точные цены, бюджет, время истечения и диапазон nonce. Шлюз проверяет эту политику, атомарно заявляет nonce, вызывает вышестоящий инструмент, а затем записывает успешно доставленное использование 2xx в долговременный outbox.

Никакой подписки на каждый инструмент. Никакого ключа API создателя внутри агента. Никаких денег с плавающей точкой.

Статус бета-версии: в репозитории работает закрытая бета-версия без реальных денег. Пополнение кошелька — это тестовые кредиты в реестре; депозиты Stripe, выплаты создателям, KYC/AML, споры и налоговые процессы пока не включены.

  1. Агент создаёт сессию расходов, обеспеченную зарезервированным балансом кошелька.

  2. MCPay подписывает точный сервер, цены действий, бюджет, срок действия и диапазон nonce.

  3. Шлюз проверяет токен и заявляет nonce в PostgreSQL перед отправкой.

  4. Доставленный ответ 2xx попадает в локальный outbox bbolt и асинхронно рассчитывается.

Репозиторий включает Go API, шлюз, worker для расчётов, миграции PostgreSQL, панель создателя, SDK для JavaScript и Python, браузерные тесты и Docker Compose стек для бета-версии. Реальные депозиты и выплаты намеренно отключены.

Обзор продукта

Панель управления показывает зарезервированный бюджет агента, доход создателя, объём платных вызовов, локальную задержку авторизации и недавнюю активность по расчётам.

Скриншоты используют фиксированный набор документационных данных. Показатели не являются производственными.

Related MCP server: MCP Gateway

Зачем нужен MCPay

Агенту, который вызывает десять платных инструментов, не нужны десять подписок, десять SDK для биллинга и десять долгоживущих секретов. Создателю не нужно писать логику резервирования, защиту от повторов, проверку цен, хранение чеков и worker'ы для расчётов, чтобы взимать пять центов за web_search.

MCPay делает контракт расходов явным до выполнения:

Политика

Встроено в каждую сессию расходов

Куда могут идти деньги

Один server_id и окружение

Что агент может вызывать

Разрешённый список имён действий

Сколько стоит каждый вызов

Неизменяемые снимки action -> price_minor

Максимальный риск

Зарезервированный бюджет и максимальная цена за вызов

Граница повторов

Диапазон nonce start/end с распределённым атомарным заявлением

Срок действия

Подписанная метка времени истечения и онлайн-проверка отзыва

Если заявление не соответствует активной сессии, шлюз останавливается до того, как вышестоящий сервер увидит запрос.

Сравнение

MCPay

API-ключи плюс собственный биллинг

Центральный биллинговый прокси

Подписки на каждый инструмент

Агент получает ограниченный грант на расходы

Да

Вы строите это

Иногда

Нет

Точная цена подписана в сессии

Да

Вы строите это

Зависит от провайдера

Нет

Защита от повторов между шлюзами

Атомарное заявление PostgreSQL

Обычно отсутствует

Зависит от провайдера

Не применимо

Обработчик инструмента владеет платёжным кодом

Нет

Да

Частично

Да

Доставленное использование 2xx переживает перезапуск шлюза

outbox bbolt

Вы строите это

Принадлежит провайдеру

Принадлежит провайдеру

Самостоятельно размещаемая панель управления

Да

Да

Обычно нет

Нет

Один кошелёк для всех создателей

Предусмотрено

Нет общего контракта

Зависит от платформы

Нет

Исходный код можно проверить

Да

Только ваш код

Обычно нет

Обычно нет

Оформление заказа — это лёгкая часть. MCPay обрабатывает ограниченную авторизацию, подавление дубликатов на разных хостах, неизменяемые цены, порядок отзыва, долговременную доставку принятого использования и безопасные для повторов расчёты.

Путь запроса

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

Вызов панели управления происходит до отправки, потому что защита от повторов только в офлайн-режиме не может координировать две машины шлюза или остановить отозванную сессию. Проверки подписи всё равно выполняются локально, поэтому некорректные или выходящие за рамки токены никогда не достигают заявления в базе данных.

Модель безопасности

MCPay не называет подписанный JWT «зашифрованным». Это не так. Токены расходов несут читаемые утверждения и используют подписи Ed25519, чтобы шлюз мог обнаружить любую модификацию, не имея ключа подписи.

Граница

Что делает MCPay

Токены расходов

Подписи Ed25519; API хранит закрытый ключ, шлюзы получают только открытый ключ

Аутентификация в браузере

Cookie HttpOnly, SameSite=Strict; Secure устанавливается для HTTPS-запросов

Хранение паролей

bcrypt-хеши, никогда не хранятся пароли в открытом виде

Коды приглашений и токены сессий

SHA-256 хеши хранятся в PostgreSQL

Учётные данные шлюза

Подписаны HMAC-SHA-256, версионированы и ограничены одним сервером

Публичный транспорт

HTTPS обязателен вне явного режима локальной разработки

Внутренний Docker-трафик

Частный CA и TLS между Caddy и API

Состояние денег

Целочисленные младшие единицы, только добавляемые события реестра, сериализуемые транзакции, детерминированные ключи идемпотентности

Контроль повторов

Двухфазное заявление nonce в PostgreSQL с короткой арендой перед отправкой, затем неиспользуемое состояние dispatched

Доставка использования

Доставленные вызовы 2xx попадают в ограниченный outbox bbolt с загрузкой at-least-once, идемпотентным приёмом и идемпотентным расчётом

HTTP-пересылка

Перенаправления заблокированы, hop-by-hop заголовки удалены, заголовки пересылки удалены, применяются ограничения размера запроса и времени

Внедрение токена агента

HTTPS плюс явный список разрешённых источников шлюза; заголовки расходов не добавляются к произвольным URL

Что означает шифрование в состоянии покоя здесь

MCPay не добавляет шифрование полей на уровне приложения к строкам реестра. Учётные данные PostgreSQL, ключи подписи, секреты шлюза и резервные копии должны находиться в вашем менеджере секретов и зашифрованном хранилище; управляемый PostgreSQL или зашифрованные тома хоста должны защищать файлы базы данных в состоянии покоя. Это различие важно, потому что утверждение «всё зашифровано» скрыло бы реальную границу доверия.

Для бета-развёртывания держите PostgreSQL и worker в частной сети, завершайте публичный TLS на Caddy, монтируйте секреты во время выполнения, делайте резервные копии перед миграциями и никогда не коммитьте deploy/.env.beta.

Запуск локально

Требования: Docker Engine с Compose v2, Go 1.25+ для генерации ключей и 4 ГБ доступной памяти. Node.js 24 работает внутри контейнера сборки панели управления.

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

Вставьте сгенерированные значения Ed25519 в deploy/.env.beta, замените все значения replace-*, затем запустите стек:

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

Откройте http://localhost:8080. Compose-стек запускает PostgreSQL, миграции, API, worker, панель управления, Caddy и внутренний TLS. Тестовые пополнения остаются виртуальными кредитами.

Проверьте работающий стек:

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

PowerShell:

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

Заметки по развёртыванию, резервные копии, DNS и вариант Vercel/Supabase находятся в docs/central-beta-runbook.md и docs/beta-deployment.md.

Подключение MCP-сервера

Создайте сервер и действие в Creator Studio, выпустите его учётные данные шлюза, ограниченные сервером, затем запустите шлюз из репозитория рядом с процессом 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

Платные запросы несут два заголовка:

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

Шлюз удаляет оба заголовка перед пересылкой запроса вышестоящему серверу.

Подключение агента

MCPayAgentClient создаёт кратковременные сессии и внедряет заголовки платежей только в разрешённые HTTPS-источники шлюза:

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

Инициализация и обнаружение инструментов проходят без заголовков расходов. Создание сессии использует ключ идемпотентности, поэтому потерянный ответ не резервирует бюджет дважды.

Прямые обёртки SDK

Обертки для JavaScript и Python существуют для разработки и частных интеграций. Производственный режим отклоняет непостоянное использование; постоянный шлюз остается рекомендуемым путем развертывания, поскольку он сохраняет состояние nonce и использования между перезапусками процессов.

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)

Проверка

Основная ветка проверяет Go, интеграцию с PostgreSQL, миграции, оба SDK, браузерные тесты, сборку пакетов, аудит зависимостей и конфигурацию 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

Для тестов PostgreSQL укажите MCPAY_TEST_DATABASE_URL на одноразовую мигрированную базу данных. Тесты усекают таблицы приложения; никогда не используйте производственную базу данных.

Запустите бенчмарк авторизации loopback с помощью:

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

Он сообщает raw, локальный SDK и p50/p95/p99 шлюза на вашей машине. Бенчмарк исключает настройку сеанса, записи в центральный реестр и асинхронную загрузку использования, поэтому он не является производственным SLA.

Что доступно сегодня

Доступно в бета-версии

Все еще требуется до запуска с реальными деньгами

Пригласительные аккаунты и виртуальные USD-кошельки

Интеграция Stripe или банковских депозитов

Каталог серверов/действий с неизменяемыми снимками цен

Выплаты создателям и сверка выплат

Подписанные сессии расходов и онлайн-отзыв

KYC/AML, санкции, споры и налоговая обработка

Распределенные заявки nonce на хостах шлюза

Ротация ключей подписи с процедурами развертывания kid

Долговечный outbox для успешно доставленного использования 2xx и безопасная для повторных попыток оплата

Производственный мониторинг, пейджинг, резервное копирование и runbook'и для инцидентов

Квитанции создателей, аналитика и тестовые пополнения

Юридическая проверка для каждой юрисдикции запуска

MCPay готов к контролируемой бета-версии с тестовыми кредитами. Он не готов к хранению средств клиентов.

Карта репозитория

Путь

Назначение

apps/api

Обработчики HTTP control-plane и аутентификация

apps/dashboard

Панель управления для создателей и бюджетов агентов

cmd/mcpay-api

Долговечный процесс Go API

cmd/mcpay-gateway

Платный MCP и HTTP обратный прокси

cmd/mcpay-worker

Цикл расчетов, повторных попыток, сверки и истечения срока

internal/controlplane

Денежные и пользовательские транзакции PostgreSQL

internal/gateway

Прокси авторизации и состояние bbolt

internal/sessions

Заявки на расходы и код токена Ed25519

packages/sdk-js

Клиент агента и обертка для платных инструментов JavaScript

packages/sdk-python

Асинхронная обертка для платных инструментов Python

migrations

Упорядоченные изменения схемы PostgreSQL

Лицензия

MCPay использует Business Source License 1.1. BSL не является лицензией с открытым исходным кодом, одобренной OSI, но она дает всем доступ к исходному коду и разрешает копирование, изменение, распространение и непроизводственное использование.

Дополнительный грант на использование MCPay разрешает внутреннее производственное использование, если пользователь или организация имеет не более $100 000 USD совокупного валового дохода за предыдущие 12 месяцев. Он не разрешает размещенный, управляемый, встроенный или white-label сервис MCPay для третьих сторон. Производственное использование вне этого гранта требует коммерческой лицензии; откройте issue в официальном репозитории, чтобы запросить коммерческие условия.

13 августа 2030 года эта версия переходит на Apache License 2.0. BSL также применяет свою лицензию на изменение с открытым исходным кодом в четвертую годовщину первого публичного распространения версии по BSL, если эта дата наступает раньше.

Прочтите LICENSE для обязательных условий. Панель управления распространяется отдельно под лицензией MIT в apps/dashboard/LICENSE, включая указание авторства для вышестоящего автора и модификаций MCPay. Проконсультируйтесь с юристом по параметрам BSL перед запуском с реальными деньгами или проведением due diligence для сбора средств.

Исследования безопасности приветствуются. Доступ к исходному коду делает возможным проверку; он не доказывает отсутствие уязвимостей, и BSL предоставляет программное обеспечение без гарантии безопасности.

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