MCP支付服务器
具有HTTP+SSE传输的模型上下文协议(MCP)服务器的独立实现,包括基本的预付费信用系统。
特性
- 显示MCP工具、资源和提示
- 支持HTTP+SSE双向通信
- 在Base(或Base Sepolia)上使用USDC存款实施简单的支付层
- 使用 Express、TypeScript、Viem 和 Zod 构建
设置
- 安装依赖项:
npm install- 配置环境变量:
创建一个 .env 根目录中的文件(mcp-pay-server/.env)具有以下内容:
# 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:公众 0x... 服务器应监控的USDC存款地址。 - BASE_RPC_URL:用于与Base区块链(主网或Sepolia)交互的RPC端点。 - PORT:HTTP服务器将侦听的端口。
用法
启动服务器:
npm start这将启动MCP服务器,并开始监视配置的USDC存款 SERVER_DEPOSIT_ADDRESS.
支付系统概述
此服务器使用通过加密签名验证的预付费信用系统。客户端在连接后单独获取支付功能。
- 连接: 客户端连接到服务器。
- 获取功能: 客户致电
payments/getCapabilities接收方法:
- 提供存款信息的资源的URI(例如。, mcp-pay://server/payment/info). - 用于检查余额的工具的名称(例如。, payments_getBalance). - 需要付款的工具及其相关成本(以字符串形式)的列表。
- 存款信息: 客户端读取存款信息资源(从功能中获得的URI)以获取服务器的USDC存款地址。
- 学分: 客户将USDC(在配置的网络上)发送到存款地址。服务器监控此地址,并将发件人的帐户记入其内部分类账。
- 付费工具使用: 当客户调用功能中标识为付费的工具时:
- 它 *必须* 包含 __payer (其 0x... 地址)和 __signature (规范请求的ECDSA签名) params.arguments. - 服务器的中央中间件验证签名,并根据工具的成本检查付款人的余额 *之前* 执行工具逻辑。 - 如果验证成功,则执行该工具。如果工具执行成功,则从付款人的余额中扣除成本。
- 余额检查: 客户使用余额检查工具(名称从功能中获得)
payerAddress作为一个论点。此工具不需要签名。
可用端点
POST /mcp-对于客户端对服务器的请求(需要mcp-session-id头球处理一般MCP方法和payments/getCapabilities.GET /mcp-对于SSE(服务器发送事件)流(需要mcp-session-id头球
支付能力(通过支付/getCapabilities暴露)
- 存款信息资源URI:
mcp-pay://server/payment/info(默认情况下) - 平衡检查工具:
payments_getBalance(默认情况下) - 付费工具(示例):
- greet:0.05美元(默认) - *(其他可配置)*
可用工具
greet:一个简单的问候工具(默认需要付款)。payments_getBalance:返回呼叫钱包的信用余额(免费)。
可用资源
mcp-pay://server/payment/info:返回服务器的存款地址。
发展
构建TypeScript代码:
npm run build