MCP Pay Server について
MCP Pay Server は、ツール呼び出しに課金するサービス運営者向けの単独型 MCP サーバーです。Base 上の USDC による前払い残高を、署名検証や残高確認、差し引きで管理します。
主な機能
- 01HTTP+SSE による双方向通信
- 02MCP ツール、リソース、プロンプトの公開
- 03Base 上の USDC 入金
- 04署名検証と有料残高の差し引き
- 05ウォレット残高の確認
活用シーン
- 01MCP ツールへの呼び出し単価の設定
- 02クライアントによる USDC 残高の事前入金
- 03有料ツール実行前の残高確認
- 04支払いウォレットの残高確認
MCP 対応
HTTP+SSE 経由で、MCP クライアントにツール、リソース、プロンプトを公開します。クライアントは決済機能の取得、入金情報リソースの参照、残高確認ツールの利用ができます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP Pay Server
HTTP+SSE トランスポートを使用した Model Context Protocol(MCP)サーバーのスタンドアロン実装で、基本的な前払いクレジットシステムを備えています。
機能
- MCP のツール、リソース、プロンプトを公開します
- 双方向通信に HTTP+SSE をサポートします
- Base(または Base Sepolia)での USDC 入金を使用したシンプルな決済レイヤーを実装しています
- Express、TypeScript、Viem、Zod で構築されています
セットアップ
-
依存関係をインストールします:
npm install -
環境変数を設定します: ルートディレクトリ(
mcp-pay-server/.env)に次の内容の.envファイルを作成します。# 必須:サーバーが USDC 入金を監視するウォレットの公開アドレス SERVER_DEPOSIT_ADDRESS=0xYourServerWalletPublicAddress # 任意:Base または Base Sepolia の RPC URL(デフォルト値が設定されています) # BASE_RPC_URL=https://your-base-rpc-url # 任意:サーバーのポート(デフォルトは 3000) # PORT=3001SERVER_DEPOSIT_ADDRESS:サーバーが入金を監視する0x...形式の公開アドレスです。BASE_RPC_URL:Base ブロックチェーン(メインネットまたは Sepolia)との通信に使用する RPC エンドポイントです。PORT:HTTP サーバーがリッスンするポートです。
使用方法
サーバーを起動します:
npm start
これにより MCP サーバーが起動し、設定された SERVER_DEPOSIT_ADDRESS への USDC 入金の監視が開始されます。
決済システムの概要
このサーバーでは、暗号署名によって検証される前払いクレジットシステムを使用します。クライアントは接続後、決済機能を個別に取得します。
- 接続: クライアントがサーバーに接続します。
- 機能の取得: クライアントが
payments/getCapabilitiesメソッドを呼び出し、次の情報を受け取ります。- 入金情報を提供するリソースの URI(例:
mcp-pay://server/payment/info)。 - 残高確認に使用するツールの名前(例:
payments_getBalance)。 - 支払いが必要なツールと、それぞれの費用の一覧(文字列形式)。
- 入金情報を提供するリソースの URI(例:
- 入金情報: クライアントは入金情報リソース(URI は機能情報から取得)を読み取り、サーバーの USDC 入金アドレスを確認します。
- クレジット: クライアントは(設定されたネットワーク上で)入金アドレスに USDC を送金します。サーバーはこのアドレスを監視し、送金者のアカウントにクレジットを付与します。
- 有料ツールの使用: クライアントが機能情報で有料として指定されたツールを呼び出す場合:
params.argumentsに__payer(クライアントの0x...形式のアドレス)と__signature(正規化されたリクエストの ECDSA 署名)を含める必要があります。- サーバーの中央ミドルウェアが署名を検証し、ツールのロジックを実行する前に、支払者の残高がツールの費用を満たしているか確認します。
- 検証に成功するとツールが実行されます。ツールの実行が成功した場合、支払者の残高から費用が差し引かれます。
- 残高の確認: クライアントは残高確認ツール(名前は機能情報から取得)を使用し、引数として
payerAddressを渡します。このツールに署名は不要です。
利用可能なエンドポイント
POST /mcp- クライアントからサーバーへのリクエストに使用します(mcp-session-idヘッダーが必要です)。一般的な MCP メソッドとpayments/getCapabilitiesを処理します。GET /mcp- SSE(Server-Sent Events)ストリームに使用します(mcp-session-idヘッダーが必要です)。
決済機能(payments/getCapabilities で公開)
- 入金情報リソース URI:
mcp-pay://server/payment/info(デフォルト) - 残高確認ツール:
payments_getBalance(デフォルト) - 有料ツール(例):
greet:0.05 USDC(デフォルト)- (その他も設定できます)
利用可能なツール
greet:シンプルな挨拶ツール(デフォルトで支払いが必要です)。payments_getBalance:呼び出し元のウォレットのクレジット残高を返します(無料)。
利用可能なリソース
mcp-pay://server/payment/info:サーバーの入金アドレスを返します。
開発
TypeScript コードをビルドします:
npm run build
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。