법령·판례·헌재·조세심판·관세해석·공정위·노동위까지 17개 도메인을 Claude·Cursor·Windsurf·Zed·Claude.ai 웹에서 네이티브로 호출.
그리고 AI가 지어낸 가짜 조문·가짜 판례를 법제처 DB로 실시간 교차검증하는 legal_analysis.
ChatGPT·Claude가 법률 답변을 쓰면서 "상법 제401조의2 제7항"이라고 적는다. 실제로는 제2항이 끝이다. legal_analysis(mode: verify_citations)가 본문에서 조문 인용을 정규식으로 뽑고, 30자 lookback으로 법령명을 역추적하고, 법제처 API로 병렬 교차검증한 뒤 ✓ · ✗ · ⚠로 돌려준다. v4.4에서 cite_check(판례 생사)·applicable_law(행위시법)·impact_map(영향 그래프)과 함께 legal_analysis 한 도구로 통합됐다.
v3.5.4에서 환각 탐지됐는데 "검증 성공"으로 오인되던 버그 수정. LLM이 실패 응답을 명확히 감지하도록 [NOT_FOUND] / [HALLUCINATION_DETECTED] 머신 파싱 마커 도입.
법제처 API가 `항번호`를 `"① "` 형태로 리턴하는데 기존 `parseInt(raw.replace(/[^\d]/g, ""))`가 유니코드 원숫자를 제거해 NaN. "근로기준법 제60조 제1항이 없다"고 오판정되던 버그를 `parseHangNumber()` 유틸로 수정.
"민법" 질의가 "난민법"으로 잘못 매칭되던 사례. `lib/law-search.ts` 공용 모듈로 추출해 chains·verify_citations가 같은 scoring 사용, 중복 제거 + display=100 사용해 짧은 법령명 누락 해결.
maskSensitiveUrl()로 API 키 포함 URL 로그 유출 차단, TRUST_PROXY 환경변수로 X-Forwarded-For 스푸핑 rate-limit 우회 방어.
v2는 API 하나당 도구 하나 — 89개 스키마. AI가 컨텍스트의 절반을 도구 목록에 썼다. v3는 `Dispatch Table + Domain Enum` 패턴으로 17개 결정례 도메인을 search_decisions(domain) + get_decision_text(domain) 2개로 접어넣었다. 커버리지 100% 유지, 컨텍스트 비용 110KB → 20KB.
판시사항·판결요지·주문은 규범 재사용이라 full, "이유" 전문은 사안별 사실관계라 축약 대상. compactBody(앞 800자 + 중략 + 뒤 400자), densifyLawRefs, densifyPrecedentRefs로 판례 응답 평균 −42% · 헌재 −80% · 행심 −82% · 종합 −74%.
| 도메인 | Before | After | 절감 |
|---|---|---|---|
| 판례 | 5,230 | 3,049 | −42% |
| 헌재 | 8,368 | 1,703 | −80% |
| 행심 | 8,429 | 1,491 | −82% |
| 종합 | 7,606 | 1,960 | −74% |
v4.4에서 옛 8개 chain_* 도구를 legal_research 한 도구의 task 파라미터로 통합했다. 법률 도메인의 실무 동선을 그대로 옮기고, 시나리오 키워드(관세·위임입법·처분·타임라인·상위법 적합성)를 자동 감지해 관련 분석을 얹는다.
task: full_researchtask: law_systemtask: action_basistask: dispute_preptask: amendment_tracktask: ordinance_comparetask: procedure_detailtask: document_reviewv3.3.1에서 11 → 52종. 산안법·중처법·청탁금지법·공정거래법·하도급법·개보법·정보통신망법·특금법까지 자동 매핑. 데이터 추가만으로 기존 검색 경로가 자동 혜택.
"제38조" ↔ "003800". 사람의 언어와 기계의 언어 사이, 오래된 번역 문제를 자동 처리. get_law_text의 jo 파라미터가 내부에서 변환하고, legal_research 체인도 같은 모듈을 재사용.
법률 별표·별지서식이 HWP로 배포되는 한국식 문제. kordoc v2.4 엔진을 내장해 표·텍스트를 Markdown으로 변환, get_annexes에서 바로 조회.
Fly.io OOM kill로 세션이 무효화되던 문제를 근본 해결. MCP 공식 stateless 패턴 + AsyncLocalStorage 키 격리. 재시작·스케일아웃·배포 모두 무손실.
원격 커넥터는 키 없이 URL 하나, 로컬 설치는 무료 법제처 키(1분)면 Claude Code·Claude.ai 웹·데스크톱·터미널 어디서든 동일한 9개 도구. 개인 OC 키가 있으면 ?oc=로 붙여 레이트리밋 여유. 나머지 전문 도구는 discover_tools → execute_tool로 접근.
두 줄이면 끝. 설치 중 API 키를 자동으로 물어봅니다.
/plugin marketplace add chrisryugj/korean-law-mcp /plugin install korean-law@korean-law-marketplace
Claude Pro/Max/Team — 커스텀 커넥터에 URL 하나. 키 없이 바로.
https://mcp.gomdori.app/law
config에 url 한 줄 추가. SSE/STDIO 모두 지원.
"korean-law": {
"url": "https://mcp.gomdori.app/law"
}
오프라인·보안이 필요하면 로컬 실행. 설치 마법사 포함.
npx korean-law-mcp setup
개발자라면 그냥 터미널에서.
npm i -g korean-law-mcp korean-law "민법 제1조"