Skip to main content
Glama

Binance MCPサーバー

Binanceの暗号通貨取引データを大規模言語モデル(LLM)エージェントに公開するモデルコンテキストプロトコル(MCP)サーバー。このサーバーにより、LLMは標準化されたインターフェースを通じてBinanceのリアルタイムおよび過去の市場データにアクセスできるようになります。

特徴

  • ライブ価格データ:Binanceのあらゆる取引ペアの現在の価格を取得します

  • 注文帳アクセス: さまざまな価格レベルでの売買関心を示す注文帳のスナップショットを取得します。

  • 過去の価格データ: 任意の時間枠の OHLCV (始値、高値、安値、終値、出来高) ローソク足データを取得します。

  • リアルタイム WebSocket ストリーム: WebSocket 経由でリアルタイムの取引、ティッカー、注文書の更新を購読します

  • 包括的な市場データ: 取引、24時間統計、集計取引、ローリングウィンドウデータなどにアクセスします

  • 取引所情報: 取引ルール、銘柄情報、手数料体系にアクセス

  • 読み取り専用操作: すべてのデータはBinanceのパブリックREST APIを介して取得されます(APIキーは不要)

  • MCP標準準拠:MCP互換のLLMクライアントで動作します

Related MCP server: BSC MCP Server

要件

  • Python 3.8以上

  • CLIツールを含むmcpパッケージ( mcp[cli]

  • REST API のrequestsライブラリ

  • 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() : Binance APIサーバーへの接続をテストする

    • 例: ping_binance()

  • get_server_time() : Binanceから現在のサーバー時刻を取得する

    • 例: 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に最適化されたローソク足データを取得する

    • 例: 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") : ローソク足/klineの更新を購読する

    • 例: subscribe_to_kline_stream(symbol="BTCUSDT", interval="5m")

  • subscribe_to_ticker_stream(シンボル) : 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 モジュールで適切な関数を作成し、コマンド モジュールの 1 つで MCP ツールとして登録します。

プライベートAPIエンドポイントのサポート

認証された API 呼び出しをサポートするには:

  1. binance_api.pyを修正して認証を組み込む

  2. 取引操作用の追加コマンドモジュールを作成する

  3. server.pyに新しいコマンドを登録する

トラブルシューティング

  • 接続の問題: クライアントとの接続を試みる前に、サーバーが実行中であることを確認してください

  • レート制限: Binance は過剰な API 呼び出しをレート制限する場合があります。高トラフィックのデプロイメントではキャッシュの実装を検討してください。

  • WebSocketの安定性: WebSocket接続は24時間後に切断される可能性があります(Binanceの制限)。サーバーは自動的に再接続を試みます。

  • データ形式: 異なるシンボルまたは間隔では、若干異なる形式でデータが返される場合があります。

ライセンス

このプロジェクトは MIT ライセンスに基づいてライセンスされています - 詳細については LICENSE ファイルを参照してください。

謝辞

  • 包括的なパブリックAPIを提供するBinance

  • 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