mcpField
B
Binance MCP Server

Binance MCP Server

本地服务
github.com/py7hagoras金融数据515 周前更新

关于 Binance MCP Server

Binance MCP Server 将 Binance 交易所 API 接入 MCP,供 AI 助手查询行情、账户与钱包信息,并管理订单。它同时提供只读账户工具和下单、撤单等交易工具。

主要功能

  1. 01查询实时价格与市场数据
  2. 02查看账户、钱包及余额
  3. 03查询交易与订单状态
  4. 04创建和取消订单
  5. 05查看存款与提现记录

适用场景

  1. 01查看交易对价格和 K 线数据
  2. 02检查账户余额及 API 权限
  3. 03查询未完成订单或历史交易
  4. 04通过助手提交或取消交易订单

MCP 相关

该 MCP 服务向 MCP 客户端提供 Binance 市场、账户、钱包和交易工具。访问账户及执行交易需要设置 Binance API 凭据,并受 API 权限限制。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"binance-mcp-py7hagoras": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"build"
]
}
}
}
启动命令docker run -i --rm build

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocibuild

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Binance MCP 服务

一个模型上下文协议(MCP)服务,提供用于与 Binance 加密货币交易所 API 交互的工具。此服务允许 Claude 等 AI 助手访问实时加密货币数据,并代表你执行交易操作。

目录

概览

此 MCP 服务是 AI 助手与 Binance 加密货币交易所之间的桥梁。它提供的工具可让 AI 助手:

  • 查看当前加密货币价格
  • 查看账户余额和信息
  • 下买入和卖出订单

此服务实现了模型上下文协议,因此兼容 Cline 和 Claude Desktop。

先决条件

  • Node.js(v16 或更高版本)
  • npm 或 yarn
  • 拥有 API 访问权限的 Binance 账户
  • Cline CLI 或 Claude Desktop

安装

  1. 克隆此代码库:
git clone https://github.com/py7hagoras/binance-mcp.git
cd binance-mcp
  1. 安装依赖项:
npm install
  1. 构建项目:
npm run build

配置

此服务需要 Binance API 凭据才能运行。你需要将它们设置为环境变量:

  • BINANCE_API_KEY:你的 Binance API 密钥
  • BINANCE_API_SECRET:你的 Binance API 密钥密文
创建 Binance API 密钥
  1. 登录 Binance 账户
  2. 前往 API 管理
  3. 创建新的 API 密钥(如果要使用 place_order 工具,请考虑启用交易权限)
  4. 安全地保存 API 密钥和密钥密文

用法

与 Cline 搭配使用

Cline 是一个用于与 Claude 等 AI 模型交互的命令行界面。

  1. 如果尚未安装 Cline,请先安装:
npm install -g @cline-ai/cline
  1. 将 Binance API 凭据设置为环境变量:
# On Windows (Command Prompt)
set BINANCE_API_KEY=your_api_key
set BINANCE_API_SECRET=your_api_secret

# On Windows (PowerShell)
$env:BINANCE_API_KEY="your_api_key"
$env:BINANCE_API_SECRET="your_api_secret"

# On macOS/Linux
export BINANCE_API_KEY=your_api_key
export BINANCE_API_SECRET=your_api_secret
  1. 启动 Cline 并使用 Binance MCP 服务:
cline --mcp-server "node path/to/binance-server/build/index.js"
  1. 现在,你可以在 Cline 会话中使用 Binance 工具。例如:
You can now check the price of Bitcoin by using the get_price tool from the binance-server.
与 Claude Desktop 搭配使用

Claude Desktop 是 Claude 的桌面应用。

  1. 将 Binance API 凭据设置为环境变量(参见上文)

  2. 配置 Claude Desktop 以使用 Binance MCP 服务:

    a. 打开 Claude Desktop

    b. 前往 Settings > MCP Servers

    c. 点击“Add Server”

    d. 输入名称(例如“Binance Server”)

    e. 在命令栏中输入:node path/to/binance-server/build/index.js

    f. 点击“Save”

  3. 在 Claude Desktop 中开始新对话,并从 MCP Servers 菜单启用 Binance Server

  4. 现在,你可以让 Claude 使用 Binance 工具。例如:

Can you check the current price of Ethereum using the Binance API?

可用工具

此服务提供一套全面的工具,用于与 Binance API 交互,分为以下类别:

市场数据工具
get_price

获取加密货币的当前价格。

参数:

  • symbol:交易对符号(例如,“BTCUSDT”、“ETHUSDT”)

示例响应:

{
  "symbol": "BTCUSDT",
  "price": "50123.45"
}
get_24hr_ticker

获取 24 小时价格变动统计数据。

参数:

  • symbol(可选):交易对符号(例如,“BTCUSDT”、“ETHUSDT”)。如果未提供,则返回所有交易对的数据。

示例响应:

{
  "symbol": "BTCUSDT",
  "priceChange": "100.00",
  "priceChangePercent": "0.2",
  "weightedAvgPrice": "50150.25",
  "prevClosePrice": "50050.00",
  "lastPrice": "50150.00",
  "lastQty": "0.5",
  "bidPrice": "50145.00",
  "bidQty": "2.5",
  "askPrice": "50155.00",
  "askQty": "1.8",
  "openPrice": "50050.00",
  "highPrice": "50200.00",
  "lowPrice": "49900.00",
  "volume": "10000.5",
  "quoteVolume": "500750000.25",
  "openTime": 1619712000000,
  "closeTime": 1619798400000,
  "firstId": 100000,
  "lastId": 100500,
  "count": 500
}
get_klines

获取 K 线数据。

参数:

  • symbol:交易对符号(例如,“BTCUSDT”、“ETHUSDT”)
  • interval:K 线间隔(例如,“1m”、“3m”、“5m”、“15m”、“30m”、“1h”、“2h”、“4h”、“6h”、“8h”、“12h”、“1d”、“3d”、“1w”、“1M”)
  • limit(可选):返回条目数(默认值为 500,最大值为 1000)
  • startTime(可选):开始时间(毫秒)
  • endTime(可选):结束时间(毫秒)

示例响应:

[
  {
    "openTime": 1619712000000,
    "open": "50050.00",
    "high": "50100.00",
    "low": "50000.00",
    "close": "50080.00",
    "volume": "100.5",
    "closeTime": 1619715600000,
    "quoteAssetVolume": "5030000.00",
    "numberOfTrades": 1000,
    "takerBuyBaseAssetVolume": "60.5",
    "takerBuyQuoteAssetVolume": "3030000.00"
  },
  // Additional klines...
]
get_order_book

获取某个交易对的订单簿。

参数:

  • symbol:交易对符号(例如 "BTCUSDT"、"ETHUSDT")
  • limit(可选):订单簿深度(默认值为 100,最大值为 5000)

响应示例:

{
  "lastUpdateId": 1027024,
  "bids": [
    {
      "price": "50145.00",
      "quantity": "2.5"
    },
    {
      "price": "50140.00",
      "quantity": "3.2"
    }
  ],
  "asks": [
    {
      "price": "50155.00",
      "quantity": "1.8"
    },
    {
      "price": "50160.00",
      "quantity": "2.1"
    }
  ]
}
get_recent_trades

获取某个交易对的近期成交记录。

参数:

  • symbol:交易对符号(例如 "BTCUSDT"、"ETHUSDT")
  • limit(可选):返回的成交记录数量(默认值为 500,最大值为 1000)

响应示例:

[
  {
    "id": 28457,
    "price": "50145.00",
    "qty": "0.1",
    "quoteQty": "5014.50",
    "time": 1619712000000,
    "isBuyerMaker": false,
    "isBestMatch": true
  },
  // Additional trades...
]
账户工具
get_account

获取账户信息,包括余额。

**参数:**无

响应示例:

{
  "makerCommission": 10,
  "takerCommission": 10,
  "buyerCommission": 0,
  "sellerCommission": 0,
  "canTrade": true,
  "canWithdraw": true,
  "canDeposit": true,
  "updateTime": 1619712000000,
  "accountType": "SPOT",
  "balances": [
    {
      "asset": "BTC",
      "free": "0.001",
      "locked": "0.0"
    },
    {
      "asset": "ETH",
      "free": "0.05",
      "locked": "0.0"
    }
  ],
  "permissions": ["SPOT"]
}
只读钱包和权限工具
  • get_wallet_balances:所有 Binance Global 钱包的 BTC 计价汇总。
  • get_api_restrictions:API 密钥的读取、交易、期货、保证金、转账和提现权限。
  • get_funding_wallet:资金钱包余额;可按 asset 筛选。
  • get_simple_earn_account:Simple Earn 余额汇总。
  • get_simple_earn_flexible_positions:灵活 Earn 持仓;支持按 asset、productId、current 和 size 筛选。
  • get_simple_earn_locked_positions:锁定 Earn 持仓;支持按 asset、positionId、projectId、current 和 size 筛选。
  • get_usdm_futures_balances:USDⓈ-M Futures 资产余额。
  • get_coinm_futures_balances:COIN-M Futures 资产余额。
  • get_cross_margin_account:全仓保证金余额和负债。
  • get_isolated_margin_account:逐仓保证金余额和负债;可按逗号分隔的 symbols 筛选。

这些工具不会下单、转移资产、订阅 Earn 产品或更改账户设置。Binance 可能仍要求具备特定产品的 API 权限。

get_my_trades

获取某个交易对的成交记录。

参数:

  • symbol:交易对符号(例如 "BTCUSDT"、"ETHUSDT")
  • orderId(可选):用于筛选成交记录的订单 ID
  • startTime(可选):开始时间(毫秒)
  • endTime(可选):结束时间(毫秒)
  • fromId(可选):要获取的起始成交 ID
  • limit(可选):返回的成交记录数量(默认值为 500,最大值为 1000)

响应示例:

[
  {
    "id": 28457,
    "orderId": 100234,
    "price": "50145.00",
    "qty": "0.1",
    "quoteQty": "5014.50",
    "commission": "5.01",
    "commissionAsset": "USDT",
    "time": 1619712000000,
    "isBuyer": true,
    "isMaker": false,
    "isBestMatch": true
  },
  // Additional trades...
]
get_open_orders

获取某个交易对或所有交易对的当前未结订单。

参数:

  • symbol(可选):交易对符号(例如 "BTCUSDT"、"ETHUSDT")。如果未提供,则返回所有交易对的未结订单。

响应示例:

[
  {
    "symbol": "BTCUSDT",
    "orderId": 100234,
    "orderListId": -1,
    "clientOrderId": "myOrder1",
    "price": "50000.00",
    "origQty": "0.1",
    "executedQty": "0.0",
    "cummulativeQuoteQty": "0.0",
    "status": "NEW",
    "timeInForce": "GTC",
    "type": "LIMIT",
    "side": "BUY",
    "stopPrice": "0.0",
    "icebergQty": "0.0",
    "time": 1619712000000,
    "updateTime": 1619712000000,
    "isWorking": true,
    "origQuoteOrderQty": "0.0"
  },
  // Additional orders...
]
get_all_orders

获取某个交易对的所有订单(活动中、已取消或已成交)。

参数:

  • symbol:交易对符号(例如 "BTCUSDT"、"ETHUSDT")
  • orderId(可选):起始订单 ID
  • startTime(可选):开始时间(毫秒)
  • endTime(可选):结束时间(毫秒)
  • limit(可选):返回的条目数量(默认值为 500,最大值为 1000)

响应示例:

[
  {
    "symbol": "BTCUSDT",
    "orderId": 100234,
    "orderListId": -1,
    "clientOrderId": "myOrder1",
    "price": "50000.00",
    "origQty": "0.1",
    "executedQty": "0.1",
    "cummulativeQuoteQty": "5000.00",
    "status": "FILLED",
    "timeInForce": "GTC",
    "type": "LIMIT",
    "side": "BUY",
    "stopPrice": "0.0",
    "icebergQty": "0.0",
    "time": 1619712000000,
    "updateTime": 1619712100000,
    "isWorking": true,
    "origQuoteOrderQty": "0.0"
  },
  // Additional orders...
]
交易工具
place_order

下达买入或卖出订单。

参数:

  • symbol:交易对符号(例如 "BTCUSDT"、"ETHUSDT")
  • side:订单方向("BUY" 或 "SELL")
  • type:订单类型("LIMIT"、"MARKET"、"STOP_LOSS"、"STOP_LOSS_LIMIT"、"TAKE_PROFIT"、"TAKE_PROFIT_LIMIT"、"LIMIT_MAKER")
  • quantity:订单数量
  • price(可选):订单价格(LIMIT 订单必填)
  • timeInForce(可选):有效时间(LIMIT 订单必填,可选值为 "GTC"、"IOC"、"FOK")
  • newClientOrderId(可选):订单的唯一 ID(未发送时会自动生成)
  • stopPrice(可选):止损价(STOP_LOSS、STOP_LOSS_LIMIT、TAKE_PROFIT 和 TAKE_PROFIT_LIMIT 订单必填)
  • icebergQty(可选):与 LIMIT、STOP_LOSS_LIMIT 和 TAKE_PROFIT_LIMIT 配合使用,以创建冰山订单
  • newOrderRespType(可选):设置响应 JSON("ACK"、"RESULT" 或 "FULL")

请求示例:

{
  "symbol": "BTCUSDT",
  "side": "BUY",
  "type": "LIMIT",
  "quantity": "0.001",
  "price": "50000",
  "timeInForce": "GTC"
}

响应示例:

{
  "symbol": "BTCUSDT",
  "orderId": 100234,
  "orderListId": -1,
  "clientOrderId": "myOrder1",
  "transactTime": 1619712000000,
  "price": "50000.00",
  "origQty": "0.001",
  "executedQty": "0.0",
  "cummulativeQuoteQty": "0.0",
  "status": "NEW",
  "timeInForce": "GTC",
  "type": "LIMIT",
  "side": "BUY"
}
cancel_order

取消活动订单。

参数:

  • symbol:交易对符号(例如,“BTCUSDT”、“ETHUSDT”)
  • orderId(可选):订单 ID
  • clientOrderId(可选):客户端订单 ID

响应示例:

{
  "symbol": "BTCUSDT",
  "origClientOrderId": "myOrder1",
  "orderId": 100234,
  "orderListId": -1,
  "clientOrderId": "cancelMyOrder1",
  "price": "50000.00",
  "origQty": "0.001",
  "executedQty": "0.0",
  "cummulativeQuoteQty": "0.0",
  "status": "CANCELED",
  "timeInForce": "GTC",
  "type": "LIMIT",
  "side": "BUY"
}
cancel_all_orders

取消某个交易对的所有未结订单。

参数:

  • symbol:交易对符号(例如,“BTCUSDT”、“ETHUSDT”)

响应示例:

[
  {
    "symbol": "BTCUSDT",
    "origClientOrderId": "myOrder1",
    "orderId": 100234,
    "orderListId": -1,
    "clientOrderId": "cancelMyOrder1",
    "price": "50000.00",
    "origQty": "0.001",
    "executedQty": "0.0",
    "cummulativeQuoteQty": "0.0",
    "status": "CANCELED",
    "timeInForce": "GTC",
    "type": "LIMIT",
    "side": "BUY"
  },
  // Additional canceled orders...
]
get_order

查看订单状态。

参数:

  • symbol:交易对符号(例如,“BTCUSDT”、“ETHUSDT”)
  • orderId(可选):订单 ID
  • clientOrderId(可选):客户端订单 ID

响应示例:

{
  "symbol": "BTCUSDT",
  "orderId": 100234,
  "orderListId": -1,
  "clientOrderId": "myOrder1",
  "price": "50000.00",
  "origQty": "0.001",
  "executedQty": "0.0",
  "cummulativeQuoteQty": "0.0",
  "status": "NEW",
  "timeInForce": "GTC",
  "type": "LIMIT",
  "side": "BUY",
  "stopPrice": "0.0",
  "icebergQty": "0.0",
  "time": 1619712000000,
  "updateTime": 1619712000000,
  "isWorking": true,
  "origQuoteOrderQty": "0.0"
}
钱包工具
get_deposit_address

获取某种币的充值地址。

参数:

  • coin:币种符号(例如,“BTC”、“ETH”)
  • network(可选):网络(例如,“BSC”、“ETH”)

响应示例:

{
  "address": "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa",
  "coin": "BTC",
  "tag": "",
  "url": "",
  "network": "BTC"
}
get_deposit_history

获取充值历史记录。

参数:

  • coin(可选):币种符号(例如,“BTC”、“ETH”)
  • status(可选):状态(0:待处理,1:成功)
  • startTime(可选):开始时间(毫秒)
  • endTime(可选):结束时间(毫秒)
  • offset(可选):偏移量
  • limit(可选):数量限制

响应示例:

[
  {
    "amount": "0.001",
    "coin": "BTC",
    "network": "BTC",
    "status": 1,
    "address": "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa",
    "addressTag": "",
    "txId": "b3c6219639cf0d8e56a47bf1c57a124a256a0379c79cc72c6a341b4ce6f32626",
    "insertTime": 1619712000000,
    "transferType": 0,
    "confirmTimes": "1/1"
  },
  // Additional deposits...
]
get_withdraw_history

获取提现历史记录。

参数:

  • coin(可选):币种符号(例如,“BTC”、“ETH”)
  • status(可选):状态(0:已发送邮件,1:已取消,2:等待审批,3:已拒绝,4:处理中,5:失败,6:已完成)
  • startTime(可选):开始时间(毫秒)
  • endTime(可选):结束时间(毫秒)
  • offset(可选):偏移量
  • limit(可选):数量限制

响应示例:

[
  {
    "id": "b3c6219639cf0d8e56a47bf1c57a124a",
    "amount": "0.001",
    "transactionFee": "0.0005",
    "coin": "BTC",
    "status": 6,
    "address": "1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa",
    "txId": "b3c6219639cf0d8e56a47bf1c57a124a256a0379c79cc72c6a341b4ce6f32626",
    "applyTime": 1619712000000,
    "network": "BTC",
    "transferType": 0,
    "info": "Withdrawal completed successfully"
  },
  // Additional withdrawals...
]
withdraw

提交提现请求。

参数:

  • coin:币种符号(例如,“BTC”、“ETH”)
  • address:提现地址
  • amount:提现金额
  • network(可选):网络(例如,“BSC”、“ETH”)
  • name(可选):地址描述
  • addressTag(可选):适用于 XRP、XMR 等币种的辅助地址标识符

响应示例:

{
  "id": "b3c6219639cf0d8e56a47bf1c57a124a"
}

部署选项

本地部署

使用此服务最简单的方式是按照“使用”部分的说明在本地运行。

持久化部署

如需更持久的部署方式:

  1. 创建启动脚本或服务,用于设置环境变量并启动服务

  2. 在 Windows 上,可以创建批处理文件:

@echo off
set BINANCE_API_KEY=your_api_key
set BINANCE_API_SECRET=your_api_secret
node path/to/binance-server/build/index.js
  1. 在 macOS/Linux 上,可以创建 Shell 脚本:
#!/bin/bash
export BINANCE_API_KEY=your_api_key
export BINANCE_API_SECRET=your_api_secret
node /path/to/binance-server/build/index.js
Docker 部署

你也可以使用 Docker 将服务容器化:

  1. 创建 Dockerfile:
FROM node:18-alpine

WORKDIR /app

COPY package*.json ./
RUN npm install

COPY . .
RUN npm run build

CMD ["node", "build/index.js"]
  1. 构建并运行 Docker 容器:
docker build -t binance-mcp-server .
docker run -e BINANCE_API_KEY=your_api_key -e BINANCE_API_SECRET=your_api_secret binance-mcp-server

安全注意事项

API 密钥安全
  • 切勿分享 API 密钥或将其直接写入代码
  • 使用环境变量或安全的密钥管理解决方案
  • 考虑使用权限受限的 API 密钥(例如,如果不需要交易,则使用只读权限)
  • 尽可能为 Binance API 密钥设置 IP 限制
交易风险
  • 启用 place_order 工具时请谨慎,因为它可能会执行真实交易
  • 考虑先使用 Binance 测试网账户进行测试
  • 为 Binance 账户设置合适的交易限额
  • 定期监控账户,留意异常活动

故障排除

常见问题
  1. “BINANCE_API_KEY 和 BINANCE_API_SECRET 环境变量为必填项”

    • 确保已正确设置这两个环境变量
  2. API 密钥错误

    • 确认 API 密钥具有所需权限
    • 检查 API 密钥是否设置了可能阻止请求的 IP 限制
  3. 连接问题

    • 确保网络连接稳定
    • 检查你所在的位置是否可以访问 Binance API(可能需要使用 VPN)
日志

服务会将错误记录到控制台。查看这些日志以获取故障排除信息。


贡献

欢迎贡献!欢迎提交 Pull Request。

许可证

本项目采用 ISC License 许可,详情请参阅 LICENSE 文件。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。