Skip to main content
Glama

바이낸스 MCP 서버

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

특징

  • 실시간 가격 데이터 : Binance에서 모든 거래 쌍의 현재 가격을 확인하세요

  • 주문장 접근 : 다양한 가격 수준에서 매수/매도 관심을 보여주는 주문장 스냅샷을 검색합니다.

  • 과거 가격 데이터 : 모든 기간의 OHLCV(시가, 고가, 저가, 종가, 거래량) 캔들스틱 데이터를 가져옵니다.

  • 실시간 WebSocket 스트림 : WebSocket을 통해 실시간 거래, 티커 및 주문장 업데이트를 구독하세요.

  • 종합 시장 데이터 : 거래, 24시간 통계, 집계 거래, 롤링 윈도우 데이터 등에 액세스하세요.

  • 거래소 정보 : 거래 규칙, 심볼 정보 및 수수료 구조에 액세스하세요

  • 읽기 전용 작업 : 모든 데이터는 Binance의 공개 REST API를 통해 가져옵니다(API 키 필요 없음)

  • MCP 표준 준수 : 모든 MCP 호환 LLM 클라이언트와 호환됩니다.

Related MCP server: BSC MCP Server

요구 사항

  • 파이썬 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

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