MCPay
MCPayはAIエージェントとMCPサーバーの間に位置する。エージェントは、1つのサーバーに紐づく短命の支出トークン、固定のアクションリスト、正確な価格、予算、有効期限、ノンス範囲を受け取る。ゲートウェイはそのポリシーを検証し、ノンスをアトミックに取得して、アップストリームのツールを呼び出し、正常に配信された2xxの利用を永続的なアウトボックスに記録する。
ツールごとのサブスクリプションは不要。エージェント内にクリエイターのAPIキーは不要。浮動小数点の金額も不要。
ベータ版のステータス: このリポジトリは、クローズドで実際の金銭を扱わないベータ版を運営している。ウォレットのチャージはテスト用の台帳クレジットであり、Stripe入金、クリエイターへの支払い、KYC/AML、紛争処理、税務ワークフローはまだ含まれていない。
エージェントが、予約済みのウォレット残高に裏付けられた支出セッションを作成する。
MCPayが、正確なサーバー、アクション価格、予算、有効期限、ノンス範囲に署名する。
ゲートウェイがトークンを検証し、ディスパッチ前にPostgreSQLでノンスを取得する。
配信された
2xxレスポンスがローカルのbboltアウトボックスに入り、非同期で決済される。
このリポジトリには、Go API、ゲートウェイ、決済ワーカー、PostgreSQLマイグレーション、クリエイターダッシュボード、JavaScriptおよびPython SDK、ブラウザテスト、Docker Composeベータスタックが含まれている。実際の入金と支払いは意図的に無効化されている。
プロダクトツアー
コントロールプレーンには、予約済みのエージェント予算、クリエイター収益、有料呼び出し量、ローカル認可レイテンシ、最近の決済アクティビティが表示される。
スクリーンショットは固定のドキュメント用データセットを使用している。数値は本番メトリクスではない。
Related MCP server: MCP Gateway
MCPayが存在する理由
10個の有料ツールを呼び出すエージェントに、10個のサブスクリプション、10個の請求SDK、10個の長命シークレットは必要ない。クリエイターは、web_searchに5セントを請求する前に、予約ロジック、リプレイ保護、価格チェック、レシート保存、決済ワーカーを書く必要はないはずだ。
MCPayは、実行前に支出契約を明示する:
ポリシー | 各支出セッションに組み込まれるもの |
資金の送り先 | 1つの |
エージェントが呼び出せるもの | アクション名の許可リスト |
各呼び出しのコスト | 不変の |
最大エクスポージャー | 予約済み予算と呼び出しごとの最大価格 |
リプレイ境界 | 分散アトミック取得を伴うノンス開始/終了範囲 |
有効期限 | 署名付き有効期限タイムスタンプとオンライン失効チェック |
取得がアクティブなセッションと一致しない場合、ゲートウェイはアップストリームがリクエストを見る前に停止する。
比較
MCPay | APIキー+カスタム請求 | 中央請求プロキシ | ツールごとのサブスクリプション | |
エージェントが制限付き支出許可を得られる | はい | 自分で作る | 場合による | いいえ |
正確な価格がセッションに署名される | はい | 自分で作る | プロバイダー固有 | いいえ |
クロスゲートウェイのリプレイ保護 | PostgreSQLアトミック取得 | 通常は欠落 | プロバイダーによる | 該当なし |
ツールハンドラーが決済コードを所有する | いいえ | はい | 部分的 | はい |
配信済み | bboltアウトボックス | 自分で作る | プロバイダー所有 | プロバイダー所有 |
セルフホスト型コントロールプレーン | はい | はい | 通常はいいえ | いいえ |
クリエイター間で1つのウォレット | 設計されている | 共通契約なし | プラットフォーム固有 | いいえ |
ソースを監査できる | はい | 自分のコードのみ | 通常はいいえ | 通常はいいえ |
チェックアウトは簡単な部分だ。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コントロールプレーン呼び出しはディスパッチ前に行われる。なぜなら、オフライン専用のリプレイ保護では2台のゲートウェイマシンを調整できず、失効したセッションを停止できないからだ。署名チェックは依然としてローカルで行われるため、不正な形式やスコープ外のトークンがデータベースの取得に到達することはない。
セキュリティモデル
MCPayは署名付きJWTを「暗号化」とは呼ばない。実際には暗号化されていない。支出トークンは読み取り可能なクレームを持ち、Ed25519署名を使用するため、ゲートウェイは署名キーを保持せずに改ざんを検出できる。
境界 | MCPayが行うこと |
支出トークン | Ed25519署名。APIが秘密キーを保持し、ゲートウェイは公開キーのみを受け取る |
ブラウザ認証 |
|
パスワード保存 | bcryptハッシュ。平文パスワードは決して保存しない |
招待コードとセッショントークン | SHA-256ハッシュをPostgreSQLに保存 |
ゲートウェイ認証情報 | HMAC-SHA-256署名、バージョン管理、1つのサーバーにスコープ |
公開トランスポート | 明示的なローカル開発モード以外ではHTTPS必須 |
内部Dockerトラフィック | CaddyとAPI間のプライベートCAとTLS |
マネー状態 | 整数の最小単位、追記専用の台帳イベント、直列化可能なトランザクション、決定論的冪等キー |
リプレイ制御 | 2フェーズのPostgreSQLノンス取得。短いディスパッチ前リースの後、再利用不可のディスパッチ済み状態 |
利用配信 | 配信済み |
HTTP転送 | リダイレクトをブロック、ホップバイホップヘッダーを削除、転送ヘッダーを除去、リクエストサイズと時間制限を適用 |
エージェントトークン注入 | HTTPSと明示的なゲートウェイオリジン許可リスト。支出ヘッダーは任意のURLに追加されない |
ここでの保存時暗号化の意味
MCPayは台帳行にアプリケーションレベルのフィールド暗号化を追加しない。PostgreSQL認証情報、署名キー、ゲートウェイシークレット、バックアップはシークレットマネージャーと暗号化ストレージに属する。マネージドPostgreSQLまたは暗号化されたホストボリュームが、データベースファイルを保存時に保護する必要がある。この区別は重要だ。「すべてが暗号化されている」と主張すると、実際の信頼境界が隠れてしまうからだ。
ベータ版デプロイでは、PostgreSQLとワーカーをプライベートネットワークに置き、公開TLSをCaddyで終端し、シークレットをランタイムでマウントし、マイグレーション前にバックアップを取り、deploy/.env.betaを決してコミットしないこと。
ローカルで実行する
要件: Compose v2を備えたDocker Engine、キー生成用のGo 1.25+、利用可能なメモリ4 GB。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 pshttp://localhost:8080を開く。composeスタックは、PostgreSQL、マイグレーション、API、ワーカー、ダッシュボード、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有料リクエストは2つのヘッダーを運ぶ:
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" },
},
}),
});初期化とツール検出は、支出ヘッダーなしで通過する。セッション作成は冪等キーを使用するため、レスポンスが失われても予算が2回予約されることはない。
直接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/testsPostgreSQL テストでは、MCPAY_TEST_DATABASE_URL を破棄可能なマイグレーション済みデータベースに向けてください。テストはアプリケーションテーブルを切り詰めます。本番データベースは絶対に使用しないでください。
ループバック認可ベンチマークを実行するには:
go run ./cmd/mcpay-benchmark --samples 1000 --warmup 100お使いのマシンで、raw、ローカル SDK、ゲートウェイの p50/p95/p99 を報告します。このベンチマークは、セッションセットアップ、中央台帳書き込み、非同期使用状況アップロードを除外しているため、本番 SLA ではありません。
現在提供されているもの
ベータ版で利用可能 | 実際の資金投入前にまだ必要なもの |
招待制アカウントと仮想 USD ウォレット | Stripe または銀行振込の統合 |
不変の価格スナップショットを備えたサーバー/アクションカタログ | クリエイターへの支払いと支払い調整 |
署名付き支出セッションとオンライン失効 | KYC/AML、制裁、紛争、税務処理 |
ゲートウェイホスト間での分散 nonce クレーム |
|
正常に配信された | 本番監視、ページング、バックアップ訓練、インシデントランブック |
クリエイター領収書、分析、テスト用トップアップ | 各ローンチ管轄区域における法務レビュー |
MCPay は、テストクレジットによる管理されたベータ版の準備ができています。顧客資金を保持する準備はまだできていません。
リポジトリマップ
パス | 目的 |
| HTTP コントロールプレーンハンドラーと認証 |
| クリエイターおよびエージェント予算ダッシュボード |
| 永続 Go API プロセス |
| 有料 MCP および HTTP リバースプロキシ |
| 決済、再試行、調整、有効期限ループ |
| PostgreSQL マネーおよび使用状況トランザクション |
| 認可プロキシと bbolt 状態 |
| 支出クレームと Ed25519 トークンコード |
| エージェントクライアントと JavaScript 有料ツールラッパー |
| Python 非同期有料ツールラッパー |
| 順序付けられた PostgreSQL スキーマ変更 |
ライセンス
MCPay は Business Source License 1.1 を使用しています。BSL は OSI 承認のオープンソースライセンスではありませんが、誰もがソースにアクセスでき、コピー、変更、再配布、および非本番使用を許可します。
MCPay Additional Use Grant は、ユーザーまたは組織の過去 12 か月間の総売上高が $100,000 USD 以下の場合、社内本番使用を許可します。第三者向けのホスティング、マネージド、組み込み、またはホワイトラベルの MCPay サービスは許可されません。その許可の範囲外での本番使用には商用ライセンスが必要です。商用条件をリクエストするには、公式リポジトリで issue を開いてください。
2030 年 8 月 13 日に、このバージョンは Apache License 2.0 に変更されます。BSL はまた、バージョンの最初の公開 BSL 配布から 4 周年の時点で、その日付がより早く到来する場合、オープンソースの Change License を適用します。
拘束力のある条件については LICENSE をお読みください。ダッシュボードは apps/dashboard/LICENSE の下で MIT ライセンスにより別途配布され、上流の作者と MCPay の変更に対する帰属表示が含まれます。実際の資金投入または資金調達デューデリジェンスの前に、弁護士に BSL パラメータをレビューしてもらってください。
セキュリティ研究は歓迎します。ソースへのアクセスによりレビューが可能になりますが、脆弱性の不存在を証明するものではなく、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