支付协议服务器

MCP Pay Server 是一个独立的模型上下文协议(MCP)服务器实现,支持HTTP+SSE双向通信,并包含基于USDC的预支付信用系统。

  • by nexiansOrg
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 nexiansorg/mcp-pay-server

使用说明

MCP支付服务器

具有HTTP+SSE传输的模型上下文协议(MCP)服务器的独立实现,包括基本的预付费信用系统。

特性

  • 显示MCP工具、资源和提示
  • 支持HTTP+SSE双向通信
  • 在Base(或Base Sepolia)上使用USDC存款实施简单的支付层
  • 使用 Express、TypeScript、Viem 和 Zod 构建

设置

  1. 安装依赖项:

    npm install
    
  2. 配置环境变量: 创建一个 .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.

支付系统概述

此服务器使用通过加密签名验证的预付费信用系统。客户端在连接后单独获取支付功能。

  1. 连接: 客户端连接到服务器。
  2. 获取功能: 客户致电 payments/getCapabilities 接收方法:
    • 提供存款信息的资源的URI(例如。, mcp-pay://server/payment/info).
    • 用于检查余额的工具的名称(例如。, payments_getBalance).
    • 需要付款的工具及其相关成本(以字符串形式)的列表。
  3. 存款信息: 客户端读取存款信息资源(从功能中获得的URI)以获取服务器的USDC存款地址。
  4. 学分: 客户将USDC(在配置的网络上)发送到存款地址。服务器监控此地址,并将发件人的帐户记入其内部分类账。
  5. 付费工具使用: 当客户调用功能中标识为付费的工具时:
    • 它 必须 包含 __payer (其 0x... 地址)和 __signature (规范请求的ECDSA签名) params.arguments.
    • 服务器的中央中间件验证签名,并根据工具的成本检查付款人的余额 之前 执行工具逻辑。
    • 如果验证成功,则执行该工具。如果工具执行成功,则从付款人的余额中扣除成本。
  6. 余额检查: 客户使用余额检查工具(名称从功能中获得) 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