Skip to main content
Glama

币安MCP服务器

一个模型上下文协议 (MCP) 服务器,将币安加密货币交易所数据提供给大型语言模型 (LLM) 代理。该服务器允许 LLM 通过标准化接口访问币安的实时和历史市场数据。

特征

  • 实时价格数据:获取币安上任何交易对的当前价格

  • 订单簿访问:检索显示不同价格水平买入/卖出兴趣的订单簿快照

  • 历史价格数据:获取任意时间范围内的 OHLCV(开盘价、最高价、最低价、收盘价、成交量)烛台数据

  • 实时 WebSocket 流:通过 WebSocket 订阅实时交易、股票行情和订单簿更新

  • 全面的市场数据:访问交易、24 小时统计数据、汇总交易、滚动窗口数据等

  • 交易所信息:访问交易规则、符号信息和费用结构

  • 只读操作:所有数据均通过 Binance 的公共 REST API 获取(无需 API 密钥)

  • 符合 MCP 标准:可与任何兼容 MCP 的 LLM 客户端配合使用

Related MCP server: BSC MCP Server

要求

  • Python 3.8+

  • 带有 CLI 工具的mcp软件包 ( mcp[cli] )

  • requests REST API 库

  • 用于 WebSocket 流的websockets

  • uvicorn用于上菜(可选)

安装

  1. 克隆此存储库:

git clone https://github.com/yourusername/binance_mcp_server.git cd binance_mcp_server
  1. 安装依赖项:

pip install -r requirements.txt

用法

直接运行服务器

要在独立模式下运行服务器:

python run_server.py

这将启动 MCP 服务器,它将通过 STDIO 监听连接。

使用 MCP Inspector 的开发模式

对于开发和测试,请使用 MCP Inspector:

mcp dev run_server.py

这将打开 MCP Inspector 界面,您可以在其中以交互方式测试服务器的工具。

在 Claude Desktop 中安装

要将此服务器与 Claude Desktop 一起使用:

  1. 如果尚未安装 MCP CLI 工具,请安装它:

pip install "mcp[cli]"
  1. 在 Claude Desktop 中安装服务器:

mcp install run_server.py
  1. 您现在可以在 Claude Desktop 对话中直接访问 Binance 数据。

示例客户端

提供了一个示例客户端脚本来演示编程用法:

python example_client.py

该脚本连接到服务器并检索各种类型的市场数据。

可用工具

连接和基本信息

  • 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()

项目结构

binance_mcp_server/ ├── binance_api.py # Core REST API interaction module ├── binance_ws_api.py # WebSocket connection management ├── commands/ # MCP command definitions │ ├── __init__.py │ ├── market_data.py # Price/order book/historical data commands │ ├── market_info.py # Exchange info and metadata commands │ └── websocket_streams.py # WebSocket stream commands └── server.py # Main MCP server setup and initialization

示例

基本连接

# Check if Binance API is reachable is_connected = ping_binance() # Get the current server time (milliseconds since epoch) server_time = get_server_time()

获取当前市场数据

# Get the current price of Bitcoin btc_price = get_price(symbol="BTCUSDT") # Get detailed 24-hour statistics btc_stats = get_24hr_ticker(symbol="BTCUSDT") print(f"BTC price change: {btc_stats['priceChangePercent']}%") print(f"BTC 24h volume: {btc_stats['volume']} BTC") # Get rolling window statistics (4-hour window) btc_4h_stats = get_rolling_window_ticker(symbol="BTCUSDT", window_size="4h") print(f"BTC 4h price change: {btc_4h_stats['priceChangePercent']}%")

使用 WebSocket 流

# Subscribe to real-time trade updates trade_sub = subscribe_to_trade_stream(symbol="BTCUSDT") # After some time, get the latest trade data latest_trade = get_latest_stream_data(stream_name="btcusdt@trade") print(f"Latest trade price: {latest_trade['data']['p']}") # Subscribe to candlestick updates for chart data kline_sub = subscribe_to_kline_stream(symbol="ETHUSDT", interval="5m") # Clean up when done unsubscribe_from_stream(stream_name="btcusdt@trade") unsubscribe_from_stream(stream_name="ethusdt@kline_5m")

实施情况

有关已实施和计划的 API 端点的详细概述,请参阅API 实施状态文档。

扩展服务器

添加新工具

要添加新工具,请在 Binance API 模块中创建适当的函数,然后在其中一个命令模块中将其注册为 MCP 工具。

支持私有 API 端点

支持经过身份验证的 API 调用:

  1. 修改binance_api.py以包含身份验证

  2. 为交易操作创建额外的命令模块

  3. server.py中注册新命令

故障排除

  • 连接问题:在尝试连接客户端之前,请确保服务器正在运行

  • 速率限制:币安可能会对过多的 API 调用进行速率限制;考虑为高流量部署实施缓存

  • WebSocket 稳定性:WebSocket 连接可能会在 24 小时后断开(币安限制);服务器将尝试自动重新连接

  • 数据格式:不同的符号或间隔可能返回略有不同的格式的数据

执照

该项目根据 MIT 许可证获得许可 - 有关详细信息,请参阅 LICENSE 文件。

致谢

  • Binance 提供全面的公共 API

  • 用于标准化 LLM 工具交互的 MCP 项目

-
security - not tested
A
license - permissive license
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/tienan92it/binance-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server