remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
Integrations
Provides real-time and historical cryptocurrency market data from Binance, including current prices, order book snapshots, OHLCV candlestick data, and exchange information like trading rules and fee structures.
币安MCP服务器
一个模型上下文协议 (MCP) 服务器,将币安加密货币交易所数据提供给大型语言模型 (LLM) 代理。该服务器允许 LLM 通过标准化接口访问币安的实时和历史市场数据。
特征
- 实时价格数据:获取币安上任何交易对的当前价格
- 订单簿访问:检索显示不同价格水平买入/卖出兴趣的订单簿快照
- 历史价格数据:获取任意时间范围内的 OHLCV(开盘价、最高价、最低价、收盘价、成交量)烛台数据
- 实时 WebSocket 流:通过 WebSocket 订阅实时交易、股票行情和订单簿更新
- 全面的市场数据:访问交易、24 小时统计数据、汇总交易、滚动窗口数据等
- 交易所信息:访问交易规则、符号信息和费用结构
- 只读操作:所有数据均通过 Binance 的公共 REST API 获取(无需 API 密钥)
- 符合 MCP 标准:可与任何兼容 MCP 的 LLM 客户端配合使用
要求
- Python 3.8+
- 带有 CLI 工具的
mcp
软件包 (mcp[cli]
) requests
REST API 库- 用于 WebSocket 流的
websockets
库 uvicorn
用于上菜(可选)
安装
- 克隆此存储库:
- 安装依赖项:
用法
直接运行服务器
要在独立模式下运行服务器:
这将启动 MCP 服务器,它将通过 STDIO 监听连接。
使用 MCP Inspector 的开发模式
对于开发和测试,请使用 MCP Inspector:
这将打开 MCP Inspector 界面,您可以在其中以交互方式测试服务器的工具。
在 Claude Desktop 中安装
要将此服务器与 Claude Desktop 一起使用:
- 如果尚未安装 MCP CLI 工具,请安装它:
- 在 Claude Desktop 中安装服务器:
- 您现在可以在 Claude Desktop 对话中直接访问 Binance 数据。
示例客户端
提供了一个示例客户端脚本来演示编程用法:
该脚本连接到服务器并检索各种类型的市场数据。
可用工具
连接和基本信息
- ping_binance() :测试与币安 API 服务器的连接
- 例如:
ping_binance()
- 例如:
- get_server_time() :从币安获取当前服务器时间
- 例如:
get_server_time()
- 例如:
市场数据
- get_price(symbol) :获取交易对的当前价格
- 例如:
get_price(symbol="BTCUSDT")
- 例如:
- get_order_book(symbol,depth=10) :获取当前订单簿
- 示例:
get_order_book(symbol="ETHUSDT", depth=5)
- 示例:
- get_historical_prices(symbol, interval="1d", limit=100) :获取历史 OHLCV 数据
- 例如:
get_historical_prices(symbol="BTCUSDT", interval="1h", limit=24)
- 有效间隔:“1m”、“3m”、“5m”、“15m”、“30m”、“1h”、“2h”、“4h”、“6h”、“8h”、“12h”、“1d”、“3d”、“1w”、“1M”
- 例如:
- get_ui_klines(symbol, interval="1d", limit=100) :获取 UI 优化的 K 线数据
- 例如:
get_ui_klines(symbol="BTCUSDT", interval="1h", limit=24)
- 例如:
- get_recent_trades(symbol, limit=20) :获取某个符号的最近交易
- 例如:
get_recent_trades(symbol="BTCUSDT", limit=50)
- 例如:
- get_historical_trades(symbol, limit=20, from_id=None) :获取某个符号的旧交易
- 例如:
get_historical_trades(symbol="BTCUSDT", limit=100, from_id=12345)
- 例如:
- get_aggregate_trades(symbol, limit=20) :获取压缩/聚合交易
- 例如:
get_aggregate_trades(symbol="ETHUSDT", limit=30)
- 例如:
- get_24hr_ticker(symbol) :获取24小时价格变化统计
- 例如:
get_24hr_ticker(symbol="BNBUSDT")
- 例如:
- get_all_24hr_tickers() :获取所有符号的 24 小时统计数据
- 例如:
get_all_24hr_tickers()
- 例如:
- get_trading_day_ticker(symbol, type="FULL") :获取交易日价格变化统计
- 例如:
get_trading_day_ticker(symbol="BTCUSDT", type="FULL")
- 例如:
- get_all_trading_day_tickers(type="FULL") :获取所有交易品种的交易日统计数据
- 例如:
get_all_trading_day_tickers(type="MINI")
- 例如:
- get_rolling_window_ticker(symbol, window_size="1d", type="FULL") :获取滚动窗口价格统计数据
- 例如:
get_rolling_window_ticker(symbol="BTCUSDT", window_size="4h")
- 例如:
- get_all_rolling_window_tickers(window_size="1d", type="FULL") :获取所有符号的滚动窗口统计信息
- 例如:
get_all_rolling_window_tickers(window_size="4h", type="MINI")
- 例如:
- get_average_price(symbol) :获取当前平均价格(5分钟加权平均值)
- 例如:
get_average_price(symbol="BTCUSDT")
- 例如:
- get_book_ticker(symbol) :获取最佳买入/卖出价格和数量
- 例如:
get_book_ticker(symbol="ETHBTC")
- 例如:
- get_all_book_tickers() :获取所有符号的最佳买入/卖出价
- 示例:
get_all_book_tickers()
- 示例:
市场信息
- get_exchange_info() :获取全面的交易所信息,包括交易规则和交易品种列表
- get_trading_fees() :获取默认交易费率(注意:出于演示目的,返回默认公开费用)
WebSocket 流
- subscribe_to_trade_stream(symbol) :订阅实时交易事件
- 例如:
subscribe_to_trade_stream(symbol="BTCUSDT")
- 例如:
- subscribe_to_kline_stream(symbol, interval="1m") : 订阅 K 线/K 线更新
- 例如:
subscribe_to_kline_stream(symbol="BTCUSDT", interval="5m")
- 例如:
- subscribe_to_ticker_stream(symbol) :订阅 24 小时股票代码更新
- 例如:
subscribe_to_ticker_stream(symbol="ETHUSDT")
- 例如:
- subscribe_to_book_ticker_stream(symbol) :订阅最佳买入/卖出更新
- 例如:
subscribe_to_book_ticker_stream(symbol="BNBUSDT")
- 例如:
- subscribe_to_depth_stream(symbol, levels=10) :订阅订单簿更新
- 例如:
subscribe_to_depth_stream(symbol="BTCUSDT", levels=5)
- 例如:
- list_active_subscriptions() :列出所有活动的 WebSocket 订阅
- 例如:
list_active_subscriptions()
- 例如:
- get_latest_stream_data(stream_name) :从流中获取最新数据
- 例如:
get_latest_stream_data(stream_name="btcusdt@trade")
- 例如:
- unsubscribe_from_stream(stream_name) :取消订阅流
- 例如:
unsubscribe_from_stream(stream_name="btcusdt@kline_1m")
- 例如:
- cleanup_all_streams() :关闭所有 WebSocket 连接并清理资源
- 例如:
cleanup_all_streams()
- 例如:
项目结构
示例
基本连接
获取当前市场数据
使用 WebSocket 流
实施情况
有关已实施和计划的 API 端点的详细概述,请参阅API 实施状态文档。
扩展服务器
添加新工具
要添加新工具,请在 Binance API 模块中创建适当的函数,然后在其中一个命令模块中将其注册为 MCP 工具。
支持私有 API 端点
支持经过身份验证的 API 调用:
- 修改
binance_api.py
以包含身份验证 - 为交易操作创建额外的命令模块
- 在
server.py
中注册新命令
故障排除
- 连接问题:在尝试连接客户端之前,请确保服务器正在运行
- 速率限制:币安可能会对过多的 API 调用进行速率限制;考虑为高流量部署实施缓存
- WebSocket 稳定性:WebSocket 连接可能会在 24 小时后断开(币安限制);服务器将尝试自动重新连接
- 数据格式:不同的符号或间隔可能返回略有不同的格式的数据
执照
该项目根据 MIT 许可证获得许可 - 有关详细信息,请参阅 LICENSE 文件。
致谢
- Binance 提供全面的公共 API
- 用于标准化 LLM 工具交互的 MCP 项目
This server cannot be installed
模型上下文协议服务器将币安加密货币交易数据公开给 LLM,允许代理无需 API 密钥即可访问实时价格、订单簿和历史市场数据。