MCP로 TradingView 데이터와 백테스트 엔진 통합
TradingView의 스캐너, 뉴스, 심리, 가격 데이터를 MCP 프로토콜로 노출하고 내장 백테스트 엔진을 제공하는 TypeScript 서버이다.
TL;DR
이 레포는 TradingView의 스캐너, 시세, 뉴스, Reddit 심리 지표를 Model Context Protocol(MCP) 규격으로 노출하는 TypeScript 기반 서버이다. 아키텍처는 MCP 라우터가 입력을 검증해 독립적인 서비스 계층으로 위임하며 스크리너 제공자는 retry, jitter, throttling과 캐시 통합을 수행하고 Redis를 옵션으로 지원한다. 내장 백테스트 엔진은 9개 전략과 Sharpe, Calmar, walk-forward 과적합 탐지 지표를 산출하며 결과는 MCP 페이로드로 반환된다. 이 소프트웨어는 공개 엔드포인트만 사용해 TradingView 계정 없이 동작하며 출력은 연구·교육 목적으로 한정되어 금융 자문으로 사용해서는 안 된다.
주요 기능
- 다중 거래소 스크리너를 제공하며 Crypto, 미국 주식, EGX, BIST, HKEX, SSE, TWSE 등 정적 심볼 리스트와 TradingView scanner API를 통해 시장별 필터링과 상위 종목 조회를 수행한다. 이 기능은 로컬 캐시와 재시도 메커니즘과 결합되어 외부 API 장애에도 응답을 유지하도록 설계되어 있다. 결과는 MCP 표준 JSON 페이로드로 클라이언트에 반환된다.
- 기술적 분석 기능에는 Bollinger 지표 기반 등급, RSI, 다중 타임프레임 정렬, 거래량 브레이크아웃, 캔들 패턴 인식이 포함되어 있다. 지표 연산부는 indicators 디렉터리에 순수 함수 형태로 분리되어 테스트 가능성과 재사용성을 유지한다. TA 연산 결과는 결합 분석 워크플로에서 다른 서비 스 출력과 병렬로 수집되어 종합 요약을 만든다.
- 내장 백테스트 엔진은 9개의 전략을 실행하며 Sharpe와 Calmar 같은 성능 지표와 walk-forward 기반 과적합 탐지 기능을 산출한다. 백테스트는 Yahoo Finance의 역사적 OHLCV 데이터를 사용하여 비용을 시뮬레이션하고 전략의 기간별 일반화 가능성을 평가한다. 백테스트 결과는 MCP 페이로드로 반환되어 외부 도구에서 후속 분석이 가능하다.
- MCP 네이티브 도구로 36개 툴을 등록하고 stdio 트랜스포트로 동작하여 Claude Desktop, Cursor, Copilot 등 여러 MCP 호스트와 상호운용된다. 이 레포는 서비스 계층을 비즈니스 로직과 분리하여 MCP 레이어에 의존성이 없도록 설계해 단위 테스트 및 재사용을 용이하게 했다. 장애 허용성은 재시도와 인메모리 또는 Redis 분산 캐시로 보장된다.
어떻게 동작하는가
서버는 MCP 라우터(src/server.ts)에서 들어오는 요청을 Zod로 검증하고 적절한 서비스로 위임한 뒤 표준화된 JSON 응답을 반환한다. 서비스 계층은 MCP 의존성을 제거한 도메인 로직만 포함하여 독립적으로 단위 테스트가 가능하도록 구성되어 있다. 스크리너 제공자는 retry, jitter, throttling과 캐시 통합을 사용해 TradingView 스캐너와 통신하며 퍼시스턴스 계층은 Redis를 옵션으로 지원하고 Redis 장애 시 인메모리 캐시로 자동 폴백한다.
해결 문제
이 레포는 AI 어시스턴트와 자동화 도구가 TradingView 기반의 시장 데이터와 스크리닝, 기술적 분석, 뉴스 및 심리 정보를 표준화된 MCP 인터페이스로 요청할 수 있도록 한다. 여러 거래소의 심볼 리스트와 TradingView 스캐너를 통합해 멀티-익스체인지 스크리닝을 단일 엔드포인트로 제공한다. 또한 백테스트 엔진을 내장해 전략 검증과 지표 산출을 같은 프로토콜 내에서 수행할 수 있도록 한다.
지금 주목받는 이유
레포는 MCP 표준을 따른 서버 구현으로 Claude Desktop, Cursor, Copilot 같은 여러 MCP 호스트와의 호환성을 명시해 통합성이 높다. README에 36개 도구와 stdio 트랜스포트를 지원한다고 적시되어 있어 여러 클라이언트와의 연계 사례가 가능한 점이 주목할 만하다. 또한 TradingView 스크리너와 내장 백테스트를 함께 제공해 AI 기반 시장분석과 자동화 워크플로를 한곳에서 처리할 수 있다.
차별점
- MCP 네이티브 구현으로 36개의 툴과 stdio 트랜스포트를 제공하며 Claude Desktop, Cursor, Copilot 등 다양한 MCP 호스트와 즉시 연동된다. 이 점은 MCP 표준을 따르는 클라이언트 환경과의 상호운용성을 높여 별도 어댑터 개발 부담을 줄인다. README에 명시된 도구 수와 호환 호스트 목록이 이 호환성 근거가 된다.
- 서비스 계층 분리와 엄격한 TypeScript 설정(strict, noUnusedLocals, noUncheckedIndexedAccess)은 도메인 로직의 테스트 가능성과 코드 안전성을 높인다. MCP 라우터는 입력 유효성 검사만 수행하고 핵심 비즈니스 로직은 services 디렉터리에 위치한다. 이 구조는 도구 추가 시 MCP 레이어에 영향을 주지 않고 기능 확장이 가능하도록 설계되었다.
- 캐시 추상화는 Redis를 옵션으로 두어 분산 캐시가 가능할 때 확장성과 중복 호출 감소 효과를 얻고 Redis 장애 시 자동으로 인메모리 캐시로 폴백한다. 스크리너 제공자는 retry, jitter, throttling을 적용해 외부 API 레이트 리밋과 불안정성에 대응하도록 구현되어 있다. 이로 인해 프로덕션 환경에서의 복원력과 가용성이 개선된다.
- 내장 백테스트는 9개 전략과 Sharpe, Calmar, walk-forward 과적합 탐지 기능을 포함해 전략 검증을 자동화한다. 백테스트는 Yahoo Finance 데이터에 기반하여 비용을 시뮬레이션하고 결과를 정량 지표로 산출한다. 이 기능은 별도의 백테스트 파이프라인 없이 MCP 도구 내에서 신속한 전략 비교가 가능하도록 한다.
사용 사례
- AI 어시스턴트가 MCP를 통해 실시간 스크리너 결과와 기술적 분석을 조회해 자연어 응답에 시장 지표를 결합하는 용도로 사용될 수 있다. 클라이언트는 단일 MCP 호출로 여러 서비스에서 병렬로 데이터를 수집하고 합류된 요약을 받을 수 있다. 이 과정은 캐시와 재시도 메커니즘으로 외부 API 실패에 대한 내구성을 유지한다.
- 자동화된 거래 스캐너와 알림 파이프라인에서 멀티-익스체인지 필터링을 실행해 상위 종목을 자동으로 선별하고 후속 처리로 외부 서비스에 전달하는 워크플로를 구성할 수 있다. 트래픽이 많은 환경에서는 Redis 분산 캐시를 활용해 중복 upstream 호출을 줄인다. 워크플로 내에서는 TA, 심리 점수, 뉴스 헤드라인을 결합한 컨펄런스 분석도 가능하다.
- 연구 및 전략 검증 목적의 백테스트 파이프라인으로 사용해 여러 전략을 동일한 데이터 소스와 설정으로 비교할 수 있다. 내장 백테스트는 Sharpe와 Calmar 같은 성능 지표를 산출하고 walk-forward 검증으로 과적합 여부를 평가한다. 백테스트 결과는 MCP 페이로드로 제공되어 외부 분석 도구와 연동해 추가 처리가 가능하다.
시작하기
레포지토리를 클론한 뒤 의존성을 설치하고 빌드하면 기본 실행 파일이 생성된다. 예시 명령은 git clone 후 npm install 그리고 npm run build이며 빌드된 dist/index.js를 MCP 호스트의 mcpServers 설정에서 node로 실행하도록 지정하면 된다. Docker를 활용할 경우 docker compose up -d로 Redis와 함께 띄우면 분산 캐시 환경에서 바로 실행할 수 있다.
요구사항
- Node.js 18 이상이 필요하며 설치 여부는 node --version으로 확인하면 된다. README는 Node 18+와 npm 9+를 요구사항으로 명시하고 있어 런타임 호환성을 먼저 점검해야 한다. 로컬 개발 환경에서는 npm run dev와 같은 스크립트로 워치 모드를 사용할 수 있다.
- npm 9 이상을 사용해야 하며 의존성 설치와 빌드 파이프라인이 npm 스크립트 기반으로 구성되어 있다. 패키지 설치 후 npm run build로 프로덕션 빌드를 생성하고 MCP 호스트가 해당 빌드된 파일을 실행하도록 구성하면 된다. CI 환경에서는 테스트와 타입체크 스크립트를 포함해 validate 파이프라인을 권장한다.
- Redis 6 이상은 분산 캐시를 사용할 때 권장되며 README의 기본 설정은 REDIS_ENABLED=false로 되어 있어 Redis 없이도 동작한다. Redis가 활성화되면 레포는 REDIS_URL 또는 REDIS_HOST/PORT로 연결하며 연결 실패 시 인메모리 캐시로 자동 폴백한다. 분산 캐시 사용 시 키 네임스페이스와 TTL 값을 환경변수로 조정할 수 있다.
153
Stars
1.1k
Forks
+228
Trending
0
조회수
관련 토론
아직 관련 토론이 없습니다.
댓글
댓글을 작성하려면 로그인이 필요합니다.