Skip to main content
Glama
pay-mcp
by MonadWorks

Pay-MCP šŸ’ø

MCP server for USDC payments on Base — Enable any Claude Code agent to send and receive payments.


šŸŽÆ Overview

Pay-MCP is a Model Context Protocol (MCP) server that wraps USDC payment capabilities on the Base blockchain. It allows AI agents (like Claude Code) to:

  • šŸ’° Check USDC balances — Query any wallet's USDC balance

  • šŸ“¤ Send USDC payments — Transfer USDC to any address

  • šŸ“„ Generate payment requests — Create payment links with deep linking support

  • šŸ“œ View transaction history — List recent sent/received transfers


Related MCP server: @true402.dev/mcp-server

šŸ—ļø Architecture

ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”
│                         Your Computer                           │
│  ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”     stdio      ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”   │
│  │   Claude Code   │◄──────────────►│      Pay-MCP         │   │
│  │  (MCP Client)   │   JSON-RPC     │    (MCP Server)      │   │
│  ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜                │                      │   │
│                                     │  ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”  │   │
│                                     │  │  PayWallet     │  │   │
│                                     │  │  ā”œā”€ viem       │  │   │
│                                     │  │  └─ ERC-20 ABI │  │   │
│                                     │  ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜  │   │
│                                     ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”¬ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜   │
ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”¼ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜
                                                 │ HTTPS/RPC
                                                 ā–¼
                                     ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”
                                     │    Base Blockchain   │
                                     │  ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”  │
                                     │  │  USDC Contract │  │
                                     │  │  (Circle)      │  │
                                     │  ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜  │
                                     ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜

šŸš€ Quick Start

Installation

# Clone the repository
git clone https://github.com/koriyoshi2041/pay-mcp.git
cd pay-mcp

# Install dependencies
npm install

# Build
npm run build

Configuration

  1. Copy the example environment file:

cp .env.example .env
  1. Edit .env with your private key:

# Required: Your wallet's private key
PRIVATE_KEY=your_private_key_here

# Optional: Network (mainnet or testnet)
NETWORK=mainnet

āš ļø Security Warning: Never commit your .env file or share your private key!

Add to Claude Code

Add this to your Claude Code MCP settings:

Location: ~/.claude/claude_desktop_config.json (macOS/Linux) or via Claude Code settings

{
  "mcpServers": {
    "pay-mcp": {
      "command": "node",
      "args": ["/path/to/pay-mcp/dist/index.js"],
      "env": {
        "PRIVATE_KEY": "your_private_key_here",
        "NETWORK": "mainnet"
      }
    }
  }
}

Alternative: Run directly with source:

{
  "mcpServers": {
    "pay-mcp": {
      "command": "npx",
      "args": ["tsx", "/path/to/pay-mcp/src/index.ts"],
      "env": {
        "PRIVATE_KEY": "your_private_key_here",
        "NETWORK": "mainnet"
      }
    }
  }
}

šŸ› ļø Tools

pay_balance

Check USDC balance for your wallet or any address.

Parameter

Required

Description

address

No

Address to check. Defaults to your wallet.

Example prompt:

Check my USDC balance

pay_send

Send USDC to an address.

Parameter

Required

Description

to

Yes

Recipient address (0x...)

amount

Yes

Amount in USDC (e.g., "10.50")

memo

No

Note for this payment

Example prompt:

Send 25 USDC to 0x742d35Cc6634C0532925a3b844Bc9e7595f8d123 for "Coffee subscription"

pay_request

Generate a payment request link.

Parameter

Required

Description

amount

Yes

Amount to request in USDC

memo

No

Description for the request

Example prompt:

Create a payment request for 50 USDC for "Consulting services"

pay_history

View recent USDC transactions.

Parameter

Required

Description

limit

No

Number of transactions (default: 20, max: 100)

Example prompt:

Show my last 10 USDC transactions

šŸ’» Development

Project Structure

pay-mcp/
ā”œā”€ā”€ src/
│   ā”œā”€ā”€ index.ts      # MCP server entry point
│   ā”œā”€ā”€ config.ts     # Configuration and constants
│   ā”œā”€ā”€ wallet.ts     # Blockchain interaction layer (viem)
│   └── tools.ts      # MCP tool definitions
ā”œā”€ā”€ test/
│   └── test.ts       # Test script
ā”œā”€ā”€ dist/             # Compiled output
ā”œā”€ā”€ .env.example      # Environment template
ā”œā”€ā”€ package.json
ā”œā”€ā”€ tsconfig.json
└── README.md

Commands

# Build TypeScript
npm run build

# Run in development mode
npm run dev

# Run tests (uses testnet)
npm test

# Clean build output
npm run clean

Running Tests

# Run with auto-generated test wallet
npm test

# Run with your own testnet wallet
PRIVATE_KEY=your_testnet_key npm test

🌐 Network Configuration

Mainnet (Default)

Setting

Value

Chain

Base (Chain ID: 8453)

USDC Contract

0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913

Explorer

https://basescan.org

Testnet

Set NETWORK=testnet in your .env:

Setting

Value

Chain

Base Sepolia (Chain ID: 84532)

USDC Contract

0x036CbD53842c5426634e7929541eC2318f3dCF7e

Explorer

https://sepolia.basescan.org

šŸ’” To get testnet USDC, use the Base Sepolia Faucet.


āš™ļø Environment Variables

Variable

Required

Default

Description

PRIVATE_KEY

āœ… Yes

-

Wallet private key (without 0x prefix)

NETWORK

No

mainnet

mainnet or testnet

BASE_RPC_URL

No

Public RPC

Custom RPC endpoint

GAS_MULTIPLIER

No

1.1

Gas estimate multiplier

MAX_GAS_LIMIT

No

100000

Maximum gas limit


šŸ”’ Security Considerations

  1. Private Key Storage:

    • Never commit your private key to version control

    • Consider using environment variables or a secrets manager

    • For production, use hardware wallets or key management services

  2. Transaction Safety:

    • Always test on testnet first

    • Double-check recipient addresses

    • Consider implementing daily/per-transaction limits

  3. Network Selection:

    • Verify network configuration before mainnet transactions

    • Use testnet for development and testing


šŸ”§ Tech Stack

Component

Technology

Runtime

Node.js 18+

Language

TypeScript 5.7

MCP SDK

@modelcontextprotocol/sdk

Blockchain

viem

Validation

zod


šŸ¤ Contributing

Contributions are welcome! Please:

  1. Fork the repository

  2. Create a feature branch (git checkout -b feature/amazing-feature)

  3. Make your changes

  4. Run tests (npm test)

  5. Commit your changes (git commit -m 'Add amazing feature')

  6. Push to the branch (git push origin feature/amazing-feature)

  7. Open a Pull Request


šŸ“„ License

MIT License - see LICENSE for details.


šŸ™ Acknowledgments


Available Tools

4 tools
pay_balanceA

Check USDC balance on Base. Returns the balance for your wallet or a specified address.

Inputs: address.

pay_historyA

Get recent USDC transaction history on Base. Shows both sent and received transfers.

Inputs: limit.

pay_requestA

Generate a payment request. Creates a payment link that others can use to send you USDC.

Inputs: amount (required), memo.

pay_sendB

Send USDC payment on Base. Transfers USDC to the specified address.

Inputs: to (required), amount (required), memo.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4/5.0

    Scored across 4 tools

    Disambiguation5/5

    Each tool has a distinct purpose: balance checking, sending, requesting, and viewing history. There is no overlap or ambiguity between them.

    Naming Consistency4/5

    All tools share the 'pay_' prefix and use snake_case, which is consistent. However, 'pay_balance' and 'pay_history' are noun-based while 'pay_send' is verb-based, a minor deviation from a pure verb_noun pattern.

    Tool Count5/5

    Four tools cover the core functionality of a simple USDC payment server without bloat. The count is well-scoped for the domain.

    Completeness5/5

    The toolset covers the essential lifecycle: checking balance, sending payments, requesting payments, and viewing transaction history. No critical operations are missing for a basic payment server.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers