关于 Binance MCP Server
Binance MCP Server 将 Binance 交易所 API 接入 MCP,供 AI 助手查询行情、账户与钱包信息,并管理订单。它同时提供只读账户工具和下单、撤单等交易工具。
主要功能
- 01查询实时价格与市场数据
- 02查看账户、钱包及余额
- 03查询交易与订单状态
- 04创建和取消订单
- 05查看存款与提现记录
适用场景
- 01查看交易对价格和 K 线数据
- 02检查账户余额及 API 权限
- 03查询未完成订单或历史交易
- 04通过助手提交或取消交易订单
MCP 相关
该 MCP 服务向 MCP 客户端提供 Binance 市场、账户、钱包和交易工具。访问账户及执行交易需要设置 Binance API 凭据,并受 API 权限限制。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
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
安装
- 克隆此代码库:
git clone https://github.com/py7hagoras/binance-mcp.git
cd binance-mcp
- 安装依赖项:
npm install
- 构建项目:
npm run build
配置
此服务需要 Binance API 凭据才能运行。你需要将它们设置为环境变量:
BINANCE_API_KEY:你的 Binance API 密钥BINANCE_API_SECRET:你的 Binance API 密钥密文
创建 Binance API 密钥
- 登录 Binance 账户
- 前往 API 管理
- 创建新的 API 密钥(如果要使用
place_order工具,请考虑启用交易权限) - 安全地保存 API 密钥和密钥密文
用法
与 Cline 搭配使用
Cline 是一个用于与 Claude 等 AI 模型交互的命令行界面。
- 如果尚未安装 Cline,请先安装:
npm install -g @cline-ai/cline
- 将 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
- 启动 Cline 并使用 Binance MCP 服务:
cline --mcp-server "node path/to/binance-server/build/index.js"
- 现在,你可以在 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 的桌面应用。
-
将 Binance API 凭据设置为环境变量(参见上文)
-
配置 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.jsf. 点击“Save”
-
在 Claude Desktop 中开始新对话,并从 MCP Servers 菜单启用 Binance Server
-
现在,你可以让 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(可选):用于筛选成交记录的订单 IDstartTime(可选):开始时间(毫秒)endTime(可选):结束时间(毫秒)fromId(可选):要获取的起始成交 IDlimit(可选):返回的成交记录数量(默认值为 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(可选):起始订单 IDstartTime(可选):开始时间(毫秒)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(可选):订单 IDclientOrderId(可选):客户端订单 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(可选):订单 IDclientOrderId(可选):客户端订单 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"
}
部署选项
本地部署
使用此服务最简单的方式是按照“使用”部分的说明在本地运行。
持久化部署
如需更持久的部署方式:
-
创建启动脚本或服务,用于设置环境变量并启动服务
-
在 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
- 在 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 将服务容器化:
- 创建 Dockerfile:
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
CMD ["node", "build/index.js"]
- 构建并运行 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 账户设置合适的交易限额
- 定期监控账户,留意异常活动
故障排除
常见问题
-
“BINANCE_API_KEY 和 BINANCE_API_SECRET 环境变量为必填项”
- 确保已正确设置这两个环境变量
-
API 密钥错误
- 确认 API 密钥具有所需权限
- 检查 API 密钥是否设置了可能阻止请求的 IP 限制
-
连接问题
- 确保网络连接稳定
- 检查你所在的位置是否可以访问 Binance API(可能需要使用 VPN)
日志
服务会将错误记录到控制台。查看这些日志以获取故障排除信息。
贡献
欢迎贡献!欢迎提交 Pull Request。
许可证
本项目采用 ISC License 许可,详情请参阅 LICENSE 文件。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。