npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

mcpay

v0.1.17

Published

SDK and CLI for MCPay functionality - MCP servers with payment capabilities

Readme

MCPay SDK & CLI

A TypeScript SDK and CLI for connecting to MCP (Model Context Protocol) servers with payment capabilities via the x402 protocol. It can:

  • 🔌 Connect to multiple MCP servers at once (proxy)
  • 💳 Handle 402 Payment Required automatically (x402)
  • 📦 Provide programmatic APIs for clients and servers
  • 🚀 Support both EVM and SVM networks for payments

Quick start

Install the CLI globally or use npx:

npm i -g mcpay
# or
npx mcpay connect -u "https://api.example.com/mcp" -a "<YOUR_API_KEY>"

Start a payment-aware stdio proxy to one or more MCP servers:

# Using an EVM private key (Payment transport)
mcpay connect -u "https://api.example.com/mcp" --evm 0x1234... --evm-network base-sepolia

# Using an SVM secret key (Payment transport)
mcpay connect -u "https://api.example.com/mcp" --svm <SECRET_KEY> --svm-network solana-devnet

# Using an API key only (HTTP transport)
mcpay connect -u "https://api.example.com/mcp" -a "$API_KEY"

Tip: You can pass multiple URLs: -u "https://api1/mcp,https://api2/mcp".

Installation

SDK (project dependency)

npm i mcpay
# or
pnpm i mcpay
# or
yarn add mcpay
# or
bun add mcpay

CLI

Commands

  • mcpay connect – start an MCP stdio proxy to remote servers with payment capabilities
  • mcpay version – show version information

Examples

# Basic (env vars)
export SERVER_URLS="https://api.example.com/mcp"
export EVM_PRIVATE_KEY="0x1234..."
mcpay connect -u "$SERVER_URLS"

# Multiple servers + API key header forwarded to remotes
mcpay connect -u "https://api1/mcp,https://api2/mcp" -a "$API_KEY"

# Using EVM wallet with specific network
mcpay connect -u "https://api.example.com/mcp" --evm 0x1234... --evm-network base

# Using SVM wallet
mcpay connect -u "https://api.example.com/mcp" --svm <SECRET_KEY> --svm-network solana

# Set maximum payment amount
mcpay connect -u "https://api.example.com/mcp" --evm 0x1234... --max-atomic 100000

Options

| Option | Description | Default | |--------|-------------|---------| | -u, --urls <urls> | Comma-separated list of MCP server URLs | Required | | -a, --api-key <key> | API key for authentication | API_KEY env | | --evm <privateKey> | EVM private key (0x...) | EVM_PRIVATE_KEY env | | --svm <secretKey> | SVM secret key (base58/hex) | SVM_SECRET_KEY env | | --evm-network <network> | EVM network (base-sepolia, base, avalanche-fuji, avalanche, iotex, sei, sei-testnet) | base-sepolia | | --svm-network <network> | SVM network (solana-devnet, solana) | solana-devnet | | --max-atomic <value> | Max payment in atomic units | X402_MAX_ATOMIC env |

Behavior:

  • If --evm or --svm is provided, the proxy uses Payment transport (x402) and can settle 402 challenges automatically.
  • If only --api-key is provided, the proxy uses standard HTTP transport and forwards the bearer token.
  • API keys can only be used with MCPay proxy URLs (mcpay.tech/v1/mcp/*).

Financial Server Integration Guide

MCP Client Integration

Connect to AI assistants like Claude, Cursor, and Windsurf.

One-Click Install for Cursor

If available on the website, use the "Install in Cursor" action to auto-generate an API key and configure your Cursor MCP settings.

Manual Configuration with API Key (Recommended)

Create an API key in your account settings and add this to your MCP client config (e.g., claude_desktop_config.json). Replace mcpay_YOUR_API_KEY_HERE with your real key.

{
  "mcpServers": {
    "Financial Server": {
      "command": "npx",
      "args": [
        "mcpay",
        "connect",
        "--urls",
        "https://mcpay.tech/v1/mcp/d67aaf0d-fcc8-4136-948d-c470abe41ac0",
        "--api-key",
        "mcpay_YOUR_API_KEY_HERE"
      ]
    }
  }
}

Manual Configuration with EVM Private Key (Alternative)

Use a wallet private key instead of an API key. Replace with your own private key (handle securely).

{
  "mcpServers": {
    "Financial Server": {
      "command": "npx",
      "args": [
        "mcpay",
        "connect",
        "--urls",
        "https://mcpay.tech/v1/mcp/d67aaf0d-fcc8-4136-948d-c470abe41ac0",
        "--evm",
        "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
        "--evm-network",
        "base-sepolia"
      ]
    }
  }
}

Manual Configuration with SVM Secret Key (Alternative)

Use a Solana secret key for SVM networks.

{
  "mcpServers": {
    "Financial Server": {
      "command": "npx",
      "args": [
        "mcpay",
        "connect",
        "--urls",
        "https://mcpay.tech/v1/mcp/d67aaf0d-fcc8-4136-948d-c470abe41ac0",
        "--svm",
        "YOUR_SECRET_KEY",
        "--svm-network",
        "solana-devnet"
      ]
    }
  }
}

MCPay CLI (Direct Connection)

# Using API Key (recommended)
npx mcpay connect --urls https://mcpay.tech/v1/mcp/d67aaf0d-fcc8-4136-948d-c470abe41ac0 --api-key mcpay_YOUR_API_KEY_HERE

# Using EVM Private Key (alternative)
npx mcpay connect --urls https://mcpay.tech/v1/mcp/d67aaf0d-fcc8-4136-948d-c470abe41ac0 --evm 0xYOUR_PRIVATE_KEY --evm-network base-sepolia

# Using SVM Secret Key (alternative)
npx mcpay connect --urls https://mcpay.tech/v1/mcp/d67aaf0d-fcc8-4136-948d-c470abe41ac0 --svm YOUR_SECRET_KEY --svm-network solana-devnet

Direct API Integration (JavaScript/TypeScript SDK)

import { Client } from '@modelcontextprotocol/sdk/client/index.js'
import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js'
import { withX402Client } from 'mcpay/client'
import { createSigner } from 'x402/types'

// Initialize signer from private key
const evmSigner = await createSigner('base-sepolia', '0x1234567890abcdef...')
const url = new URL('https://mcpay.tech/v1/mcp/d67aaf0d-fcc8-4136-948d-c470abe41ac0')

// Create transport
const transport = new StreamableHTTPClientTransport(url)

// Initialize MCP client
const client = new Client(
  { name: 'my-mcp-client', version: '1.0.0' },
  { capabilities: {} }
)

await client.connect(transport)

// Wrap client with X402 payment capabilities
const paymentClient = withX402Client(client, {
  wallet: { evm: evmSigner },
  maxPaymentValue: BigInt(0.1 * 10 ** 6), // 0.1 USDC max payment
})

// Use tools with automatic payment handling
const tools = await paymentClient.listTools()
console.log('Available tools:', tools)

SDK usage

Programmatic stdio proxy

import { startStdioServer, createServerConnections, ServerType } from 'mcpay';
import { createSigner } from 'x402/types';

// Create signer for EVM network
const evmSigner = await createSigner('base-sepolia', '0x123...');
const serverConnections = createServerConnections(
  ['https://api.example.com/mcp'],
  ServerType.HTTPStream
);

const x402Config = {
  wallet: { evm: evmSigner },
  maxPaymentValue: BigInt(0.1 * 10 ** 6) // 0.10 USDC
};

await startStdioServer({ 
  serverConnections, 
  x402ClientConfig: x402Config 
});

Client: X402 Payment Wrapper

import { withX402Client } from 'mcpay/client';
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
import { createSigner } from 'x402/types';

// Create signer
const evmSigner = await createSigner('base-sepolia', '0x123...');

// Initialize MCP client
const client = new Client(
  { name: 'my-app', version: '1.0.0' }, 
  { capabilities: {} }
);

const transport = new StreamableHTTPClientTransport(new URL('https://api.example.com/mcp'));
await client.connect(transport);

// Wrap with payment capabilities
const paymentClient = withX402Client(client, {
  wallet: { evm: evmSigner },
  maxPaymentValue: BigInt(0.1 * 10 ** 6) // 0.10 USDC
});

Protecting your MCP server with payments

Use createMcpPaidHandler to require a valid X-PAYMENT header (validated via x402) before your tools run. Works in serverless/edge-compatible runtimes.

import { createMcpPaidHandler } from 'mcpay/handler';
import { z } from 'zod';

const handler = createMcpPaidHandler(async (server) => {
  server.paidTool(
    'hello',
    'Say hello to someone',
    { price: 0.05, currency: 'USD' },
    { name: z.string().describe('Your name') },
    {},
    async ({ name }) => ({ 
      content: [{ type: 'text', text: `Hello, ${name}!` }] 
    })
  );
}, {
  recipient: {
    'base-sepolia': '0x1234567890abcdef1234567890abcdef12345678',
    'solana-devnet': 'So11111111111111111111111111111111111111112'
  },
  facilitator: {
    url: "FACILITATOR_URL"
  }
});

// Next.js (route handlers)
export { handler as GET, handler as POST, handler as DELETE };

Notes:

  • server.paidTool accepts a price object { price, currency } and recipient addresses for different networks.
  • When no valid payment is provided, the handler returns structured payment requirements that clients (like withX402Client) can satisfy.
  • The facilitator configuration connects to MCPay services for payment verification and settlement.

Environment variables

CLI:

  • EVM_PRIVATE_KEY: Hex private key for EVM x402 signing
  • SVM_SECRET_KEY: Secret key for SVM x402 signing
  • SERVER_URLS: Comma-separated MCP endpoints
  • API_KEY: Optional, forwarded as Authorization: Bearer <API_KEY> to remotes
  • X402_MAX_ATOMIC: Maximum payment amount in atomic units
  • EVM_NETWORK: EVM network (base-sepolia, base, avalanche-fuji, avalanche, iotex, sei, sei-testnet)
  • SVM_NETWORK: SVM network (solana-devnet, solana)

Server (payment auth):

  • MCPAY_API_URL (default https://mcpay.fun)
  • MCPAY_API_KEY

Transports

  • HTTPStream – standard streaming HTTP transport
  • withX402Client – wraps HTTP transport with automatic 402 Payment Required handling using x402 and your wallet

Payment protocol (x402)

On a 402 Payment Required response, MCPay will:

  1. Parse the server-provided requirements
  2. Create and sign an authorization with your wallet (EVM or SVM)
  3. Retry the original request with X-PAYMENT header

Supported networks:

  • EVM: Base Sepolia, Base, Avalanche Fuji, Avalanche, IoTeX, Sei, Sei Testnet
  • SVM: Solana Devnet, Solana

Default USDC addresses are built-in per chain.

Troubleshooting

  • "Payment amount exceeds maximum allowed": increase maxPaymentValue in your x402ClientConfig.
  • Wrong chain/network: ensure your wallet/client network matches the server requirement.
  • Invalid private key: ensure EVM keys are 0x-prefixed 64-hex characters.
  • API key errors: ensure API keys are only used with MCPay proxy URLs (mcpay.tech/v1/mcp/*).

Development

pnpm i
pnpm run build
# Dev watch
pnpm run dev

Dependencies

  • @modelcontextprotocol/sdk - MCP protocol implementation
  • x402 - Payment protocol implementation
  • x402-fetch - Fetch integration for x402
  • viem - EVM blockchain interactions
  • commander - CLI framework
  • zod - Schema validation
  • mcp-handler - MCP server handler utilities

Security

  • Never commit private keys. Prefer environment variables and scoped, low-value keys for development.
  • Use the maxPaymentValue guard in clients and per-tool pricing in servers.

License

MIT

Contributing

Issues and PRs are welcome.

Support

Please open an issue in the repository.