dart-risk-mcp
# dart-risk-mcp
개인 작업용. DART 공시를 흐름으로 읽어 불공정거래 신호를 사실로 표기하는 MCP 서버.
## 돌리기
```bash
pip install -e .
python -m dart_risk_mcp
```
```json
{
"mcpServers": {
"dart-risk": {
"command": "python",
"args": ["-m", "dart_risk_mcp"],
"env": { "DART_API_KEY": "..." }
}
}
}
```
- `DART_API_KEY` 필수
- `KRX_API_KEY` · `KIS_APP_KEY` + `KIS_APP_SECRET` 선택 — 시세 대조용(KRX 먼저, 빈 날은 KIS)
## 메모
- 설계·실측 근거는 전부 `CLAUDE.md`
- 보류한 판단은 `docs/DEFERRED-DECISIONS.md`
- 뷰어 소스는 `docs/tool/`
- 테스트는 키 없이: `env -u DART_API_KEY python -m pytest tests/ -q`
- 골든 재생성: `python scripts/regen_goldens.py`
- 릴리스 순서: `CLAUDE.md` 「릴리스 정책」
MIT. 일부 로직은 kreports-dart-mcp(Apache 2.0)에서 이식 — `THIRD_PARTY_NOTICES.md`.
TDQS
Scored across 35 tools
Most tools carve out distinct scopes and the descriptions explicitly cross-reference neighbours (get_financial_summary vs get_financial_statements_full vs compare_financials; get_audit_opinion_history vs get_audit_opinion_text; get_disclosure_document vs list_disclosure_sections vs view_disclosure). The risk cluster is the soft spot: analyze_company_risk, check_disclosure_anomaly, build_event_timeline and find_risk_precedents all produce 'risk signal' output, and an agent could plausibly pick the wrong one for a given question. get_shareholder_info vs track_insider_trading also overlap on ownership data (snapshot vs time series).
All 35 names are snake_case verb_noun (find_, get_, check_, list_, view_, search_, track_, scan_, build_, lookup_, manage_, compare_). Verb variety (track_/scan_/build_) tracks meaningful differences in behavior rather than ad-hoc style drift, and no camelCase or bare-noun names appear.
35 tools is well past the heavy threshold, and several clusters could be consolidated (three disclosure-reading tools, four financial-statement tools, four risk/scoring-style tools, two audit tools). The domain breadth is genuine — disclosures, financials, capital events, audit, market scan, watchlist — but the count forces agents to search a long list and increases selection error.
Coverage is unusually deep for the stated purpose: CRUD-ish disclosure retrieval, financials at multiple granularities, capital structure and mezzanine terms, audit history plus quoted text, ownership/insider data, market-wide scanning, market reaction, and unlisted-company financials. Remaining gaps are modest: no free-text disclosure-title search across a company (only presets and singled-out report_name), no consolidated group/ownership-graph view, and find_risk_precedents exposes a lookback_days arg that is documented as unused.