dartlens — 금융감독원 전자공시(DART OpenAPI) 래핑 MCP 서버. 공시 검색·본문·재무제표 조회를 Claude에서 자연어로.
dartlens-mcp provides 11 tools for Korean financial disclosure (DART) queries. Tool naming follows verb_noun convention (search_company, list_disclosures, get_*). Descriptions are present but vary in quality, some are terse (e.g., 'rcept_no → 공시 본문') while others are detailed. Input schemas are visible in the code with proper JSON Schema structure (type, properties, required). However, parameter descriptions are sparse or missing in several tools. Output schemas are not documented. Error handling guidance is absent. Tool annotations (readOnlyHint/destructiveHint) are correctly implemented via LensFastMCP. The codebase shows thoughtful handling of client-side schema compatibility issues (collapsing nullable types, coercing integers to strings), but this is defensive rather than preventive, indicating upstream client bugs that the server works around.
자가진단(버전/라이선스/API 키/캐시/업데이트) — 다른 도구가 막힐 때 원인 파악용
어닝 시즌 스캔 결과를 XLSX/CSV 파일로 저장 — 한국 Excel은 XLSX 권장
rcept_no → 공시 본문. 짧은 공시는 발췌, 긴 보고서(사업/분기/반기)는 인덱스+viewer URL만. find="키워드" 인자로 본문 키워드 검색 가능.
전체 재무제표. sj_div(BS/IS/CIS/CF/SCE) 필수 — 토큰 폭발 방지
임원·주요주주 특정증권 소유 — 내부자 매매 시그널
정기보고서의 핵심 재무 (매출/영업이익/순이익/자산/부채/자본 등) — 당기·전기·전전기 비교
Output schemas not documented. Tools return data but LLMs cannot infer field structure, forcing them to guess at downstream tool parameters and risk chaining failures.
Parameter descriptions missing or minimal for most tools. 'list_disclosures' and others lack descriptions for input parameters (e.g., date range, filtering criteria), forcing LLMs to infer intent from names alone.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 38 | 2026-07-28+ | v2 |
5%룰 대량보유 변동 — 외국인/펀드/행동주의 진입 추적 (시세에 안 나오는 자본 흐름)
사업/분기/반기보고서 표에서 수주잔고·계약잔액 추이를 구조화
기간/유형별 공시 목록 조회
어닝 시즌 유니버스 일괄 스캔 — 채팅용 Top N Markdown
기업검색 / 식별자 변환 디스패치 — 종목명·6자리 종목코드·8자리 corp_code 무엇이든 받아 corp_code + stock_code + 기업개황 반환. DART 후속 API는 모두 8자리 corp_code를 입력으로 받으므로, 워크플로우 첫 디스패치로 자주 쓰임. 종목명/6자리 코드만 알 때 corp_code 확보용. 8자리 숫자는 (종목코드 6자리와 달리) corp_code로 가정. 입력 자동 판정: 8자리 숫자 → corp_code / 6자리 영숫자 → stock_code / 그 외 → 종목명 검색(정확·부분)
Tool descriptions are terse and domain-specific (Korean financial terms). 'rcept_no → 공시 본문' and similar descriptions lack context on WHEN to use the tool and what it returns. Descriptions should be 50-200 chars and explain purpose, not just API mapping.
No error handling guidance. Tools do not document what errors can occur, whether they are retryable, or what the LLM should do next (e.g., 'Company not found. Try search_company() with a partial name.').
Defensive schema transformation in _tool_schema.py (collapsing nullable types, coercing integers to strings) indicates upstream client bugs. This is a workaround, not a fix. Server should document why these transformations are necessary and track the client regression.