MCPay
MCPay находится между AI-агентом и MCP-сервером. Агент получает кратковременный токен расходов, привязанный к одному серверу, фиксированный список действий, точные цены, бюджет, время истечения и диапазон nonce. Шлюз проверяет эту политику, атомарно заявляет nonce, вызывает вышестоящий инструмент, а затем записывает успешно доставленное использование 2xx в долговременный outbox.
Никакой подписки на каждый инструмент. Никакого ключа API создателя внутри агента. Никаких денег с плавающей точкой.
Статус бета-версии: в репозитории работает закрытая бета-версия без реальных денег. Пополнение кошелька — это тестовые кредиты в реестре; депозиты Stripe, выплаты создателям, KYC/AML, споры и налоговые процессы пока не включены.
Агент создаёт сессию расходов, обеспеченную зарезервированным балансом кошелька.
MCPay подписывает точный сервер, цены действий, бюджет, срок действия и диапазон nonce.
Шлюз проверяет токен и заявляет nonce в PostgreSQL перед отправкой.
Доставленный ответ
2xxпопадает в локальный outbox bbolt и асинхронно рассчитывается.
Репозиторий включает Go API, шлюз, worker для расчётов, миграции PostgreSQL, панель создателя, SDK для JavaScript и Python, браузерные тесты и Docker Compose стек для бета-версии. Реальные депозиты и выплаты намеренно отключены.
Обзор продукта
Панель управления показывает зарезервированный бюджет агента, доход создателя, объём платных вызовов, локальную задержку авторизации и недавнюю активность по расчётам.
Скриншоты используют фиксированный набор документационных данных. Показатели не являются производственными.
Related MCP server: MCP Gateway
Зачем нужен MCPay
Агенту, который вызывает десять платных инструментов, не нужны десять подписок, десять SDK для биллинга и десять долгоживущих секретов. Создателю не нужно писать логику резервирования, защиту от повторов, проверку цен, хранение чеков и worker'ы для расчётов, чтобы взимать пять центов за web_search.
MCPay делает контракт расходов явным до выполнения:
Политика | Встроено в каждую сессию расходов |
Куда могут идти деньги | Один |
Что агент может вызывать | Разрешённый список имён действий |
Сколько стоит каждый вызов | Неизменяемые снимки |
Максимальный риск | Зарезервированный бюджет и максимальная цена за вызов |
Граница повторов | Диапазон nonce start/end с распределённым атомарным заявлением |
Срок действия | Подписанная метка времени истечения и онлайн-проверка отзыва |
Если заявление не соответствует активной сессии, шлюз останавливается до того, как вышестоящий сервер увидит запрос.
Сравнение
MCPay | API-ключи плюс собственный биллинг | Центральный биллинговый прокси | Подписки на каждый инструмент | |
Агент получает ограниченный грант на расходы | Да | Вы строите это | Иногда | Нет |
Точная цена подписана в сессии | Да | Вы строите это | Зависит от провайдера | Нет |
Защита от повторов между шлюзами | Атомарное заявление PostgreSQL | Обычно отсутствует | Зависит от провайдера | Не применимо |
Обработчик инструмента владеет платёжным кодом | Нет | Да | Частично | Да |
Доставленное использование | 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 |
Хранение паролей | bcrypt-хеши, никогда не хранятся пароли в открытом виде |
Коды приглашений и токены сессий | SHA-256 хеши хранятся в PostgreSQL |
Учётные данные шлюза | Подписаны HMAC-SHA-256, версионированы и ограничены одним сервером |
Публичный транспорт | HTTPS обязателен вне явного режима локальной разработки |
Внутренний Docker-трафик | Частный CA и TLS между Caddy и API |
Состояние денег | Целочисленные младшие единицы, только добавляемые события реестра, сериализуемые транзакции, детерминированные ключи идемпотентности |
Контроль повторов | Двухфазное заявление nonce в PostgreSQL с короткой арендой перед отправкой, затем неиспользуемое состояние dispatched |
Доставка использования | Доставленные вызовы |
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.shPowerShell:
./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 на хостах шлюза | Ротация ключей подписи с процедурами развертывания |
Долговечный outbox для успешно доставленного использования | Производственный мониторинг, пейджинг, резервное копирование и runbook'и для инцидентов |
Квитанции создателей, аналитика и тестовые пополнения | Юридическая проверка для каждой юрисдикции запуска |
MCPay готов к контролируемой бета-версии с тестовыми кредитами. Он не готов к хранению средств клиентов.
Карта репозитория
Путь | Назначение |
| Обработчики HTTP control-plane и аутентификация |
| Панель управления для создателей и бюджетов агентов |
| Долговечный процесс Go API |
| Платный MCP и HTTP обратный прокси |
| Цикл расчетов, повторных попыток, сверки и истечения срока |
| Денежные и пользовательские транзакции PostgreSQL |
| Прокси авторизации и состояние bbolt |
| Заявки на расходы и код токена Ed25519 |
| Клиент агента и обертка для платных инструментов JavaScript |
| Асинхронная обертка для платных инструментов Python |
| Упорядоченные изменения схемы 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 предоставляет программное обеспечение без гарантии безопасности.
This server cannot be installed
Maintenance
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.
Related MCP Servers
- FlicenseCqualityDmaintenanceA 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
- AlicenseNot gradedqualityDmaintenanceA 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
- AlicenseAqualityBmaintenanceSecurity, 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.41933MIT
- FlicenseNot gradedqualityBmaintenanceBridges 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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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