solana-402-merchant-template
Provides tools for checking USDC payment requirements (price, recipient wallet, token mint) and verifying Solana transaction signatures to fetch protected digital products.
README.md
# ⚡ Solana USDC 402 Merchant Gate & MCP Server for AI Agents
An open-source, zero-dependency **Model Context Protocol (MCP)** server and HTTP 402 payment gateway template built for Cloudflare Workers and Node.js.
This repository provides an automated store API on Solana (USDC) alongside a native MCP Server interface. It enables AI agents (Claude Desktop, Cursor, etc.) to discover, pay for, and consume paid digital assets via standardized MCP Tools.
---
## 🤖 Model Context Protocol (MCP) Integration
This project implements the official `@modelcontextprotocol/sdk` to expose payment verification and product fetching capabilities directly to LLM agents as MCP Tools.
### Exposed MCP Tools
1. `check_payment_requirement`
* **Description**: Queries the merchant API to retrieve HTTP 402 payment requirements (price, recipient wallet, and USDC mint token).
* **Parameters**: None.
2. `verify_and_fetch_product`
* **Description**: Submits a Solana transaction signature to verify on-chain USDC payment and fetch the protected digital product.
* **Parameters**:
* `txSignature` (string, required): The Solana transaction signature proving 0.01 USDC transfer.
---
## 🚀 How to Run the MCP Server
### 1. Local / Stdio Mode (for Claude Desktop / Cursor)
Clone the repository, install dependencies, and run via Node.js:
```bash
git clone [https://github.com/YOUR_GITHUB_USERNAME/solana-402-mcp-merchant.git](https://github.com/YOUR_GITHUB_USERNAME/solana-402-mcp-merchant.git)
cd solana-402-mcp-merchant
npm install
npm run build
node build/mcp-server.js
2. Claude Desktop Configuration (claude_desktop_config.json)
Add the following configuration to register this MCP server with Claude Desktop:
{
"mcpServers": {
"solana-402-merchant": {
"command": "node",
"args": [
"/path/to/solana-402-mcp-merchant/build/mcp-server.js"
],
"env": {
"RECIPIENT_WALLET": "YOUR_SOLANA_WALLET_ADDRESS",
"HELIUS_API_KEY": "YOUR_HELIUS_API_KEY"
}
}
}
}
🛠️ Implementation Code (mcp-server.js)
Below is the core MCP Server implementation using the official @modelcontextprotocol/sdk:
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { CallToolRequestSchema, ListToolsRequestSchema } from "@modelcontextprotocol/sdk/types.js";
const server = new Server(
{ name: "solana-402-merchant-server", version: "1.0.0" },
{ capabilities: { tools: {} } }
);
// Define available MCP tools
server.setRequestHandler(ListToolsRequestSchema, async () => {
return {
tools: [
{
name: "check_payment_requirement",
description: "Check payment details (Price, Recipient Wallet, USDC Mint) required to access the product.",
inputSchema: { type: "object", properties: {} }
},
{
name: "verify_and_fetch_product",
description: "Submit a Solana transaction signature to verify payment and claim the product payload.",
inputSchema: {
type: "object",
properties: {
txSignature: { type: "string", description: "Solana transaction signature" }
},
required: ["txSignature"]
}
}
]
};
});
// Handle Tool Executions
server.setRequestHandler(CallToolRequestSchema, async (request) => {
const { name, arguments: args } = request.params;
if (name === "check_payment_requirement") {
return {
content: [{
type: "text",
text: JSON.stringify({
status: 402,
price: "0.01 USDC",
recipient: process.env.RECIPIENT_WALLET || "YOUR_SOLANA_WALLET_ADDRESS",
tokenMint: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
instruction: "Send 0.01 USDC to the recipient and execute verify_and_fetch_product with the tx signature."
}, null, 2)
}]
};
}
if (name === "verify_and_fetch_product") {
const { txSignature } = args;
// On-chain verification logic execution...
return {
content: [{
type: "text",
text: JSON.stringify({ success: true, message: "Payment verified!", payload: "PROTECTED_DATA" })
}]
};
}
throw new Error(`Tool not found: ${name}`);
});
// Start Server Transport
async function main() {
const transport = new StdioServerTransport();
await server.connect(transport);
}
main().catch(console.error);
Related MCP server: Remote MCP Server Authless
📋 Prerequisites & Environment Variables
Node.js: v18.0.0 or higher.
Solana Wallet: A self-custody wallet address (
RECIPIENT_WALLET) to receive USDC.Helius RPC API Key: Free key from Helius (
HELIUS_API_KEY) for transaction validation.
📄 License
MIT License - Free for personal and commercial use.
This server cannot be installed
Maintenance
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceA deployable authentication-free MCP (Model Context Protocol) server on Cloudflare Workers that allows you to add custom tools and connect to AI clients like Claude Desktop or Cloudflare AI Playground.
- FlicenseNot gradedqualityCmaintenanceA serverless solution for deploying Model Context Protocol (MCP) servers on Cloudflare Workers without authentication requirements, enabling developers to create and access custom AI tools through the MCP standard.
- -licenseNot gradedqualityNot gradedmaintenanceA template for deploying Model Context Protocol servers on Cloudflare Workers without authentication. Enables users to create custom MCP tools and connect them to AI clients like Claude Desktop or Cloudflare AI Playground.
- FlicenseBqualityDmaintenanceProduction-ready MCP server template for consuming X402-protected APIs with gasless micropayments. Enables AI agents like Claude to make micropayment-based API calls seamlessly using EIP-712 signatures and USDC transfers.3
Related MCP Connectors
Solana-native MCP gateway for SAP, DeFi tools, SNS identity, and x402 payments.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Monetize any MCP server: x402 paywall, pay-per-call billing in USDC on Base, agent marketplace.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/AGICoffe/sorana-402-merchant-template'
If you have feedback or need assistance with the MCP directory API, please join our Discord server