Binance MCP Server

by tienan92it
Verified

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 서버

바이낸스 암호화폐 거래소 데이터를 대규모 언어 모델(LLM) 에이전트에 노출하는 모델 컨텍스트 프로토콜(MCP) 서버입니다. 이 서버를 통해 LLM은 표준화된 인터페이스를 통해 바이낸스의 실시간 및 과거 시장 데이터에 접근할 수 있습니다.

특징

  • 실시간 가격 데이터 : Binance에서 모든 거래 쌍의 현재 가격을 확인하세요
  • 주문장 접근 : 다양한 가격 수준에서 매수/매도 관심을 보여주는 주문장 스냅샷을 검색합니다.
  • 과거 가격 데이터 : 모든 기간의 OHLCV(시가, 고가, 저가, 종가, 거래량) 캔들스틱 데이터를 가져옵니다.
  • 실시간 WebSocket 스트림 : WebSocket을 통해 실시간 거래, 티커 및 주문장 업데이트를 구독하세요.
  • 종합 시장 데이터 : 거래, 24시간 통계, 집계 거래, 롤링 윈도우 데이터 등에 액세스하세요.
  • 거래소 정보 : 거래 규칙, 심볼 정보 및 수수료 구조에 액세스하세요
  • 읽기 전용 작업 : 모든 데이터는 Binance의 공개 REST API를 통해 가져옵니다(API 키 필요 없음)
  • MCP 표준 준수 : 모든 MCP 호환 LLM 클라이언트와 호환됩니다.

요구 사항

  • 파이썬 3.8 이상
  • CLI 도구가 포함된 mcp 패키지( mcp[cli] )
  • REST API용 requests 라이브러리
  • WebSocket 스트림을 위한 websockets 라이브러리
  • 서빙용 uvicorn (선택 사항)

설치

  1. 이 저장소를 복제하세요:

지엑스피1

  1. 종속성 설치:
pip install -r requirements.txt

용법

서버를 직접 실행

독립 실행형 모드로 서버를 실행하려면:

python run_server.py

이렇게 하면 STDIO를 통해 연결을 수신하는 MCP 서버가 시작됩니다.

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() : 기본 거래 수수료율을 가져옵니다(참고: 데모 목적으로 기본 공공 수수료를 반환합니다)

웹소켓 스트림

  • subscribe_to_trade_stream(symbol) : 실시간 거래 이벤트 구독
    • 예: subscribe_to_trade_stream(symbol="BTCUSDT")
  • subscribe_to_kline_stream(symbol, interval="1m") : 캔들스틱/클라인 업데이트 구독
    • 예: 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 에 새로운 명령을 등록합니다.

문제 해결

  • 연결 문제 : 클라이언트에 연결을 시도하기 전에 서버가 실행 중인지 확인하세요.
  • 속도 제한 : Binance는 과도한 API 호출에 대해 속도 제한을 적용할 수 있습니다. 트래픽이 많은 배포에 대해 캐싱 구현을 고려하세요.
  • WebSocket 안정성 : WebSocket 연결은 24시간(Binance 제한) 후에 끊길 수 있습니다. 서버는 자동으로 다시 연결을 시도합니다.
  • 데이터 형식 : 다른 기호나 간격은 약간 다른 형식으로 데이터를 반환할 수 있습니다.

특허

이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여되었습니다. 자세한 내용은 라이선스 파일을 참조하세요.

감사의 말

  • 포괄적인 공개 API를 제공하는 바이낸스
  • LLM 도구 상호 작용을 표준화하기 위한 MCP 프로젝트
-
security - not tested
A
license - permissive license
-
quality - not tested

LLM에 Binance 암호화폐 거래소 데이터를 공개하는 모델 컨텍스트 프로토콜 서버로, 에이전트가 API 키가 없어도 실시간 가격, 주문장, 과거 시장 데이터에 액세스할 수 있도록 합니다.

  1. Features
    1. Requirements
      1. Installation
        1. Usage
          1. Running the Server Directly
          2. Development Mode with MCP Inspector
          3. Installing in Claude Desktop
          4. Example Client
        2. Available Tools
          1. Connectivity and Basic Info
          2. Market Data
          3. Market Info
          4. WebSocket Streams
        3. Project Structure
          1. Examples
            1. Basic Connectivity
            2. Getting Current Market Data
            3. Working with WebSocket Streams
          2. Implementation Status
            1. Extending the Server
              1. Adding New Tools
              2. Supporting Private API Endpoints
            2. Troubleshooting
              1. License
                1. Acknowledgments
                  ID: oxihgnrmls