MCP Pay Server
Description
# MCP Pay Server A standalone implementation of the Model Context Protocol (MCP) server with HTTP+SSE transport, including a basic pre-pay credit system. ## Features - Exposes MCP tools, resources, and prompts - Supports HTTP+SSE for bidirectional communication - Implements a…
About
# MCP Pay Server A standalone implementation of the Model Context Protocol (MCP) server with HTTP+SSE transport, including a basic pre-pay credit system. ## Features - Exposes MCP tools, resources, and prompts - Supports HTTP+SSE for bidirectional communication - Implements a simple payment layer using USDC deposits…
Details
- Author
- nexiansOrg
- Downloads
- 201
- Categories
- Other
Jump to
- Exposes MCP tools, resources, and prompts
- HTTP+SSE transport for bidirectional communication
- USDC payment layer on Base or Base Sepolia
- Pre-pay credit system verified via ECDSA signatures
- Payment capabilities fetched via payments/getCapabilities method
- Built with Express, TypeScript, Viem, and Zod
Install dependencies with npm install, configure a .env file in the root directory with SERVER_DEPOSIT_ADDRESS (required), BASE_RPC_URL (optional), and PORT (optional), then start with npm start. The server watches for USDC deposits and clients must include __payer and __signature in paid tool calls.
MCP Pay Server
A standalone implementation of the Model Context Protocol (MCP) server with HTTP+SSE transport, including a basic pre-pay credit system.
Features
- Exposes MCP tools, resources, and prompts
- Supports HTTP+SSE for bidirectional communication
- Implements a simple payment layer using USDC deposits on Base (or Base Sepolia)
- Built with Express, TypeScript, Viem, and Zod
Setup
1. Install dependencies:
npm install
2. Configure Environment Variables:
Create a .env file in the root directory (mcp-pay-server/.env) with the following:
# Required: Public address of the wallet the server will watch for USDC deposits
SERVER_DEPOSIT_ADDRESS=0xYourServerWalletPublicAddress
# Optional: RPC URL for Base or Base Sepolia (defaults provided)
# BASE_RPC_URL=https://your-base-rpc-url
# Optional: Port for the server (defaults to 3000)
# PORT=3001
SERVER_DEPOSIT_ADDRESS: The public 0x... address the server should monitor for incoming USDC deposits.
BASE_RPC_URL: The RPC endpoint for interacting with the Base blockchain (mainnet or Sepolia).
PORT: The port the HTTP server will listen on.
Usage
Start the server:
npm start
This will start the MCP server and begin watching for USDC deposits to the configured SERVER_DEPOSIT_ADDRESS.
Payment System Overview
This server uses a pre-pay credit system verified via cryptographic signatures. Clients fetch the payment capabilities separately after connecting.
1. Connect: Client connects to the server.
2. Fetch Capabilities: Client calls the payments/getCapabilities method to receive:
The URI of the resource providing deposit information (e.g., mcp-pay://server/payment/info).
The name of the tool used for checking balances (e.g., payments_getBalance).
A list of tools that require payment and their associated cost (as strings).
3. Deposit Info: Clients read the deposit info resource (URI obtained from capabilities) to get the server's USDC deposit address.
4. Credit: Clients send USDC (on the configured network) to the deposit address. The server monitors this address and credits the sender's account in its internal ledger.
5. Paid Tool Usage: When a client calls a tool identified as paid in the capabilities:
It must include __payer (its 0x... address) and __signature (ECDSA signature of the canonical request) in the params.arguments.
The server's central middleware verifies the signature and checks the payer's balance against the tool's cost before executing the tool logic.
If verification succeeds, the tool executes. If the tool execution is successful, the cost is deducted from the payer's balance.
6. Balance Check: Clients use the balance check tool (name obtained from capabilities) with their payerAddress as an argument. This tool does not require a signature.
Available Endpoints
- POST /mcp - For client requests to the server (requires mcp-session-id header). Handles general MCP methods and payments/getCapabilities.
- GET /mcp - For SSE (Server-Sent Events) stream (requires mcp-session-id header).
Payment Capabilities (Exposed via payments/getCapabilities)
- Deposit Info Resource URI: mcp-pay://server/payment/info (by default)
- Balance Check Tool: payments_getBalance (by default)
- Paid Tools (Example):
- greet: 0.05 USDC (by default)
- (Others can be configured)*
Available Tools
- greet: A simple greeting tool (Requires payment by default).
- payments_getBalance: Returns the credit balance for the calling wallet (Free).
Available Resources
- mcp-pay://server/payment/info: Returns the server's deposit address.
Development
Build the TypeScript code:
npm run build
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.



