공시는 누구에게나 공개돼 있다.
신호는 숨어 있다.
한국 금융감독원 전자공시(DART)에서 불공정거래 위험 신호를 읽어내는 오픈소스 MCP 서버입니다. Claude 같은 AI에게 "이 회사, 요즘 공시에 이상한 흐름 있어?"라고 물으면 — 공시 수백 건을 가져와 신호·패턴·행위자를 정리해 줍니다.
처음이라면 — 이 세 가지만 알면 됩니다
주식이나 공시를 몰라도 괜찮습니다. 이 페이지는 용어 세 개에서 시작합니다.
DART 다트
금융감독원이 운영하는 전자공시 시스템입니다. 한국의 모든 상장회사는 중요한 일(돈을 빌림, 대주주가 바뀜, 감사를 받음…)이 생기면 여기에 의무적으로 보고해야 합니다. 누구나 무료로 열람할 수 있는 공식 기록 보관소입니다.
공시 公示
회사가 시장에 알리는 공식 문서 한 건 한 건입니다. "전환사채 발행 결정", "최대주주 변경", "감사보고서 제출" 같은 제목이 붙습니다. 문제는 — 한 회사가 1년에 수십~수백 건을 내기 때문에, 사람이 흐름을 읽기 어렵다는 것입니다.
MCP
AI에 도구를 꽂는 표준 규격(Model Context Protocol)입니다. 이 서버를 설치하면 Claude 같은 AI가 DART에 직접 접속해 공시를 읽고 분석할 수 있게 됩니다. 여러분은 그냥 한국어로 질문하면 됩니다.
🚗 그냥 AI가 '깡통차'라면, MCP는 내비게이션을 단 것 — 📷 사진 필터, 🍜 라면에 계란처럼 같은 AI를 전혀 다르게 만듭니다.
공시를 열어 봐도 보이지 않는 세 가지
DART는 모든 것을 공개하지만, 한 건씩 따로 공개합니다. 불공정거래의 신호는 낱장이 아니라 흐름과 연결에 있습니다.
시계열이 없다
"전환사채 발행"이라는 공시 한 건은 평범합니다. 그런데 12개월 안에 자본을 세 번 이상 주무르고 그 사이 공시 의무 위반이 끼어 있다면 — 이야기가 달라집니다. 낱장 공시에는 이 리듬이 보이지 않습니다.
행위자가 흩어져 있다
문제 세력은 회사를 인수할 때마다 새 투자조합·SPC를 만들어 이름을 바꿉니다. 조합명으로는 추적이 안 됩니다. 하지만 등기임원 이름은 공시에 남는 고정점입니다 — 여러 회사의 임원 명단을 겹쳐 보면 같은 사람이 드러납니다.
계획과 실제가 따로 논다
"신사업 투자를 위해 300억을 조달합니다"라는 공시와, 그 돈이 실제로 어디에 쓰였는지의 보고는 서로 다른 문서에 있습니다. 조달 명분과 집행 내역을 대조해야 용도 변경이 보입니다.
예를 들면 — 교과서적인 '무자본 M&A' 시나리오
실제 금융감독원 적발 사례들에서 반복 관찰되는 전개입니다. 각 단계는 전부 합법적인 공시 한 건으로 보입니다. 붙여 놓아야 패턴이 됩니다.
이 도구의 복합 패턴 zombie_ma(무자본 M&A)는 위 신호 조합이
실제 공시에서 함께 나타나는지를 봅니다. 같은 방식의 패턴이 9종 등록돼 있습니다.
네 개의 축으로 공시를 다시 읽습니다
신호 탐지 — 37종
전환사채·무상감자·최대주주 변경·감사의견 이슈·조회공시·회생절차 등 위험과 상관이 높은 공시 유형 37종을 8개 카테고리로 분류해 자동 표시합니다. 금감원·금융위의 공개 적발 사례를 근거로 키워드가 보강돼 있습니다.
패턴 인식 — 9종
신호 하나가 아니라 조합을 봅니다. 무자본 M&A(zombie_ma),
상장폐지 회피(delisting_evasion), 허위 신사업 주가부양(fake_new_biz),
자본 이벤트 과다 반복(capital_churn_anomaly) 등 실제 적발 사례에서 추출한
9개 시퀀스와 대조합니다.
행위자 추적
여러 회사의 CB 인수자·유상증자 참여자·등기임원 명단을 다년으로 겹쳐 공통 인물을 찾습니다. 조합 이름은 매번 바뀌어도 임원 이름은 남기 때문입니다. 관심 인물은 워치리스트로 저장해 회사군을 계속 추적할 수 있습니다.
재무 이상 스캔
매출채권·재고 급증, 이익과 현금흐름의 괴리, 자본잠식, 전기 수치 재작성(RESTATEMENT), 연결·별도 순이익 역전까지 재무제표를 전년과 대조합니다. 사업보고서 XBRL 원본에서 감가상각비를 추출해 이익조작 연구 변수(Beneish) 8종을 지수로 표기합니다 — 판정은 하지 않습니다.
결과물은 "대화" 속에서 나옵니다
이 도구는 표를 반환하는 API가 아닙니다. AI와의 대화 안에서 서술형 리포트가 흘러나오고, 후속 질문으로 꼬리를 물며 깊어집니다. 아래는 이 페이지를 만들면서 실제로 MCP를 호출해 받은 응답(2026-07-18)을 그대로 발췌한 대화입니다.
※ AI 응답은 2026-07-18 실제 MCP 호출로 받은 도구 출력 원문에서 발췌했습니다(생략 구간은
"— 생략 —"으로 표시). 같은 도구의 저장된 출력이 tests/fixtures/sample_outputs/에
실측 골드로 보존돼 회귀 검증에 쓰입니다. 임원 재직은 DART 공시의 공개 사실이며, 개인 식별
부담을 줄이기 위해 이 페이지에서는 이름을 마스킹했습니다 — 어떤 판정도 아닙니다.
도구는 "질문"으로 찾으세요
도구 이름을 외울 필요 없습니다. AI에게 아래 질문을 그대로 던지면 알맞은 도구가 호출됩니다.
"이 회사, 괜찮은 거야?" — 종합 진단
analyze_company_risk최근 공시 전체를 스캔해 신호·패턴·CB 인수자를 한 번에 정리한 종합 리포트build_event_timeline공시 이벤트를 진입기→심화기→탈출기 시간순 서사로 재구성check_disclosure_anomaly정정공시 비율·감사 이슈·공시의무 위반 등 구조 지표 5종 집계get_company_info대표자·업종·설립일 등 기업 개요"공시 원문을 직접 읽고 싶어" — 원문 열람
list_disclosures_by_stock종목코드로 최근 공시 목록과 접수번호 조회get_disclosure_document접수번호 하나로 공시 원문 전체를 구조 보존 마크다운으로list_disclosure_sections긴 공시의 목차 + 재무제표 주석 카테고리 자동 라벨view_disclosure섹션·페이지 단위로 끊어 읽기check_disclosure_risk공시 한 건의 신호 분석 + 원문 미리보기"재무제표가 수상해" — 재무 분석
scan_financial_anomaly4대 이상 지표 + 재작성 감지 + Beneish 변수 8종 + 업종별 유의 회계정책get_financial_summary매출·이익·자산·부채 핵심 계정compare_financials2~5개 회사 나란히 비교get_audit_opinion_history5년 감사의견·감사인 교체·비감사용역 비중·연속 적자track_debt_balance채무증권 5종 잔액 + 1년 내 만기 비중(차환 압박)"돈이 어디로 갔는지 쫓고 싶어" — 자금 흐름
track_fund_usage증자·CB로 모은 돈의 계획 vs 실제 집행 대조 — 용도 변경 플래그track_capital_structure증자·감자·자사주·CB류 자본 이벤트의 리듬 추적get_major_decision합병·분할·자산 양수도의 상대방·규모·외부평가 여부get_affiliate_investments이 회사가 어떤 법인들에 출자했는지 — SPC·자회사망 추적"사람을 쫓고 싶어" — 행위자 추적
find_actor_overlap여러 회사의 인수자+임원을 겹쳐 공통 행위자 탐지 — 이 도구의 간판track_insider_trading대주주·임원 지분 변동 시계열 + 매도 직후 악재 공시 동시 발생 표기get_shareholder_info최대주주·특수관계인·5% 보유자 현황get_executive_compensation임원 보수 4개 섹션manage_watchlist인물↔회사군 워치리스트 저장·재조회lookup_known_actor공개기록 행위자 레지스트리 조회(opt-in) — 사실·출처만, 판정 없음"시장 전체를 훑고 싶어" — 시장 스캔 · 배경지식
search_market_disclosures시장 전체를 12개 프리셋(CB 발행·무상감자·조회공시·횡령…)으로 배치 스캔find_risk_precedents신호의 의미·위기 타임라인·연관 패턴 해설전부 실제 DART 응답으로 검증된 결과입니다
아래는 실제 API 호출에서 나온 출력 그대로입니다(해당 시점 기준). 이 프로젝트는 6개사 × 23개 도구의 실측 골드 출력 133건으로 매 변경마다 회귀 검증합니다.
이름이 매번 바뀌는 세력, 임원 겸직으로 잡다
서로 무관해 보이는 5개 상장사를 넣고 3년 조회 — 같은 인물이 3개사에 등기임원으로 겹치고, 함께 움직이는 동행 인물 2명이 추가로 드러났습니다. 투자조합 이름으로는 절대 안 보이는 연결입니다.
'자본 주무르기' 리듬이 수치로 보인다
한 코스닥 상장사에서 12개월 슬라이딩 윈도우 안에 자본 이벤트가 반복 집중되고 공시의무
위반이 겹침 — 등록 패턴 capital_churn_anomaly가 라이브 데이터에서 그대로
발화했습니다.
연결이 별도보다 작다? — 종속회사가 까먹고 있다
연결 당기순이익이 별도보다 58% 작은 사례를 자동 표시. 모회사 혼자는 이익인데 종속회사를 합치면 이익이 깎이는 구조 — 원문을 확인해야 할 지점을 정확히 짚어 줍니다.
재무제표에 없는 숫자는 XBRL에서 파온다
DART 요약 재무 API에는 감가상각비가 없습니다. 사업보고서의 XBRL 원본을 열어 해당 계정만 좁게 추출 — 이익조작 연구 변수(Beneish)를 6종에서 8종으로 복원 했습니다. 합산 점수(M-Score)는 원칙상 제공하지 않습니다.
설치하기 — 컴퓨터를 처음 다뤄도 따라올 수 있게
Claude Desktop을 쓴다면 방법 A(원클릭)가 가장 쉽습니다. 전부 무료입니다.
- 최신 릴리스에서
dart-risk-mcp.mcpb파일을 내려받습니다. - Claude Desktop → 설정 → Extensions에서 받은 파일을 끌어다 놓습니다(또는 "확장 설치").
- 뜨는 칸에 DART API 키를 붙여넣으면 끝 — 파이썬도 터미널도 필요 없습니다. (키 발급은 아래 3단계, 무료 2분)
Cursor·Windsurf·Claude Code 등 다른 클라이언트를 쓰거나 터미널이 편하다면 방법 B(터미널 설치)를 쓰세요.
파이썬 확인 → DART API 키 무료 발급 → pip install → 자동 등록까지, 컴퓨터가 처음이라도 그대로 따라올 수 있게 스크린샷과 함께 GitHub README에 자세히 정리해 뒀습니다.
점수를 매기지 않는 이유
이 도구의 가장 중요한 설계 결정은 "무엇을 하지 않는가"입니다.
점수·등급 없음
"위험도 82점", "고위험 등급" 같은 표기를 일절 하지 않습니다. 정량화된 낙인은 그 자체로 판정이 되고, 투자 권유·법적 판단으로 오독됩니다. 신호와 근거 공시를 나열할 뿐, 결론은 사람이 원문을 확인하고 내립니다. 이 원칙은 자동 회귀 테스트가 기계적으로 지킵니다.
사실 표기, 판정 없음
"연결 순이익이 별도보다 58% 작습니다"까지만 말합니다. "분식 의심"이라고 말하지 않습니다. 모든 출력에는 근거 공시의 접수번호가 붙어 원문으로 바로 검증할 수 있습니다.
인물 낙인 없음
행위자 조회는 출처가 확인된 공개기록에 등장했다는 사실만 반환합니다. "문제 인물" 같은 판정은 없으며, 항상 동명이인 가능성과 원본 확인 필요를 함께 고지합니다.
이 도구가 하지 않는 것
| 안 하는 것 | 이유 |
|---|---|
| 매수·매도 추천, 가격 예측 | 출력은 투자 판단의 근거가 아닙니다 |
| 위험 점수·등급 부여 | 정량화는 판정·투자 권유로 해석될 수 있음 |
| 실시간 알림·자동 감시 | 조회는 항상 사용자가 시작합니다 |
| 업종 평균 비교 | DART가 제공하지 않는 데이터 — 회사 자체의 전년 대비 추세만 사용 |
| 인물 데이터 배포 | 레지스트리 데이터는 저장소·배포물에 포함되지 않음(opt-in) |
행위자 연결망 — 별도 운영 중
🕸 공개기록 기반 행위자 ↔ 회사 연결망 시각화
이 프로젝트의 데이터 파이프라인 위에서, 여러 문제 회사에 반복 등장한 행위자와 회사의 연결망을 인터랙티브 그래프로 보여주는 화면을 별도로 운영하고 있습니다. 실명이 포함되는 특성상 승인된 로그인 사용자만 접근할 수 있으며, 링크는 공개하지 않습니다.
접근 요청·데이터 관련 문의(공개기록 레지스트리 opt-in 참여 포함)는 제작자 GitHub 프로필의 연락처로 따로 보내 주세요.
자주 묻는 질문
Q. 이거 투자 조언인가요?
아닙니다. 이 도구는 공시라는 공개 기록을 읽기 쉽게 정리할 뿐입니다. 어떤 출력도 매수·매도 판단의 근거가 아니며, 점수·등급·추천을 제공하지 않습니다.
Q. "신호가 감지됐다"면 나쁜 회사인가요?
아닙니다. 예컨대 전환사채 발행은 정상 기업도 흔히 하는 자금 조달입니다. 신호는 "원문을 확인해 볼 지점"의 표시일 뿐이고, 의미가 생기는 것은 여러 신호가 특정 순서로 겹칠 때입니다. 그 판단을 돕기 위해 모든 출력에 근거 공시 접수번호가 붙습니다.
Q. 비용이 드나요?
소프트웨어는 MIT 라이선스 오픈소스로 무료입니다. DART API 키도 무료(일 2만 건 한도) 입니다. 필요한 것은 MCP를 지원하는 AI 클라이언트(Claude Desktop 등)뿐입니다.
Q. 데이터는 어디서 오고, 어디에 저장되나요?
모든 데이터는 조회 시점에 금융감독원 DART OpenAPI에서 실시간으로 가져옵니다. 분석 결과를 외부로 전송하거나 서버에 쌓지 않으며, 임시 캐시는 사용자 로컬에만 남습니다.
Q. 사람 이름이 나오는 기능은 위험하지 않나요?
행위자 레지스트리 데이터는 저장소와 배포물에 포함되지 않습니다(빈 스켈레톤만 동봉). 조회 기능을 쓰려면 제작자에게 별도로 opt-in 접근을 요청해야 하고, 결과는 항상 공개기록 출처와 동명이인 경고를 동반한 사실 표기입니다.
Q. 어떤 회사·데이터로 검증됐나요?
대형·중견·소형(유가증권·코스닥) 6개사에 대해 23개 도구를 실제 API로 호출한 골드 출력 133건이 저장소에 있으며, 모든 변경은 이 실측 출력과 459개 테스트로 회귀 검증됩니다. 라이브로 재현되지 않은 신호는 문서에 정직하게 ⚠ 미검증으로 표기합니다.
공시를 자주 분석한다면 — 이런 MCP도 좋습니다
이 프로젝트는 불공정거래 위험 신호에 특화돼 있습니다. 목적이 다르면 아래가 더 잘 맞을 수 있어요. 모두 훌륭한 오픈소스입니다.
korea-stock-mcp
DART 공시·재무에 더해 KRX 주가·거래 데이터(코스피/코스닥 일별 시세)까지 다룹니다. 공시와 주가를 함께 보고 싶을 때.
dart-mcp
재무 분석·시각화에 특화. 사업부별 매출, 차트 시각화, DCF 밸류에이션까지 — 기업 가치를 뜯어볼 때.
korean-dart-mcp
OpenDART 83개 API를 15개 도구로. 공시 첨부(HWP·PDF 등)를 마크다운으로 풀어 주고, 버핏식 애널리스트 프레임을 제공합니다.
OpenDART-MCP-Server
설치 없이 원격으로. Vercel에 배포돼 커스텀 커넥터 URL만으로 OpenDART 83개 API를 바로 씁니다.