loading…
Search for a command to run...
loading…
Enables AI assistants to analyze Korean financial disclosures (DART) with insider trading signals, accounting risk scores, Buffett-style quality checklists, and
Enables AI assistants to analyze Korean financial disclosures (DART) with insider trading signals, accounting risk scores, Buffett-style quality checklists, and automatic conversion of HWP/PDF attachments to markdown.
OpenDART 83개 API를 15개 도구로. 공시·재무·지분·XBRL + 버핏급 애널리스트 프레임(내부자 시그널·회계 리스크·퀄리티 체크리스트) + HWP/PDF 첨부 마크다운화를 AI 어시스턴트에서 바로 사용.
npm version MCP 1.27 License: MIT
금융감독원 OpenDART 전자공시 기반 MCP 서버 + CLI. Claude Desktop, Cursor, Windsurf, Claude Code 등에서 바로 사용 가능.
자매 프로젝트: korean-law-mcp (법제처 41 API → 15 도구)
English documentation → README-EN.md
macOS / Linux / Windows 공용. Node.js 20.19+ 만 깔려있으면 됩니다.
npx -y korean-dart-mcp setup
대화형 마법사가 띄웁니다:
[감지됨] 표시)Windows 도 자동으로 cmd /c npx 래핑해줘서 npx not found 이슈 해결됨. 수동 JSON 편집 불필요.
수동 설정을 원하면 아래 설치 및 사용법 섹션 참고.
get_xbrl format="markdown_full" — presentation/calculation linkbase 를 파싱해 전체 계정 + 계층 구조 + 합산 검증. 기존 markdown 의 whitelist 50태그 대비 BS 50+ / IS 15+ / CF 10+ 전부 커버. 금융지주 DX prefix 등 업종별 택소노미 자동 대응. 6MB XBRL → ~30-60KB 마크다운.search_disclosures 90일 자동분할 — corp_code 미지정 + 기간 90일 초과 시 자동으로 90일 청크 분할 (OpenDART "전체시장 3개월 제약" 우회). 최대 40 chunks(≈10년).insider_signal / disclosure_anomaly summary_text — 한국어 자동 요약문 필드 추가. LLM 이 원시 테이블 뽑기 전 한 줄로 맥락 파악.증권사 앱만으론 아쉬운 개미 투자자 기준 킬러 유스케이스. Claude 에게 프롬프트로 그냥 말하면 됨.
"삼성전자 최근 1년 임원·대주주 매수/매도 보고 어때?"
→ insider_signal 이 매수 vs 매도 클러스터 시그널로 집계. 실측: 매수 2,429 vs 매도 43 → strong_buy_cluster (경영진이 자기 돈으로 사고 있음).
HTS 에선 공시 하나하나 뒤져야 알 수 있는 것을 한 줄 프롬프트로.
"카카오 최근 3년 회계 리스크 점수 뽑아줘"
→ disclosure_anomaly 로 0-100 스코어 + verdict(clean/watch/warning/red_flag). 실측: 카카오 40점 warning — 정정공시 32.8% 가 임계 초과. 개인이 수동으로 확인 불가능한 리스크 플래그를 자동 탐지.
"삼성전자 2023 사업보고서에서 '위험요소'·'주요 사업' 섹션 요약"
→ get_attachments(mode="extract") 가 PDF 2.2MB → 마크다운 92만 자로 변환 (3.7초). Claude 가 섹션별로 직접 검색·요약. 증권사 리포트 없이도 원본 읽기 가능.
"최근 30일 자기주식 취득 결정한 상장사 전부"
"최근 일주일 유상증자·CB 발행 공시 회사"
"최근 30일 합병·분할 결정 공시"
→ search_disclosures(preset=...) 22개 프리셋. 자기주식 취득 = 주가 부양 시그널 / 유상증자·CB = 희석 경계. 실측: 최근 30일 자기주식 취득 59건. HTS 에서 놓치는 배치 정보를 한 번에.
"삼성전자 · SK하이닉스 · LG전자 5년 ROE·부채·성장성 비교"
→ buffett_quality_snapshot(corps=[...]) 이 5지표 자동 랭킹. 실측 (위 실전 시나리오 1 표 참고): SK하이닉스 3/4 체크 통과, 부채 안정성은 삼성 압도적. 종목 고를 때 감각 의존 대신 수치 근거.
아래 결과는 실제 DART API 를 때려 얻은 실측값. 전부 scripts/showcase-v0_9_1.mjs 로 재현 가능 (12/12 PASS).
프롬프트: "삼성전자·SK하이닉스·LG전자 최근 5년 퀄리티 지표 비교해줘"
→ buffett_quality_snapshot(corps=["삼성전자","SK하이닉스","LG전자"], years=5)
| 기업 | 평균 ROE | 최근 D/E | 매출 CAGR | 순이익 CAGR | 체크리스트 |
|---|---|---|---|---|---|
| 삼성전자 | 10.39% | 29.94% | 4.51% | 3.17% | 1/4 |
| SK하이닉스 | 12.86% | 45.95% | 22.6% | 45.37% | 3/4 |
| LG전자 | 5.37% | 140.33% | 4.81% | -3.63% | 0/4 |
자동 생성 랭킹 (5지표별):
프롬프트: "삼성전자 최근 1년 내부자 거래 매수/매도 클러스터"
→ insider_signal(corp="삼성전자", start="2025-04-18", end="2026-04-18")
삼성전자: 2,473건 보고 (매수 2,429 / 매도 43).
고유 매수자 1,047명 vs 매도자 40명, 순매수 +2,302,375주.
→ strong_buy_cluster 시그널.
최강 클러스터: 2026Q1 (매수 985명/매도 18명).
버핏 철학의 "경영진이 본인 돈으로 매수하는가" 를 한 호출로 정량화. 최근 24:1 매수 우세.
프롬프트: "카카오 최근 3년 회계 리스크"
→ disclosure_anomaly(corp="카카오")
카카오 (2023-04~2026-04): ⚠️ 경고, 점수 40/100
- 정정공시 167/509건 (32.8%) ← 임계(20%) 초과로 +30점
- 자본 스트레스 공시 5건 ← +10점
- verdict: warning
정정공시·감사인 교체·비적정 의견·자본 스트레스 4개 축을 0-100 스코어로 집계 + 개별 flag 의 evidence 구조화. LLM 은 스토리만 만들면 됨.
프롬프트: "삼성전자 2023 사업보고서 재무제표 전체 계정 뽑아줘"
→ get_xbrl(rcept_no="20240312000736", format="markdown_full")
기간: 당기 2023-12-31 / 전기 2022-12-31 / 전전기 2021-12-31
계정 수: BS 52행 · IS 18행 · CF 12행 (whitelist 모드의 17/13/7행 대비 3배)
마크다운 크기: 8,905자 (원본 XBRL 6MB → 99.85% 절감)
계산 검증: ✅ 모두 일치 (0 건 위반)
taxonomy roles: presentation 10개 · calculation 8개
소요: 615ms
계산 검증 자동화가 핵심 — calculation linkbase 의 summation-item 관계로 "부모=자식 합산"을 검증해서 공시 오기재를 즉시 탐지.
프롬프트: "신한지주 최신 사업보고서 재무제표 전체"
→ 내부적으로 search_disclosures 로 rcept_no 찾고 → get_xbrl(format="markdown_full")
신한지주 2025 사업보고서 (rcept_no=20260318000826)
BS 44행 · IS 49행
계산 검증 위반: 3건 (금융업 특유 항목)
→ DX prefix (금융지주 전용) taxonomy 를 코드 변경 없이 자동 처리
dart-fss 도 XBRL ZIP 은 받지만 금융업 DX prefix 택소노미 자동 대응은 문서에 명시되어있지 않음. 업종별 커버리지는 이 MCP 의 강점.
프롬프트: "최근 30일 자기주식 취득 결정한 상장사 전부"
→ search_disclosures(preset="treasury_buy", days=30, limit=500)
매칭 공시 59건 / 8페이지 병렬 수집 (17.5초)
최신 5건:
2026-04-17 티플랙스 — 자기주식취득신탁계약해지결정
2026-04-17 엠투엔 — 자기주식취득결정
2026-04-17 PS일렉트로닉스 — 자기주식취득신탁계약해지결정
2026-04-15 아세아 — 자기주식취득신탁계약해지결정
2026-04-15 아세아시멘트 — 자기주식취득신탁계약해지결정
22개 프리셋이 pblntf_ty + report_nm 정규식을 자동 조립. LLM 이 DART 코드를 외울 필요 없음.
프롬프트: "최근 6개월 사업보고서 낸 회사 전부"
→ search_disclosures(preset="annual_report", days=180)
자동분할: 3 chunks (DART '전체시장 3개월' 제약 자동 우회)
총 수집 6,000건 → 사업보고서 매칭 2,625건 (10.3초)
최신 3건:
2026-01-09 미라셀 사업보고서 (2024.12)
2026-01-08 케이원제15호판교위탁관리부동산투자회사 사업보고서 (2025.10)
2026-01-08 삼성FN리츠 사업보고서 (2025.10)
프롬프트: "카카오 최근 3년 자본 이벤트 전부"
→ get_corporate_event(corp="카카오", mode="timeline", start="2023-04-18", end="2026-04-18")
| 이벤트 유형 | 건수 |
|---|---|
| 자기주식 처분 | 14 |
| 감자 | 3 |
| 합병 | 2 |
| CB 발행 | 1 |
| EB 발행 | 1 |
| 합계 | 21 |
36개 이벤트 enum 을 한 번에 병렬 수집 → 날짜순 통합. LLM 이 "카카오가 최근 뭘 했는지" 즉시 파악.
프롬프트: "삼성전자 최근 3년 지분 변동 전부"
→ get_major_holdings(corp="삼성전자")
majorstock(5%룰): 41건 — 최근: 삼성물산 19.70% (2026-04-17)
elestock(임원·주요주주): 200건 반환 (2,615건 중 최근순)
기간: 2023-04-18 ~ 2026-04-18
두 엔드포인트(majorstock + elestock)를 한 호출로 합성 — Python 래퍼는 두 번 호출 + pandas merge 필요.
프롬프트: "삼성전자 6년 버핏 체크리스트"
→ buffett_quality_snapshot(corps=["삼성전자"], years=6)
삼성전자 2020~2025:
- ROE 평균 10.26% (min 4.26 / max 15.69 / stddev 3.58)
- D/E 최근 29.94% / 평균 31.11%
- 매출 CAGR 7.09% · 순이익 CAGR 11.35%
체크리스트 3/4:
❌ consistent_high_roe (모든 연도 ROE ≥ 15%)
✅ low_debt (최근 부채비율 ≤ 100%)
✅ growing_revenue (매출 CAGR ≥ 5%)
✅ growing_earnings (순이익 CAGR ≥ 5%)
프롬프트: "삼성전자 최근 자기주식 취득 결정 공시 원문"
→ search_disclosures(preset="treasury_buy") 로 rcept_no 찾고 → download_document(format="markdown")
원본: 2026-03-18 주요사항보고서(자기주식취득결정)
원본 XML 32,618자 → 마크다운 2,272자 변환 (93% 절감)
# 주요사항보고서(자기주식 취득 결정) / 삼성전자
## 자기주식 취득 결정
| 1. 취득예정주식(주) | 보통주식 | ...
| 3. 취득예상기간 | 시작일 | 2026년 03월 19일 |
DART 전용 XML(dart4.xsd)을 자체 파서로 heading·테이블 보존 마크다운으로.
프롬프트: "삼성전자 2023 사업보고서 PDF 본문"
→ get_attachments(rcept_no="20240312000736", mode="extract", index=0)
한국 DART 생태계 조사 결과 (2026-04-18 기준):
| 기능 | OpenDartReader (438⭐, Python) | dart-fss (364⭐, Python) | hypn4/opendart-fss-mcp (85 도구) | RealYoungk/opendart-mcp (83 도구) | korean-dart-mcp (15 도구) |
|---|---|---|---|---|---|
| MCP 네이티브 | ❌ | ❌ | ✅ | ✅ | ✅ |
| Node.js/TypeScript (npm) | ❌ | ❌ | ❌ | ❌ | ✅ (유일) |
| 엔드포인트 1:1 커버리지 | 대부분 | 공시+재무 | 85개 전부 | 83개 전부 | 83→15 enum 압축 |
| 회사명 자동 해결 | 부분 | 부분 | ✅ (오타·초성) | ✅ | ✅ (SQLite FTS 선적재) |
| XBRL presentation/calculation linkbase | ❌ | ZIP만 | ZIP+taxonomy | ZIP만 | ✅ 자동 markdown + 계산 검증 |
| HWP/PDF 첨부 → 마크다운 | ❌ | ❌ | ❌ | ❌ | ✅ (유일, kordoc) |
insider_signal 클러스터 |
❌ | ❌ | ❌ | ❌ | ✅ (유일) |
disclosure_anomaly 0-100 스코어 |
❌ | ❌ | ❌ | ❌ | ✅ (유일) |
buffett_quality_snapshot 체크리스트 |
❌ | ❌ | ❌ | ❌ | ✅ (유일) |
| 90일 자동분할 · 페이지 병렬화 | ❌ | ❌ | ❌ | ❌ | ✅ |
| ZIP slip/bomb 방어 | n/a | n/a | ❌ | ❌ | ✅ |
Python 래퍼(OpenDartReader · dart-fss) 는 "quant·백테스터가 Jupyter 에서 DataFrame 으로 쓰는 용", 기존 Python DART MCP 6종은 "LLM 이 DART 원시 JSON 을 그대로 받아보는 용", 이 프로젝트는 한국 DART 생태계에서 유일하게 LLM 네이티브로 설계된 Node.js MCP — 83 API 를 15 enum 으로 압축하고, XBRL 완전 파싱 · HWP/PDF 마크다운화 · 내부자/어노말리/버핏 애널리스트 프레임을 기본 탑재한 유일한 서버.
DART 83 API 를 LLM 이 스토리로 해석 가능한 분석 프레임으로 가공해서 넘깁니다. 아래는 대표적인 네 가지 사용 시나리오.
"삼성전자 임원 거래 최근 2년 매수/매도 클러스터 분석해줘"
→ insider_signal 한 번으로:
strong_buy_cluster (매수/매도 비율 25:1)buy_cluster (n=42, net +380만주) → 2024Q2 buy_cluster (n=31, net +210만주) ...버핏 철학의 "경영진이 본인 돈으로 매수하는가?" 를 데이터로 굳혀 LLM 에 넘깁니다.
"삼성전자·SK하이닉스·LG전자 5년 퀄리티 비교"
→ buffett_quality_snapshot(corps=[...]):
| 기업 | 평균 ROE | D/E | 매출 CAGR | 순이익 CAGR | 체크리스트 |
|---|---|---|---|---|---|
| SK하이닉스 | 12.86% | 45.95% | 22.6% | 45.37% | 3/4 |
| 삼성전자 | 10.39% | 29.94% | 4.51% | 3.17% | 1/4 |
| LG전자 | 5.37% | 140.33% | 4.81% | -3.63% | 0/4 |
"카카오 최근 3년 회계 리스크 스코어"
→ disclosure_anomaly:
verdict: clean / watch / warning / red_flag"삼성전자 2023 사업보고서 본문에서 '위험요소' 섹션 요약해줘"
→ get_attachments(mode=extract):
DART XML 원문(download_document(format=markdown)) 도 자체 파서로 heading/테이블 보존된 마크다운 변환.
한국 상장사 약 3,000개의 공시·재무가 DART 한 곳에 모여 있지만, 개발자가 쓰려면 83개 엔드포인트를 직접 조합해야 합니다. 다행히 한국 개발자 생태계에는 OpenDartReader(438⭐) 와 dart-fss(364⭐) 라는 훌륭한 Python 래퍼가 있어, 엔드포인트 매핑·XBRL 파싱 노하우가 이미 정리돼 있습니다. 이 프로젝트도 그 매핑을 상당 부분 그대로 수용했습니다.
이 프로젝트는 두 래퍼가 커버하지 못하는 다른 레이어를 목표로 합니다:
둘은 보완 관계입니다. DataFrame 이 필요하면 Python 래퍼, AI 에이전트용 프레임이 필요하면 이 MCP.
모든 방법에 공통으로 OpenDART 인증키가 필요합니다.
DART_API_KEY 에 넣습니다. 일 20,000건 무료.setup 마법사 (추천, 30초)npx -y korean-dart-mcp setup
대화형으로 API 키 입력 → 클라이언트 감지 → 설정 파일 자동 패치. macOS / Linux / Windows 공용. Windows 에선 cmd /c npx 래핑까지 자동 처리. 수동 JSON 편집 불필요.
지원: Claude Desktop / Claude Code / Cursor / VS Code / Windsurf / Gemini CLI / Zed / Antigravity.
MODULE_NOT_FOUND/Cannot find module ...\build\index.js가 뜨면: 과거에 깨진 글로벌 설치가 남아있는 상태입니다. 아래 중 하나로 해결:# A. 글로벌 구버전 제거 후 재시도 (Windows/Mac/Linux 공통) npm uninstall -g korean-dart-mcp npx -y korean-dart-mcp@latest setup # B. 또는 글로벌 무시하고 항상 최신 받아오기 npx --yes --package=korean-dart-mcp@latest korean-dart-mcp setup
Claude Code 사용자는 marketplace 등록 후 /plugin 으로 설치하면 끝.
/plugin marketplace add chrisryugj/korean-dart-mcp
/plugin install korean-dart
설치 시 OpenDART 인증키 입력 프롬프트가 뜸 (한 번만). 이후 15개 DART 도구 자동 활성화.
사전 준비: Node.js 20.19.0 이상 설치 (LTS 권장).
설정 파일에 아래 내용을 추가하세요 (YOUR_API_KEY 를 본인 키로 교체):
설정 파일 위치:
| 앱 | Windows | Mac |
|---|---|---|
| Claude Desktop | %APPDATA%\Claude\claude_desktop_config.json |
~/Library/Application Support/Claude/claude_desktop_config.json |
| Cursor | 프로젝트 .cursor/mcp.json |
프로젝트 .cursor/mcp.json |
| Windsurf | 프로젝트 .windsurf/mcp.json |
프로젝트 .windsurf/mcp.json |
| Claude Code | ~/.claude.json 또는 프로젝트 .mcp.json |
~/.claude.json 또는 프로젝트 .mcp.json |
설정 내용:
{
"mcpServers": {
"korean-dart": {
"command": "npx",
"args": ["-y", "korean-dart-mcp"],
"env": {
"DART_API_KEY": "YOUR_API_KEY"
}
}
}
}
저장 후 앱을 재시작하면 15개 DART 도구가 활성화됩니다.
이미 다른 MCP 서버를 쓰고 있다면,
"mcpServers": { ... }안에"korean-dart": { ... }부분만 추가하세요.
⚠️ Windows 사용자: 위 설정으로 fail 이 뜨면 Claude Desktop 이 Windows PATH 의
.cmd확장자를 해석하지 못해npx를 못 찾는 이슈입니다. 아래처럼cmd /c로 래핑하세요:{ "mcpServers": { "korean-dart": { "command": "cmd", "args": ["/c", "npx", "-y", "korean-dart-mcp"], "env": { "DART_API_KEY": "YOUR_API_KEY" } } } }그래도 안 되면: ① Node.js 20.19.0 이상 설치 여부 확인 (
node --version), ② 방화벽이opendart.fss.or.kr차단하는지 확인, ③ 첫 기동 시 corp_code 덤프(11.6만건, 약 5-10초) 다운로드 중이니 10초 정도 기다린 후 재시도.
npm install -g korean-dart-mcp
설정 파일에 command 를 바꿔 등록:
{
"mcpServers": {
"korean-dart": {
"command": "korean-dart-mcp",
"env": {
"DART_API_KEY": "YOUR_API_KEY"
}
}
}
}
첫 실행 시 OpenDART 가 제공하는 전체 기업 덤프(약 11.6만 건) 를 내려받아 ~/.korean-dart-mcp/corp_code.sqlite 에 FTS 인덱싱합니다 (약 5초, 24시간 TTL). 이후 회사명 / 종목코드 / corp_code 어느 형식으로 넘겨도 자동 해석됩니다.
| 방법 | 사용법 | 언제 쓰나 |
|---|---|---|
| 환경변수 | DART_API_KEY=... |
Claude Desktop 등 설정 파일 |
.env 파일 |
프로젝트 루트 .env |
로컬 개발 |
기본 조회
"삼성전자 최근 분기 매출·영업이익, 전년 동기 대비 변화"
"최근 30일 자기주식 취득 결정한 상장사 전부"
"네이버 2023년 임원 보수 5억 이상 명단"
애널리스트 프레임
"삼성전자 임원 거래 최근 2년 매수/매도 클러스터 분석" → insider_signal
"카카오 최근 3년 회계 리스크 스코어 (정정·감사인·의견)" → disclosure_anomaly
"네이버 10년 버핏식 퀄리티 체크리스트" → buffett_quality_snapshot
"삼성·SK하이닉스·LG전자 5년 퀄리티 비교 + 순위" → buffett_quality_snapshot(corps=[...])
"LG에너지솔루션 2021년 이후 자본 이벤트 타임라인 전부" → get_corporate_event(mode=timeline)
원문 분석
"삼성전자 2023 사업보고서 PDF 본문에서 '위험요소' 섹션 요약" → get_attachments(mode=extract)
"삼성전자 자기주식 취득 결정 원본 XML 마크다운으로" → download_document(format=markdown)
배치 조회
"최근 7일 자기주식 취득 결정 상장사 전부" → search_disclosures(preset=treasury_buy)
"최근 30일 전환사채·신주인수권부사채 발행 공시" → search_disclosures(preset=cb_issue, days=30)
| 도구 | 용도 |
|---|---|
resolve_corp_code |
회사명 → corp_code (SQLite FTS 선적재, 전수 11.6만 건) |
search_disclosures |
공시 검색. page / preset(22종 자동필터) / all_pages 3모드 + 페이지 병렬화 + 90일 자동분할(v0.9) |
get_company |
기업 개황 (업종·대표자·설립일) |
get_financials |
재무정보. scope: summary(주요계정, 단일/다중사) / full(전체 BS/IS/CF, 단일사) |
download_document |
공시 원문 → format: markdown(DART XML 자체 파서) / raw / text |
get_xbrl |
XBRL. format: raw ZIP 해제(보안 가드) / markdown whitelist 50태그 / markdown_full taxonomy 전체(v0.9) |
get_periodic_report |
정기보고서 29 섹션 enum (배당·최대주주·감사인·보수·자금사용 등) |
| 도구 | 용도 |
|---|---|
get_shareholders |
지배구조 4섹션(최대주주·변동·소액주주·주식총수) 병렬 합성 |
get_executive_compensation |
임원 보수 6섹션(전체·5억 이상·상위 5·미등기·주총승인·유형별) |
get_major_holdings |
5%룰(majorstock) + 임원·주요주주 본인 지분(elestock) |
get_corporate_event |
주요사항보고서 36 이벤트 enum + mode: single / timeline |
| 도구 | 용도 |
|---|---|
insider_signal |
임원 거래를 매수/매도 클러스터 시그널로 집계 (strong_buy_cluster 등) |
disclosure_anomaly |
정정공시·감사인 교체·비적정 의견·자본 스트레스 → 0-100 score + verdict |
buffett_quality_snapshot |
N년 ROE/부채/CAGR + 버핏 체크리스트 4종. corps 배열 지원 (1개=시계열, 2+=비교+랭킹) |
| 도구 | 용도 |
|---|---|
get_attachments |
공시 첨부 HWP/HWPX/PDF/DOCX/XLSX → 마크다운 (kordoc) + ZIP 재귀 파싱 |
dart4.xsd 전용 마크업을 heading·테이블 보존된 마크다운으로 변환search_disclosures 배치 모드 30-50초 → 17초 (2-3배)Made by 류주임 @ 광진구청 AI동호회 AI.Do
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"korean-dart-mcp": {
"command": "npx",
"args": []
}
}
}Web content fetching and conversion for efficient LLM usage.
Retrieval from AWS Knowledge Base using Bedrock Agent Runtime.
автор: modelcontextprotocolProvides auto-configuration for setting up an MCP server in Spring Boot applications.
A very streamlined mcp client that supports calling and monitoring stdio/sse/streamableHttp, and can also view request responses through the /logs page. It also
автор: xuzexin-hzНе уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории ai