MCP Pay Server

by nexiansOrg

201 downloads
Not rated
GitHub

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

- 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
No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.