返回市场
比特币支付服务器-mcp

比特币支付服务器-mcp

作者:Abhijay0072 星标更新:2025-09-13

项目介绍

BTCPayServer 模型上下文协议服务器(测试版)

一个全面的模型上下文协议(MCP)服务器,用于与BTCPayServer集成,提供支付处理、商店管理、用户管理、webhook处理等工具,并覆盖完整的API。

工具参考

BTCPayServer MCP服务器提供了一组精简的工具,用于与BTCPayServer API进行交互:

工具描述主要用途
get_service_info发现服务可用的方法探索和发现
get_method_info获取详细参数要求请求准备
btcpay_request执行对BTCPayServer的API调用执行操作

与AI助手的集成

Claude Desktop 集成

对于Claude Desktop集成,在您的claude_desktop_config.json中添加以下配置:

{
  "mcpServers": {
    "btcpayserver-mcp": {
      "command": "node",
      "args": ["path/to/btcpayserver-mcp/dist/index.js"],
      "env": {
        "BTCPAY_BASE_URL": "https://your-btcpay-instance.com",
        "BTCPAY_API_KEY": "your_api_key_here",
        "BTCPAY_STORE_ID": "your_default_store_id"
      }
    }
  }
}

服务目录

BTCPayServer MCP提供了访问BTCPayServer完整API生态系统的能力。请参阅BTCPayServer API 文档以获取每个服务的详细信息:

支付服务

服务描述
invoices创建、管理和跟踪比特币发票以支付
payment-requests创建捐赠或定期账单的付款请求
lightning-internal管理内部闪电网络操作
lightning-store商店级别的闪电网络配置
lightning-address闪电地址管理和设置

商店管理

服务描述
stores商店创建、配置和管理
stores-email配置和管理商店电子邮件设置和SMTP
stores-payment-methods管理商店可用的支付方式
stores-payout-processors配置自动付款处理
stores-payouts管理和处理商店付款
stores-rates汇率配置和管理
stores-users商店用户访问和权限管理
stores-wallet商店钱包管理和操作

用户及访问管理

服务描述
users用户账户管理和管理
api-keysAPI密钥创建和权限管理
authorizationOAuth和授权流程管理

集成与自动化

服务描述
webhooks实时事件通知和webhook管理
notifications系统通知和警报
appsBTCPayServer应用集成和插件
pull-payments拉取支付请求和退款管理

系统

服务描述
server-info服务器状态、版本和配置信息

使用模式

为了通过MCP与BTCPayServer API进行最佳交互:

1. 发现: 使用get_service_info探索可用方法

get_service_info(serviceName: "invoices")

2. 理解: 使用get_method_info了解参数要求

get_method_info(serviceName: "invoices", methodName: "create")

3. 执行: 使用btcpay_request执行操作

btcpay_request(serviceName: "invoices", methodName: "create", parameters: {storeId: "your-store-id", amount: "10.00", currency: "USD"})

安装

  1. 克隆此仓库:
git clone <repository-url>
cd btcpayserver-mcp
  1. 安装依赖项:
npm install
  1. 构建项目:
npm run build

配置

MCP服务器需要以下环境变量:

  • BTCPAY_BASE_URL - 您的BTCPayServer实例URL(例如,https://btcpay.example.com
  • BTCPAY_API_KEY - 您的BTCPayServer API密钥
  • BTCPAY_STORE_ID - (可选)默认商店ID用于操作

设置BTCPayServer API密钥

  1. 登录到您的BTCPayServer实例
  2. 转到账户管理账户API密钥
  3. 点击生成密钥
  4. 根据您的使用情况选择所需的权限:
    • 商店管理:btcpay.store.canmodifystoresettings
    • 付款请求:btcpay.store.cancreateinvoice
    • 用户管理:btcpay.user.canmodifyprofile
    • Webhook:btcpay.store.webhooks.canmodifywebhooks
    • 等等...
  5. 复制生成的API密钥

环境设置

在项目根目录下创建一个.env文件:

BTCPAY_BASE_URL=https://your-btcpay-instance.com
BTCPAY_API_KEY=your_api_key_here
BTCPAY_STORE_ID=your_default_store_id

或者直接设置环境变量:

export BTCPAY_BASE_URL=https://your-btcpay-instance.com
export BTCPAY_API_KEY=your_api_key_here
export BTCPAY_STORE_ID=your_default_store_id

使用

运行MCP服务器

npm start

对于开发:

npm run dev

开发和调试

使用MCP Inspector: MCP Inspector提供了一个可视界面用于测试:

# 构建项目
npm run build

# 使用BTCPayServer MCP服务器启动检查器
npx @modelcontextprotocol/inspector node dist/index.js

开发工作流:

  1. 克隆仓库
  2. 安装依赖项:npm install
  3. 启动开发模式:npm run build
  4. 运行服务器:node dist/index.js
  5. 使用MCP Inspector测试您的更改

MCP服务器提供了全面的错误处理:

  • 配置错误:缺少环境变量
  • API错误:BTCPayServer API通信问题
  • 验证错误:无效的输入参数
  • 认证错误:无效或已过期的API密钥

所有错误都经过正确格式化并带有描述性消息返回。

开发

项目结构

src/
├── index.ts              # 主MCP服务器实现
├── services/             # BTCPayServer服务实现
│   ├── base-service.ts   # 基础服务类
│   ├── invoices.ts       # 发票管理
│   ├── payment-requests.ts # 付款请求处理
│   ├── stores.ts         # 商店管理
│   ├── webhooks.ts       # Webhook管理
│   └── ...               # 其他服务模块
├── utils/
│   └── btcpay-client.ts  # BTCPayServer API客户端
└── types.ts              # TypeScript类型定义

构建

npm run build

在开发中运行

npm run dev

安全注意事项

  1. API密钥安全:切勿将API密钥提交到版本控制
  2. 环境变量:使用安全的环境变量管理
  3. Webhook密钥:始终使用webhook密钥进行验证
  4. HTTPS:确保BTCPayServer实例使用HTTPS
  5. 权限:为API密钥权限使用最小特权原则

BTCPayServer兼容性

此MCP服务器兼容BTCPayServer v1.7.0及更高版本。它使用官方的BTCPayServer REST API v1。

贡献

  1. 分叉仓库
  2. 创建功能分支
  3. 提交您的更改
  4. 推送到分支
  5. 创建拉取请求

许可证

MIT许可证 - 详情见LICENSE文件。

支持

对于问题和疑问:

  1. 查看BTCPayServer文档
  2. 查看API参考
  3. 在此仓库中打开问题

帮助我们改进这个MCP

**注意:**某些方法可能无法正常工作。请帮助我们通过报告需求和提出拉取请求来改进它们。此外,为了跟上最新的API版本,我们需要继续更新它。