"삼성전자 주가 분석해줘." Claude에게 이 한마디를 통해서 전문가 수준의 밸류에이션 보고서를 얻을 수 있었지만, 과연 맞는 내용인지 확신을 할 수 없었습니다. 해서 생성된 보고서가 과연 믿을 만한지 Claude에게 다시 검증을 맡겨봤습니다.
AI가 만든 보고서를, 같은 AI에게 검증시킨다. 이상하게 들릴 수 있지만, 이 방법은 무척 효과적이었습니다. 방법은 간단했습니다. Sotock-analysis 스킬을 통해서 얻은 삼성전자 보고서를 Claude에게 건네며 세 가지 관점에서 철저히 검증해달라고 요청했더니, Claude는 재무 데이터의 부정확성과 투자의견 판단 기준의 허점을 스스로 찾아냈습니다. 그리고 이 발견이 웹 스크래핑을 포기하고 금융감독원 DART 공식 데이터로 전환하는 결정적 계기가 되었습니다. 이 글은 그 검증 이야기에서 출발합니다.
검증을 위한 프롬프트는 다음과 같았습니다.
"삼성전자_Equity_Research_보고서_2026.docx 문서는 stock-analysis 스킬을 이용해서 생성한 주가 보고서입니다. stock-analysis 스킬이 제대로 동작하는지 철저하게 검증하려고 합니다.
(1) 수집된 재무데이터가 제대로된 데이터인지 확인 — 수집한 각각의 데이터 소스와 실제 데이터를 상세히 조사해주세요
(2) 밸류에이션 모델의 실제 계산 결과를 상세히 — 계산 공식에 대한 설명과 실제로 어떤 데이터가 어떻게 계산 되었는지 자세히 조사해주세요
(3) 모델 계산후 최종 판단의 기준이 무엇인지, 그러한 기준이 올바른지 상세히 조사해주세요"
Claude가 가장 먼저 수행한 것은 보고서에 사용된 재무 데이터의 출처와 정확성 조사였습니다. 보고서에 기재된 삼성전자의 매출액, 영업이익, 순이익, 감가상각비, 자본적 지출 등 각각의 숫자가 어디서 왔는지, 실제와 일치하는지를 하나씩 추적했습니다.
Claude의 검증 보고서는 웹 검색으로 수집한 재무 데이터에서 상당한 오류가 있음을 지적했습니다. 연도가 뒤섞인 숫자, 단위가 다른 값의 혼재, 출처를 특정할 수 없는 데이터 등 밸류에이션의 기초가 되는 입력값 자체를 신뢰할 수 없는 상황이었습니다. 웹 검색 결과에서 숫자를 추출하는 방식은 어떤 사이트의 어떤 시점 데이터를 가져왔는지 추적이 불가능하고, 같은 항목이라도 검색할 때마다 다른 값이 나올 수 있다는 것이 Claude의 분석이었습니다.
Claude는 이 문제가 단순한 버그가 아니라 웹 스크래핑이라는 방식 자체의 구조적 한계임을 함께 지적했습니다. 금융 포털 사이트들은 수시로 레이아웃을 변경하는데 이때마다 데이터 추출 로직이 깨지고, DCF 분석에 필수적인 감가상각비(D&A), 자본적 지출(Capex), 순운전자본 변동(NWC) 같은 세부 항목은 웹 검색만으로는 안정적으로 수집할 수 없다는 것이었습니다. 즉, 재무 분석의 생명인 데이터 정확성을 웹 스크래핑으로는 구조적으로 보장할 수 없었습니다.
이 발견이 결정적이었습니다. 아무리 정교한 DCF 모델을 구현해도 입력 데이터가 틀리면 결과는 무의미합니다. 정확한 재무 데이터를 안정적으로 확보할 수 있는 근본적인 방법이 필요했고, 이것이 금융감독원의 공식 전자공시시스템 DART를 데이터 소스로 채택하게 된 직접적인 계기가 되었습니다.
두 번째로 Claude가 수행한 것은 밸류에이션 모델의 계산 과정 추적이었습니다. WACC(가중평균자본비용) 산출 공식에 실제로 어떤 값이 대입되었는지, FCFF(잉여현금흐름) 계산에 재무제표의 어떤 항목이 사용되었는지, Reverse DCF에서 시장이 반영하고 있는 내재 성장률은 어떻게 역산되었는지를 단계별로 분석했습니다.
Claude의 검증 결과, 계산 공식 자체는 정확했습니다. 다만 Claude는 계산 과정의 투명성이 부족하다는 점을 함께 지적했습니다. 어떤 데이터가 어떤 공식에 어떻게 들어갔는지를 독자가 직접 확인할 수 있어야 하는데, 초기 버전에서는 이 부분이 부족했습니다. 이 피드백을 반영하여 보고서 말미에 부록 A(데이터 출처 종합표)와 부록 B(상세 계산 과정)를 추가하여, 모든 입력값과 계산 단계를 투명하게 공개하도록 스킬을 개선했습니다.
세 번째로 Claude가 검증한 것은 최종 투자의견을 내리는 기준이었습니다. 스킬이 "매수", "보유", "매도" 같은 투자의견을 제시할 때, 그 판단의 근거가 무엇인지, 그 기준이 합리적인지를 Claude가 분석했습니다.
Claude는 판단 기준에 실제 문제가 있음을 지적했습니다. 초기 버전에서는 Forward DCF로 산출한 적정주가와 현재 주가의 괴리율만으로 투자의견을 결정했는데, Claude는 이것이 지나치게 단순한 기준이라고 판단했습니다. 적정주가 자체가 가정에 크게 의존하는 값인데, 그 단일 값만으로 매수/매도를 판단하는 것은 위험하다는 것이었습니다.
이 피드백을 받아들여, Reverse DCF(시장 내재 성장률의 합리성), Forward DCF(3가지 시나리오별 상승여력), 비교 밸류에이션(동종업계 대비 위치), 민감도 분석(핵심 변수 변화에 따른 적정주가 변동폭)을 종합적으로 고려하는 다중 기준으로 스킬을 수정했습니다. 또한 투자의견의 확신도를 함께 표시하여, 분석 결과의 불확실성을 독자에게 솔직하게 전달하도록 개선했습니다.
검증의 교훈: AI가 만든 결과물을 AI에게 다시 검증시키는 것은 매우 효과적인 품질 관리 방법입니다. 사람이 직접 재무 데이터를 하나씩 대조하려면 상당한 전문 지식과 시간이 필요하지만, Claude는 프롬프트 하나로 데이터 출처 추적, 계산 과정 역산, 판단 기준 분석을 한번에 수행했습니다. 이 검증이 DART 공식 데이터 도입과 판단 기준 고도화라는 두 가지 핵심 개선으로 이어졌습니다.
1장의 검증에서 드러난 문제의 해답은 의외로 단순했습니다. 웹 스크래핑으로 2차 가공 데이터를 긁어올 것이 아니라, 원본 데이터를 직접 가져오면 됩니다. 그 원본 데이터의 출처가 바로 DART(Data Analysis, Retrieval and Transfer System), 한국 금융감독원이 운영하는 전자공시시스템입니다.
DART에는 모든 상장기업의 사업보고서, 재무제표, 주요사항보고서가 공식적으로 등록되어 있습니다. 핵심은 이것이 기업이 법적 의무에 따라 직접 제출한 원본 데이터라는 점입니다.
DART는 Open API도 제공합니다. 재무상태표, 손익계산서, 현금흐름표는 물론이고, 개별/연결 재무제표 구분, 분기/반기/사업보고서 선택, 그리고 수익성/안정성/성장성/활동성 같은 주요 재무지표까지 프로그래밍 방식으로 가져올 수 있습니다. 무료로 API 키를 발급받을 수 있고, 하루 10,000건까지 요청이 가능합니다.
그런데 DART API가 아무리 좋아도, Claude가 그 API를 직접 호출할 수는 없습니다. 여기서 MCP(Model Context Protocol)라는 개념이 등장합니다. MCP는 AI 모델이 외부 도구나 데이터 소스와 대화할 수 있게 해주는 표준 규약입니다.
비유하자면 이렇습니다. Claude는 매우 똑똑하지만, 기본적으로는 대화만 할 수 있는 상태입니다. 그런데 MCP 서버를 연결하면, Claude가 직접 데이터베이스를 조회하거나, 외부 API를 호출하거나, 파일을 읽고 쓸 수 있게 됩니다. 마치 스마트폰에 앱을 설치하면 새로운 기능이 추가되는 것처럼, MCP 서버는 Claude에게 새로운 능력을 부여합니다.
DART MCP 서버를 내 컴퓨터에서 실행하려면 하나의 기술이 더 필요합니다. Docker입니다. Docker는 초보자에게 생소할 수 있는데, 아주 간단하게 설명하면 "프로그램을 상자에 넣어서 어디서든 똑같이 실행할 수 있게 해주는 기술"입니다.
보통 프로그램을 설치하려면 운영체제 버전, 다른 라이브러리 설치 여부 등 환경이 맞아야 합니다. Docker는 프로그램과 그 프로그램이 필요로 하는 모든 환경을 하나의 "컨테이너"라는 상자에 담아놓습니다. 그래서 이 컨테이너만 실행하면 누구의 컴퓨터에서든 동일하게 작동합니다.
DART MCP 서버의 경우, snaiws/dart:latest라는 Docker 이미지로 제공됩니다. 이 이미지 안에는 DART API와 통신하는 코드, 필요한 라이브러리, 설정 파일이 모두 포함되어 있어서, Docker 명령 한 줄로 설치가 끝납니다.
정리하면 이런 흐름입니다. DART(공식 데이터) → MCP 서버(Claude와 DART를 연결) → Docker(MCP 서버를 실행하는 컨테이너). 3장에서는 이 세 가지를 실제로 설치하고 설정하는 과정을 단계별로 안내합니다.
이 장에서는 DART MCP 서버를 Claude Desktop에 연결하는 전체 과정을 단계별로 설명합니다. 터미널 명령어가 나오지만 복잡하지 않으니, 하나씩 따라해 보시기 바랍니다.
DART MCP 서버는 Docker 위에서 실행되므로, 가장 먼저 Docker Desktop을 설치해야 합니다. Mac 사용자는 docker.com/products/docker-desktop에서 "Download for Mac" 버튼을 클릭합니다. Apple Silicon(M1/M2/M3/M4)과 Intel 중 자신의 칩에 맞는 버전을 선택하세요. 다운로드된 .dmg 파일을 열고, Docker 아이콘을 Applications 폴더로 드래그하면 설치가 완료됩니다.
Windows 사용자는 같은 사이트에서 "Download for Windows" 버전을 받아 설치합니다. 설치 중 WSL 2 관련 설정이 나올 수 있는데, 기본 옵션 그대로 진행하면 됩니다.
설치 후 Docker Desktop 앱을 실행합니다. 상단 메뉴바(Mac) 또는 시스템 트레이(Windows)에 고래 모양 아이콘이 나타나면 정상적으로 실행된 것입니다.
터미널(Mac) 또는 명령 프롬프트(Windows)를 열어서 설치가 잘 되었는지 확인합니다.
docker --version
다음과 비슷한 결과가 나오면 성공입니다.
Docker version 27.5.1, build 9f9e405
DART MCP 서버가 금감원 데이터에 접근하려면 API 인증키가 필요합니다. 무료로 발급받을 수 있으며, 하루 10,000건까지 요청할 수 있습니다.
opendart.fss.or.kr에 접속하여 회원가입을 합니다. 로그인 후 "인증키 신청" 메뉴로 이동하여 이용목적(개인 학습/연구 등)을 선택하고 신청하면, API 키가 발급됩니다. 이 키는 40자리 영숫자 문자열이며, 다음 단계에서 사용합니다.
Docker Desktop이 실행 중인 상태에서, 터미널을 열고 다음 명령어를 입력합니다.
docker pull snaiws/dart:latest
처음 실행하면 이미지 다운로드에 1~2분 정도 걸립니다. 다운로드가 완료되면 다음과 같은 메시지가 표시됩니다.
latest: Pulling from snaiws/dart
Digest: sha256:abcdef1234567890...
Status: Downloaded newer image for snaiws/dart:latest
이미지가 정상적으로 다운로드되었는지 확인하려면 다음 명령어를 사용합니다.
docker images snaiws/dart
이제 가장 중요한 단계입니다. Claude Desktop 앱이 DART MCP 서버를 인식하도록 설정 파일을 수정합니다.
Mac의 경우 설정 파일 경로는 다음과 같습니다.
~/Library/Application Support/Claude/claude_desktop_config.json
이 파일을 텍스트 편집기로 엽니다. 터미널에서 다음과 같이 열 수 있습니다.
open -a TextEdit ~/Library/Application\ Support/Claude/claude_desktop_config.json
파일을 열면 mcpServers라는 항목이 보입니다. 여기에 DART 서버 설정을 추가합니다. 기존에 다른 MCP 서버가 등록되어 있다면, 그 뒤에 쉼표를 찍고 아래 내용을 추가합니다.
"DART": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"-v", ".:/app/data/mcp/DART",
"-e", "DART_API_KEY=여기에_발급받은_API키_입력",
"-e", "USECASE=light",
"snaiws/dart:latest"
]
}
DART_API_KEY= 뒤에 3.2단계에서 발급받은 API 키를 붙여넣습니다. USECASE=light는 밸류에이션 분석에 필요한 핵심 도구들만 활성화하는 모드입니다.
설정 파일 작성 시 주의사항
JSON 형식이므로 쉼표와 중괄호 위치에 주의해야 합니다. 기존 MCP 서버 항목이 있다면 그 항목의 닫는 중괄호(}) 뒤에 쉼표(,)를 추가한 다음 DART 설정을 넣습니다. 마지막 항목 뒤에는 쉼표를 넣지 않습니다.
설정 파일을 저장하고 Claude Desktop을 완전히 종료한 뒤 다시 실행합니다. Claude Desktop이 시작되면서 설정 파일을 읽고, DART Docker 컨테이너를 자동으로 실행합니다.
정상적으로 연결되었는지 확인하는 가장 간단한 방법은 Cowork 세션에서 Claude에게 직접 물어보는 것입니다. "DART MCP 도구 중 get_corpcode를 사용할 수 있어?"라고 물어보면, Claude가 도구 목록을 확인하고 응답해줍니다.
stock-analysis-kr 스킬의 핵심 설계 원칙은 데이터 소스의 명확한 분리입니다. 재무 데이터(매출, 영업이익, 순이익, 감가상각비, Capex 등)는 100% DART MCP를 통해서만 수집합니다. 기업이 금감원에 직접 제출한 원본 데이터이므로 정확성이 보장됩니다.
반면 시장 데이터(현재 주가, 시가총액, 베타 등)는 웹 검색을 통해 수집합니다. 이런 실시간 시장 데이터는 DART에서 제공하지 않기 때문입니다. 이렇게 데이터 소스를 분리함으로써, 분석의 기초가 되는 재무 데이터의 신뢰도를 확보하면서도 최신 시장 상황을 반영할 수 있게 되었습니다.
보고서는 다음과 같은 단계를 거쳐 생성됩니다. 먼저 DART MCP를 통해 최근 3개년 재무제표와 주요 재무지표를 수집합니다. 이어서 웹 검색으로 현재 주가, 시가총액, 동종업계 기업들의 정보를 가져옵니다. 그런 다음 Python 스크립트(valuation_model.py)가 WACC 산출, FCFF 계산, Reverse DCF, Forward DCF, 비교 밸류에이션을 순차적으로 수행합니다. 마지막으로 JavaScript(build_report.js)가 분석 결과를 차트와 함께 Word 보고서로 변환합니다.
완성된 보고서는 꽤 방대합니다. 기업 개요와 투자 의견 요약으로 시작해서, 재무 성과 분석(3개년 추이 차트 포함), Reverse DCF(시장이 현재 주가에 어떤 성장률을 반영하고 있는지 역산), Forward DCF(3가지 시나리오별 적정 주가 산출), 비교 밸류에이션(동종업계 대비 평가), 민감도 분석(핵심 변수 변화에 따른 적정 주가 변동), 그리고 최종 투자 의견까지 포함됩니다.
특히 모든 수치에는 [실제], [추정], [가정]이라는 태그가 붙어서, 독자가 어떤 숫자가 공식 데이터이고 어떤 숫자가 분석자의 추정인지 투명하게 확인할 수 있습니다.
보고서 말미에는 두 개의 부록이 포함됩니다.
부록 A는 보고서에 사용된 모든 데이터를 출처별로 정리한 종합 테이블입니다. DART MCP에서 가져온 재무 데이터, 웹 검색으로 수집한 시장 데이터, WACC 계산에 사용한 입력값, Forward DCF 시나리오 설정, 비교 대상 기업 목록이 각각의 소표로 깔끔하게 정리됩니다.
부록 B는 밸류에이션 모델의 상세 계산 과정입니다. FCFF 산출, WACC 계산, Reverse DCF 역산, Forward DCF 시나리오별 현금흐름 할인, 비교 밸류에이션의 멀티플 적용, 그리고 최종 투자 의견 도출 근거가 단계별로 정리됩니다. 각 섹션에는 초보자를 위한 개념 설명도 포함되어 있습니다.
stock-analysis-kr 스킬을 만들면서 얻은 가장 큰 교훈은, AI 도구의 품질은 결국 데이터의 품질에 의해 결정된다는 것입니다. 아무리 정교한 DCF 모델을 구현해도, 입력 데이터가 부정확하면 결과도 부정확합니다. DART MCP 서버를 통해 공식 재무 데이터에 직접 접근할 수 있게 된 것이 이 프로젝트의 진짜 전환점이었습니다.
물론 한계도 분명합니다. 이 보고서는 정량적 분석에 초점을 맞추고 있어서, 경영진의 역량, 산업 구조 변화, 규제 환경 같은 정성적 요소는 충분히 반영하지 못합니다. 또한 WACC 산출이나 성장률 가정에는 불가피하게 분석자의 판단이 개입되므로, 보고서의 결론을 절대적인 것으로 받아들여서는 안 됩니다.
그럼에도 불구하고, Claude라는 AI 도구와 DART라는 공식 데이터를 연결함으로써, 과거에는 증권사 애널리스트만 할 수 있었던 수준의 밸류에이션 분석을 누구나 몇 분 만에 수행할 수 있게 되었습니다. 이것이 MCP 서버라는 생태계가 열어주는 가능성이며, 앞으로 다양한 분야에서 비슷한 혁신이 일어날 것으로 기대합니다.
다음은 이번에 새로 만든 스킬로 분석한 보고서입니다.
이 글에서 다룬 stock-analysis-kr 스킬은 초기 버전인 stock-analysis 스킬의 검증 과정에서 발견된 문제들을 해결하기 위해 전면 재설계한 결과물입니다. 두 스킬의 차이를 한눈에 비교할 수 있도록 아래 표로 정리했습니다.
"Claude Skill로 애널리스트급 주식 보고서를 자동 생성하는 방법" 블로그 글에서 생성한 skill 파일을 기초로 한번 직접 MCP도 연결하고 스킬도 업그레이드해보세요. 시작은 미약했지만, 결과는 놀랍습니다 ^^