Trawling

tradingview-mcp — Claude Code를 로컬 TradingView 데스크톱 앱에 연결하는 MCP 서버

로컬에서 실행 중인 TradingView Desktop 앱을 Chrome DevTools Protocol(CDP)로 제어해 Claude Code가 차트를 읽고 조작할 수 있게 해주는 오픈소스 MCP 서버입니다. Pine Script 작성·컴파일·디버깅, 심볼·타임프레임 변경, 지표 값 읽기, 드로잉, 알림 관리, 리플레이 연습 등 84개 도구를 제공하며, 모든 처리는 로컬에서 이루어집니다.

본문

LLM 에이전트가 전문 트레이딩 인터페이스와 어떻게 상호작용해 인간의 의사결정을 지원할 수 있는가라는 연구 질문에서 출발한 프로젝트입니다. 트레이딩 봇이 아니라, TradingView Desktop이라는 상태ful(stateful) 데스크톱 금융 애플리케이션을 LLM 에이전트가 읽을 수 있는 형태로 만들어주는 인터페이스 레이어를 지향합니다.

동작 방식과 아키텍처

연결 구조는 Claude Code ↔ MCP 서버(stdio) ↔ CDP(포트 9222) ↔ TradingView Desktop(Electron)입니다. CDP는 VS Code, Slack, Discord 같은 모든 Chromium/Electron 앱에 내장된 표준 디버깅 인터페이스로, 사용자가 --remote-debugging-port=9222 플래그로 디버그 포트를 명시적으로 켜야만 동작합니다. TradingView 서버에 접속하거나 파일을 수정하거나 네트워크 트래픽을 가로채지 않고, 의존성도 @modelcontextprotocol/sdk와 chrome-remote-interface 두 개뿐입니다. macOS, Windows, Linux를 지원하며 Node.js 18 이상이 필요하고, 실시간 데이터를 위해서는 유료 TradingView 구독과 설치된 Desktop 앱이 요구됩니다. 모든 MCP 도구는 tv라는 CLI 명령(30개 명령, 66개 서브커맨드)으로도 노출되어 jq와 파이프로 연결할 수 있는 JSON 출력을 제공합니다.

주요 기능

84개 MCP 도구가 제공하는 기능은 크게 여섯 갈래입니다. 첫째, Pine Script 개발 — 에디터에 코드를 주입(pine_set_source)하고 스마트 컴파일(pine_smart_compile), 오류 읽기(pine_get_errors), 콘솔 출력 확인, TradingView 클라우드 저장까지 AI 보조로 반복할 수 있고, 차트 없이도 동작하는 오프라인 정적 분석(pine_analyze)과 서버 측 컴파일 체크(pine_check)도 있습니다. 둘째, 차트 내비게이션 — 심볼·타임프레임·차트 유형(캔들, Heikin Ashi, Renko 등) 변경, 날짜로 스크롤, 지표 추가·제거·입력값 변경. 셋째, 데이터 읽기 — 현재가·OHLCV·지표 값(RSI, MACD 등) 조회와 함께, Pine 지표가 그린 line.new(), label.new(), table.new(), box.new() 출력을 읽어 지지·저항 레벨이나 세션 통계 테이블을 파싱합니다. 넷째, 드로잉·알림·스크린샷 — 추세선, 수평선, 사각형, 텍스트 주석을 그리고 가격 알림을 만들거나 차트 상태를 캡처해 AI 시각 분석에 넘깁니다. 다섯째, 리플레이 연습 — 과거 특정 날짜부터 바 단위로 진행하며 매수·매도·청산을 연습하고 손익을 확인합니다. 여섯째, 멀티페인·모니터링 — 2x2, 3x1 그리드 레이아웃에 페인별로 다른 심볼을 배치하고, tv stream 계열 명령으로 로컬 차트에서 JSONL 스트림을 폴링·중복제거 방식으로 뽑아 모니터링 스크립트에 연결합니다. 이 스트림도 TradingView 서버가 아닌 localhost의 CDP만 폴링합니다.

컨텍스트 최적화와 사용 흐름

LLM 컨텍스트 사용량을 줄이기 위해 도구 출력을 기본적으로 압축합니다. Pine 라인은 중복 제거된 가격 레벨만, 라벨은 스터디당 50개 상한에 텍스트와 가격만, OHLCV는 summary 모드에서 통계와 최근 5개 바만 반환해, 일반적인 '내 차트 분석해줘' 워크플로의 총 컨텍스트가 약 80KB 대신 5~10KB 수준으로 줄어든다고 설명합니다. 필요하면 verbose: true나 study_filter로 원시 데이터나 특정 지표만 지정할 수 있습니다. 저장소의 CLAUDE.md에는 '차트에 뭐가 있어?'라고 물으면 chart_get_state → data_get_study_values → quote_get 순으로 호출하는 식의 의사결정 트리가 담겨 있어 Claude Code가 자동으로 참조합니다.

리스크와 고지 사항

프로젝트는 리스크를 상당히 길게 명시합니다. Electron 디버그 인터페이스를 통해 비공개 내부 API에 접근하므로 TradingView 업데이트로 언제든 깨질 수 있고, 안정성이 필요하면 Desktop 버전을 고정하라고 권합니다. 실거래 실행은 불가능하고(차트 상호작용만), 페이월이나 접근 제한을 우회하지 않지만, TradingView 이용약관이 자동화된 데이터 수집과 스크래핑을 제한하므로 프로그래매틱한 데이터 소비 자체가 약관과 충돌할 수 있다고 경고합니다. 데이터 재배포·재판매·상업적 이용, 추출 데이터 기반 자동매매 등은 금지 용도로 명시되어 있고, 계정 정지 등 모든 위험은 사용자가 부담합니다. 라이선스는 MIT이며 이 프로젝트 소스코드에만 적용됩니다.

원문: GitHub / 번역·요약: Trawling

참고 자료

오류 제보