import express from "express";
import { randomUUID } from "node:crypto";
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
import { express as faremeter } from "@faremeter/middleware";
import { solana } from "@faremeter/info";
const app = express();
app.use(express.json());
const sessions = new Map();
// Create payment middleware
const paywalledMiddleware = await faremeter.createMiddleware({
facilitatorURL: "https://facilitator.corbits.dev",
accepts: [
{
...solana.x402Exact({
network: "devnet",
asset: "USDC",
amount: 100, // $0.0001 per request
payTo: "YOUR_WALLET_ADDRESS",
}),
resource: "http://localhost:3000/mcp/premium",
description: "Premium MCP tools",
},
],
});
// Premium MCP endpoint with payment
app.post(
"/mcp/premium",
(req, res, next) => {
// Bypass payment for MCP protocol methods
const bypassMethods = [
"initialize",
"initialized",
"notifications/initialized",
"tools/list",
"prompts/list",
"resources/list",
];
if (req.body?.method && bypassMethods.includes(req.body.method)) {
next();
} else {
paywalledMiddleware(req, res, next);
}
},
async (req, res) => {
const sessionId = req.headers["mcp-session-id"];
let transport = sessionId ? sessions.get(sessionId) : undefined;
// Create new session on initialize
if (!transport && req.body?.method === "initialize") {
transport = new StreamableHTTPServerTransport({
sessionIdGenerator: () => randomUUID(),
onsessioninitialized: (sessionId) => {
sessions.set(sessionId, transport);
},
enableDnsRebindingProtection: true,
allowedHosts: ["127.0.0.1", "localhost", "localhost:3000"],
});
transport.onclose = () => {
if (transport.sessionId) sessions.delete(transport.sessionId);
};
const server = new McpServer({
name: "my-premium-server",
version: "1.0.0",
});
// Register your tools
server.registerTool(
"get_data",
{
title: "Get premium data",
description: "Returns premium data",
inputSchema: {
type: "object",
properties: {
query: { type: "string" },
},
},
},
async ({ query }) => {
return {
content: [{ type: "text", text: `Premium result for: ${query}` }],
};
}
);
await server.connect(transport);
} else if (!transport) {
res.status(400).json({ error: "Invalid session" });
return;
}
await transport.handleRequest(req, res, req.body);
}
);
// Session management
const handleSession = async (req, res) => {
const sessionId = req.headers["mcp-session-id"];
const transport = sessionId ? sessions.get(sessionId) : undefined;
if (!transport) {
res.status(400).send("Invalid session");
return;
}
await transport.handleRequest(req, res);
};
app.get("/mcp/premium", handleSession);
app.delete("/mcp/premium", handleSession);
app.listen(3000, () => {
console.log("Paywalled MCP server running on http://localhost:3000/mcp/premium");
});