Korean Law MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Korean Law MCP민법 제750조 인용이 맞는지 확인해줘"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Korean Law MCP
법제처 42개 API를 10개 도구로. 법령·판례·행정규칙·자치법규·조약·해석례(국세청 포함) 조회와 AI 답변의 인용 검증을 AI 어시스턴트나 터미널에서 바로 사용.
법제처 Open API 기반 MCP 서버 + CLI. Claude Desktop, Cursor, Windsurf, Zed, Claude.ai 등에서 바로 사용 가능.
바로 쓰기: Claude.ai 커넥터에 https://mcp.gomdori.app/law?oc=본인키 한 줄, Claude Code는 플러그인 두 줄 → 설치 및 사용법
VS Code·Cursor는 버튼 한 번으로 연결됩니다(키 없이 공용 한도로 동작, 본인 키는 주소 끝에 ?oc=본인키).
쓸모 있었다면 GitHub ⭐ 하나 눌러주세요. 다른 사람이 이 도구를 찾는 데 도움이 됩니다.

▶ 클릭하면 유튜브에서 재생됩니다.
AI에 연결하기
Claude에 연결하기 | ChatGPT에 연결하기 |
|
|
최근 업데이트
현재 버전 v4.15.23. 수치는 모두 CHANGELOG의 실측 기록에서 옮김.
버전 | 주요 변경 | 변화 |
4.15.23 | 인용 검증: 항으로 나뉘지 않은 조문(민법 제750조 등)에 붙인 「제2항」을 ⚠ 대신 ✗로, 「제1항」은 조문 번호만 쓰라고 안내 | 재현 테스트 5건 |
4.15.22 | 행정안전부 법령해석 | 도메인 21 → 23 |
4.15.21 | 대비표: 쉼표 붙은 후단 삭제 | 재현 테스트 3건 |
4.15.20 | 대비표 개정안 칸: 개정 부분이 마침표 바로 앞에서 끝나고 단서·후단이 신설되면 마침표가 「-」로 바뀌던 것(#180) | 건축법 제79조⑤ 재현 테스트 |
4.15.19 | 대비표 한글(.hwpx) 본문 왼쪽 정렬 — 줄표가 넘어간 짧은 줄이 벌어지던 것 | 한글 화면 확인 |
4.15.18 |
| 검색 낱말 게이트 테스트 |
4.15.17 | 대비표를 노출 도구 | 노출 도구 10개 유지 |
4.15.16 | 신·구조문대비표 작성 | 처음 보는 100개 법령 433조문, 공식 대비표와 완전 일치 67.7%(구조 불일치 3.9%) |
4.15.15 | 별표 파서 kordoc 4.24.25(PDF 표 행·단위 표기 줄 수정 등), |
|
4.15.14 | 보안: 의존성 취약점 정리 — 하위 kordoc 4.24.8(zod 4), zod 4.6.7, 개발 도구·하위 의존성 수정판 |
|
4.15.13 | Claude Code 플러그인이 로컬 npx 대신 공개 서버( | 설치 없음 |
4.15.12 | 도구 사이 안내(예: 여러 법령 감시는 | 같은 질문 4개에서 고르는 도구 동일 |
4.15.11 | 노출 도구 10개에 사람용 제목( | 제목 0개 → 10개 |
4.15.10 | 국세청 법령해석 본문 조회: 검색 결과의 | 목록·링크만 → 본문까지 |
이전 버전 전체 내역은 CHANGELOG.md 참조. 대표 이정표:
v4.14.1: 조문 1개 조회 3.1초 → 0.24초(13배), 인용 15건 검증 ✓0 → ✓15
v4.13.0: 준법 등록부 감시
search_law98회 호출 →search_law_bulk1~2회v4.4.0: 노출 도구 19개 → 9개, 도구 목록 컨텍스트 ~15.1KB → ~7.2KB (52% 감축)
v3.4.0: 판례·헌재·행심 응답 토큰 평균 74% 감축
Related MCP server: Korean Law MCP Server
왜 만들었나
대한민국에는 1,600개 이상의 현행 법률, 10,000개 이상의 행정규칙, 그리고 대법원·헌법재판소·조세심판원·관세청까지 이어지는 방대한 판례 체계가 있습니다. 이 모든 게 법제처라는 하나의 사이트에 있지만, 개발자 경험은 최악입니다.
이 프로젝트는 그 전체 법령 시스템을 10개 도구로 감싸서, AI 어시스턴트나 스크립트에서 바로 호출할 수 있게 만듭니다. 법제처를 수백 번 수동 검색하다 지친 공무원이 만들었습니다.
설치 및 사용법
공식 MCP 레지스트리 등재: io.github.chrisryugj/korean-law-mcp
0단계: API 키 발급 (무료, 1분)
**법제처 Open API 인증키(OC)**를 먼저 발급받으세요. 로컬 설치(방법 4·5)는 키가 꼭 있어야 하고, 공개 서버를 쓰는 방법(1~3)은 키 없이도 공용 한도로 동작합니다.
법제처 Open API 신청 페이지 접속 → 회원가입·로그인 → "Open API 사용 신청" → 신청서 작성 시 인증키(OC) 발급 (예: honggildong). 이 인증키를 아래 설정에서 사용.
방법 1: Claude Code 플러그인 (한 줄 설치, 가장 쉬움) ⚡
Claude Code를 쓴다면 두 줄이면 끝. API 키는 설치 중 자동으로 물어봅니다.
/plugin marketplace add chrisryugj/korean-law-mcp
/plugin install korean-law@korean-law-marketplace설치 중 법제처 API 키를 묻습니다 (0단계에서 발급받은 honggildong 같은 키, 민감정보로 저장). 비워 두면 공용 한도로 동작합니다. 이후 Claude Code에 자연어로 질문하면("근로기준법 제74조 알려줘", "민법 제750조 판례 검증해줘") korean-law MCP 도구가 자동 호출됩니다. 새 버전은 한 줄로 최신화:
/plugin marketplace update korean-law-marketplace플러그인은 공개 서버
https://mcp.gomdori.app/law에 연결합니다(내 컴퓨터에 아무것도 설치하지 않음). 키는apikey헤더로 보냅니다. 서버를 거치지 않으려면 방법 4의 로컬 설치를 쓰세요.
Troubleshooting: Permission denied (publickey) 에러
설치 중 git@github.com: Permission denied (publickey).가 뜨면 설치기가 GitHub에 SSH로 접속했는데 SSH 키가 없는 경우 (처음 Git을 쓰는 비개발자·법률 실무자에게 자주 발생). 둘 중 하나로 해결:
HTTPS로 강제 우회 (가장 간단, 추천): 아래 한 줄 실행 후 다시
/plugin install. 설치 후에도 그대로 둬도 무방 (HTTPS clone이 항상 동작)git config --global url."https://github.com/".insteadOf "git@github.com:"SSH 키 생성 후 등록: SSH를 자주 쓸 예정이라면
ssh-keygen -t ed25519 -C "your-email@example.com" # 엔터 3번 cat ~/.ssh/id_ed25519.pub # 출력 복사복사한 공개키를 GitHub → Settings → SSH and GPG keys → New SSH key에 붙여넣기
방법 2: Claude.ai 웹에서 바로 사용 (설치 없음)
아무것도 설치하지 않고 주소 하나만 입력. Claude Pro/Max/Team/Enterprise 요금제 필요 (Free는 커넥터 1개만 가능).
claude.ai 로그인 → 왼쪽 사이드바 하단 본인 이름 → 설정(Settings) → 커넥터(Connectors)
커스텀 커넥터 추가 → 이름
korean-law(아무거나 OK), URL은 아래 주소 (honggildong을 0단계에서 발급받은 본인 인증키로 교체)https://mcp.gomdori.app/law?oc=honggildong추가 → 커넥터 구성(Configure)에서 모든 도구를 항상 사용(Always allow)으로 설정 (매번 승인 불필요, 중요)
채팅에서 "근로기준법 제74조 알려줘" 입력
커넥터 URL을 수정하려면 삭제 후 다시 추가. 프로필 선택 불필요(10개 도구가 42개 API 전체 커버), 기존
?profile=lite&oc=...주소도 그대로 작동.
방법 3: AI 데스크톱 앱에서 사용 (설치 없음)
Claude Desktop, Cursor, Windsurf 같은 데스크톱 앱을 쓰고 있다면, 설정 파일에 아래 내용을 추가하세요.
설정 파일 위치 찾기:
앱 이름 | Windows | Mac |
Claude Desktop |
|
|
Cursor | 프로젝트 폴더 안 | 프로젝트 폴더 안 |
Windsurf | 프로젝트 폴더 안 | 프로젝트 폴더 안 |
Claude Desktop
Claude Desktop은 원격 HTTP MCP 서버를 직접 연결하지 못하므로 mcp-remote 어댑터를 통해 연결합니다. Node.js 18 이상이 필요합니다 (npx 사용을 위해).
{
"mcpServers": {
"korean-law": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://mcp.gomdori.app/law?oc=honggildong"
]
}
}
}
honggildong을 본인 인증키로 바꾸세요. Node.js를 설치하기 싫다면 방법 4의 로컬 설치를 사용하세요.
Cursor, Windsurf 등 (원격 HTTP 지원 클라이언트)
{
"mcpServers": {
"korean-law": {
"url": "https://mcp.gomdori.app/law?oc=honggildong"
}
}
}이미 다른 MCP 서버가 설정되어 있다면,
"mcpServers": { ... }안에"korean-law": { ... }부분만 추가하면 됩니다.
저장 후 앱을 재시작하면 법령 도구가 활성화됩니다.
방법 4: 내 컴퓨터에 직접 설치 (오프라인 가능)
인터넷 없이 쓰고 싶거나, 원격 서버를 거치지 않으려면 직접 설치할 수 있습니다.
사전 준비: Node.js 20.19 이상이 설치되어 있어야 합니다 (22.12 이상 권장).
자동 설치 (추천):
npx --ignore-scripts --omit=optional korean-law-mcp setup설치 마법사가 API 키 입력 → AI 클라이언트 선택 → 설정 파일 자동 등록까지 한 번에 처리합니다.
Claude Desktop, Claude Code, Cursor, VS Code, Windsurf, Gemini CLI, Zed, Antigravity를 지원합니다.
현재 폴더에 쓰는 설정(Claude Code .mcp.json, VS Code .vscode/mcp.json)은 git에 커밋될 수 있어 키를 평문으로 넣지 않습니다.
Claude Code는 ${LAW_OC} 참조를 넣으니 셸 설정에 export LAW_OC=발급받은키를 추가하고, VS Code는 처음 실행할 때 키를 묻습니다.
수동 설치:
npm install --ignore-scripts --omit=optional -g korean-law-mcpAI 앱 설정 파일에 아래 내용을 추가합니다 (honggildong을 본인 인증키로 바꾸세요):
{
"mcpServers": {
"korean-law": {
"command": "korean-law-mcp",
"env": {
"LAW_OC": "honggildong"
}
}
}
}앱을 재시작하면 완료!
방법 5: 터미널(CLI)에서 직접 사용
개발자라면 터미널에서 직접 법령을 검색할 수 있습니다.
# 설치
npm install --ignore-scripts --omit=optional -g korean-law-mcp
# 인증키 설정 (honggildong을 본인 키로 바꾸세요)
export LAW_OC=honggildong # Mac/Linux
set LAW_OC=honggildong # Windows CMD
$env:LAW_OC="honggildong" # Windows PowerShell
# 사용 예시
korean-law "민법 제1조" # 자연어로 바로 조회
korean-law search_law --query "관세법" # 도구 직접 호출
korean-law list # 전체 도구 목록
korean-law list --category 판례 # 카테고리별 필터
korean-law help search_law # 도구별 도움말API 키 전달 방법 정리
여러 방법으로 인증키를 전달할 수 있습니다. 위에서부터 우선 적용됩니다:
방법 | 사용법 | 언제 쓰나 |
URL에 포함 | 주소 끝에 | 웹 클라이언트에서 가장 간편 |
HTTP 헤더 |
| 프로그래밍으로 연동할 때 |
환경변수 |
| 로컬 설치(방법 4, 5) |
도구 파라미터 |
| 특정 요청만 다른 키 쓸 때 |
키 없이 공개 서버(
mcp.gomdori.app/law)를 쓰면 무키 사용자 전원이 공유하는 서버 키 한도를 거침. 자체 키를 넘기면 이 한도와 무관함(무료 발급: https://open.law.go.kr).
법제처 API 프로토콜 설정
법제처 API 호출은 기본 HTTPS. 사내망·폐쇄망 등 인증서 검증이 어려운 환경에서는 LAW_API_PROTOCOL=http로 HTTP 호출 가능. 허용값은 http, https이며 설정하지 않거나 다른 값이면 https. MCP 클라이언트 설정의 env 블록에 넣는 방식이 가장 명확합니다:
{
"mcpServers": {
"korean-law": {
"command": "korean-law-mcp",
"env": {
"LAW_OC": "honggildong",
"LAW_API_PROTOCOL": "http"
}
}
}
}터미널 환경변수나 .env 파일(LAW_OC=honggildong 다음 줄에 LAW_API_PROTOCOL=http)도 가능:
export LAW_API_PROTOCOL=http # Mac/Linux
set LAW_API_PROTOCOL=http # Windows CMD
$env:LAW_API_PROTOCOL="http" # Windows PowerShell국세청 판례 서버 TLS/프록시 설정
국세청 출처 판례 본문은 법제처 JSON 응답에 없을 때, 국세청 법령해석(nts) 본문은 항상 taxlaw.nts.go.kr을 조회합니다. 이 서버는 HTTP로 접근해도 HTTPS로 리다이렉트되므로, LAW_API_PROTOCOL=http와 별개로 Node.js 런타임이 https://taxlaw.nts.go.kr 인증서를 신뢰해야 합니다. 사내망·폐쇄망·SSL inspection 프록시 뒤에서는 브라우저로는 열려도 Node.js fetch()만 [EXTERNAL_API_ERROR] fetch failed로 실패할 수 있습니다(인증서 저장소·프록시 설정이 다름). 먼저 Node.js 기준으로 연결을 확인하세요:
node -e "fetch('https://taxlaw.nts.go.kr/qt/USEQTA002P.do?ntstDcmId=200000000000019303').then(r=>console.log(r.status,r.url)).catch(e=>console.error(e.name,e.message,e.cause))"별도 웹 프록시를 거쳐야 한다면 프록시 주소를 설정합니다(국세청 판례 본문 fallback·국세청 법령해석 본문의 외부 HTTPS 연결에 적용). Windows 시스템 환경변수는 관리자 권한 터미널에서 setx로 등록하고, 적용 후 Windows 또는 Node.js 프로세스를 재시작하세요:
LAW_EXTERNAL_HTTPS_PROXY=http://proxy-host:8080setx LAW_EXTERNAL_HTTPS_PROXY http://proxy-host:8080 /M프록시 경로에서도 사내 인증서 검증 문제가 남으면, 원인 확인용으로만 이 프로젝트의 외부 HTTPS 프록시 경로에 한해 TLS 인증서 검증을 임시로 끌 수 있습니다. 운영 상시 설정으로 쓰지 마세요. 두 번째 줄은 진단 후 제거:
setx LAW_EXTERNAL_TLS_REJECT_UNAUTHORIZED 0 /M
reg delete "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v LAW_EXTERNAL_TLS_REJECT_UNAUTHORIZED /f사용 예시
기본 조회
"관세법 제38조 알려줘"
→ search_law("관세법") → MST 획득 → get_law_text(mst, jo="003800")
"화관법 최근 개정 비교"
→ "화관법" → "화학물질관리법" 자동 변환 → compare_old_new(mst)
"근로기준법 제74조 해석례"
→ search_interpretations("근로기준법 제74조") → get_interpretation_text(id)
"산업안전보건법 별표1 내용 알려줘"
→ get_annexes(lawName="산업안전보건법 별표1") → HWPX 파일 다운로드 → 표/텍스트 Markdown 변환약칭이 다른 말과 붙어도 풀어서 검색함: 화관법 시행령 → 화학물질관리법 시행령, 중처법 제4조 책임자 → 중대재해 처벌 등에 관한 법률 제4조 책임자.
자연어로 복합 분석 (시나리오)
자연어로 물으면 질문에 맞는 추가 분석이 자동으로 붙음. 시나리오는 쿼리 키워드에서 자동 감지되거나 scenario 파라미터로 직접 지정.
이렇게 물으면 | 이런 결과 |
"식품위생법 영업정지 과태료 감경 가능?" | 처분 기준표(1·2·3차 금액) + 벌칙 조항 + 감경된 행정심판 사례 + 개정 이력 |
"수입 통관 FTA 적용 확인" | 관세법 + 관세청 유권해석 + FTA 조약 원문 + 세율 별표 + 조세심판원 판결 |
"건축법 허가 절차" | 법률→시행령→시행규칙 근거 + 수수료·서식 + 훈령·예규·고시 + 조례 특칙 + 유권해석 |
"건축법 영향도 분석" | 하위법령 + 영향받는 전국 자치법규 + 관련 행정규칙 |
"국민건강보험법 위임입법" | "시행령으로 정한다" 조항 중 아직 시행령이 없는 것 |
"주차 조례 상위법 적합성" | 헌재 위헌 결정 + 행정심판 취소 사례 + 상위법 근거 대조 |
"근로기준법 개정이력 타임라인" | 신구대조표 + 조문별 개정 이력 + 판례·해석례 시간순 정리 |
모든 결과 끝에 **"이어서 할 수 있는 조회"**가 제안됨.
검증·분석 기능
기능 | 이렇게 물으면 | 하는 일 |
| AI가 쓴 법률 답변 붙여넣기 | 인용 조문·판례를 법제처 DB와 대조: 실존 ✓ / 없음 ✗(존재 범위 제시) / 제목 불일치 |
| "2007다27670 아직 유효해?" | 그 사건번호를 인용한 후속 판례를 본문검색으로 역추적, 전원합의체 판결의 변경·폐기 선언("…변경하기로 한다") 감지 |
| "2023.5.10 당시 도로교통법 제44조" | 기준일 시행 버전(MST) 특정 → 그 시점 조문 → 현행 비교 → 이후 개정 부칙의 적용례·경과조치 발췌. 옛 법령명·고시도 처리 |
| "민법 제103조 인용한 판례" | 판례·헌재·해석례·행정심판·자치법규 역방향 탐색 + 인용 법령 정방향 + mermaid 그래프 |
| "개인정보보호법 2020-01-01 vs 2025-11-01" | 두 시점 본문을 조문 단위로 diff: 추가(+)·삭제(-)·변경(△) |
| "전세금 못 받았어" | 상황진단 → 권리·구제수단 → 신청기관·기한 → 필요서류·양식 → 함정·주의, 5단계 안내 |
| "광진구 주차장 조례" | 조례 제1조(목적)에서 근거 상위법 추출 → 상위법 현행 시행일과 조례 시행일 대조 → 정비 검토 대상 표시 |
verify_citations 실제 결과 예시:
"주택임대차보호법 제3조의2 제2항 … 같은 법 제6조의3 제1항 … 제7조 제3항에 따라 5%를 넘지 못하고 … 제8조 제4항"
✓ 주택임대차보호법 제3조의2(보증금의 회수) 제2항 실존
✓ 주택임대차보호법 제6조의3(계약갱신 요구 등) 제1항 실존
✗ 주택임대차보호법 제7조(차임 등의 증감청구권) — [NOT_FOUND] 제3항 없음 (최대 제2항)
✗ 주택임대차보호법 제8조(보증금 중 일정액의 보호) — [NOT_FOUND] 제4항 없음 (최대 제3항)자주 쓰는 옵션
하고 싶은 일 | 호출 |
부칙(시행일·경과조치) 보기 |
|
특정 날짜 기준 본문 |
|
그날 시행 중이던 별표 |
|
판례명·본문검색 병행 |
|
긴 행정규칙의 일부만 |
|
법령 여러 건 변경 감시 |
|
개정안 신·구조문대비표 |
|
판례 전문(축약 해제) |
|
도구 구조 (10개)
노출 도구는 10개. chain_* 8개는 legal_research의 task로, 분석 기능 4개는 legal_analysis의 mode로 통합. 나머지 전문 도구는 discover_tools → execute_tool로 접근하며, 기존 도구명 직접 호출도 하위호환으로 동작.
구분 | 도구 | 설명 |
리서치 (1) |
| 다단계 법령 리서치: |
정밀분석 (1) |
| 검증·분석: |
법령 (3) |
| 법령 검색 → lawId, MST 획득 |
| 조문 전문 조회 ( | |
| 별표/서식 조회 (금액표·요율표·별지서식, | |
자치법규 (1) |
| 조례 정비 레이더: 근거 상위법 개정 자동 대조 |
통합 (2) |
| 23개 도메인 통합 검색 (판례·헌재·조세심판·관세·국세청·고용노동부·행정안전부 해석·중앙부처 1차 해석(39개 부처)·공정위·노동위·산재보험재심사·고용보험심사·해석례·행심·개인정보위·권익위·소청심사·학칙·공사공단·공공기관·조약·영문법령) |
| 23개 도메인 전문 조회 | |
메타 (2) |
| 전문 도구 검색 (용어·별표·이력·비교 등) |
| 전문 도구 프록시 실행 |
legal_research task 8종 (구 chain_*)
task | 설명 | 시나리오 확장 |
| 종합 리서치 (AI검색→법령→판례→해석) |
|
| 법체계 분석 (3단비교, 위임구조) |
|
| 처분 근거 확인 (허가·인가·처분) |
|
| 쟁송 대비 (불복·소송·심판) |
|
| 개정 추적 (신구대조, 연혁) |
|
| 조례 비교 (상위법→전국 조례) |
|
| 절차·비용·서식 안내 |
|
| 계약서·약관 리스크 분석 ( | — |
legal_analysis mode 4종
mode | 설명 | 필수 파라미터 |
| LLM 환각 방지: 인용 조문·판례 실존 + 조문 제목 일치 검증 |
|
| 판례 생사 확인: 후속 인용 역추적 + 변경·폐기 감지 (한국형 Citator) |
|
| 행위시법 판단: 시점 적용 버전 + 부칙 경과규정 발췌. 옛 법령명·행정규칙(고시)도 |
|
| 조문 영향 그래프: 인용 판례·해석·자치법규 역방향 탐색 + mermaid |
|
전체 도구 상세는 docs/API.md 참조.
주요 특징
42개 API → 10개 도구: 법령, 판례, 행정규칙, 자치법규, 헌재결정, 조세심판, 관세해석, 국세청 해석례, 조약, 학칙/공단/공공기관 규정, 법령용어
MCP + CLI: Claude Desktop에서도, 터미널에서도 같은 도구 사용
법률 도메인 특화: 약칭 자동 인식(
화관법→화학물질관리법), 조문번호 변환(제38조↔003800), 3단 위임 구조 시각화현행성 안내: 검색 결과에
[현행]/⚠️[연혁-과거버전]라벨, 시행예정 개정·제명변경 병기, 폐지 법령은 폐지 사유와 후속 통합 규정 안내과거 시점 그대로: 법령ID로 버전을 이어 붙여 법령명이 바뀌기 전 시절까지 조회
실패를 "없음"으로 답하지 않음: 조회 실패·점검 페이지·예산 초과는
[NOT_FOUND]등 명시 마커로 구분별표/별지서식 본문 추출: HWPX·HWP·PDF·XLSX·DOCX 자동 변환 (kordoc 엔진)
8개 체인 + 9개 시나리오: 기본 체인에 상황별 확장 분석 자동 추가 (과태료 감경, 관세 통관, 위임입법 감시 등)
23개 도메인 통합 검색:
search_decisions하나로 판례·헌재·조세심판·공정위·노동위 등 즉시 접근캐시: 검색 1시간, 조문 24시간 TTL
원격 엔드포인트: 설치 없이
https://mcp.gomdori.app/law로 바로 사용 (구korean-law-mcp.fly.dev/mcp도 하위호환 유지)
HTTP·실행 경계 설정
HTTP 기본 바인딩은
MCP_HTTP_HOST=127.0.0.1, 프록시 신뢰 기본값은TRUST_PROXY=false입니다. 외부 바인딩은MCP_AUTH_TOKEN을 설정해야 하며, 의도적으로 공개할 때만MCP_ALLOW_UNAUTHENTICATED_REMOTE=1을 명시합니다. 프록시 뒤에서는TRUST_PROXY=1처럼 정확한 hop 수를 설정하세요.브라우저(웹) 클라이언트를 쓸 때는
ALLOWED_ORIGINS를 설정하세요. MCP 명세가 요구하는 Origin 검증(DNS rebinding 방어) 때문에,Origin헤더가 붙은 요청은ALLOWED_ORIGINS화이트리스트(콤마 구분)에 있는 출처만 통과합니다.ALLOWED_ORIGINS를 비워 두면CORS_ORIGIN이 대신 기준이 됩니다(*면 모든 출처, 아니면 그 출처 하나). 둘 다 설정하지 않으면 브라우저 요청은 모두 차단되고 시작 시 안내가 출력됩니다.ALLOWED_ORIGINS를 설정하면CORS_ORIGIN은 출처 판정에 쓰이지 않습니다.ALLOW_QUERY_API_KEY=0이면 URL 쿼리(?oc=키)로는 API 키를 전달할 수 없습니다. 쿼리 키는 프록시/엣지 액세스 로그에 평문으로 남으므로 폐쇄망이나 로그 수집 환경에서 권장합니다. 헤더(apikey·law_oc등) 전달은 계속 동작합니다.ACCESS_LOG=1이면 요청 로그를 기록합니다. 쿼리스트링의oc=API 키 유출을 막기 위해 경로만 기록합니다.RATE_LIMIT_RPM=0은 IP별 제한만 끕니다.MCP_MAX_BATCH_CALLS(기본 20), 요청 본문, upstream 시도/응답 본문, 도구 응답 제한은 계속 적용됩니다.FALLBACK_DAILY_CAP은 서버 키 폴백의 하루 총량 캡(0이면 비활성, 기본).MCP_MAX_BODY_BYTES,MCP_MAX_UPSTREAM_REQUESTS(기본 48),MCP_MAX_UPSTREAM_BODY_BYTES,MCP_MAX_TOTAL_UPSTREAM_BODY_BYTES,MCP_MAX_TOOL_RESPONSE_CHARS는 시작 시 정수로 검증되며 잘못된 값은 서버 시작을 실패시킵니다. 기존MCP_BODY_LIMIT=100kb도 호환됩니다.MCP_CHAIN_DEADLINE_MS(기본 45초): 체인 한 건의 시간 한도. 만료되면 받은 갈래까지 조립한 부분 결과를 반환하고 못 받은 자리는 마커로 표시.LAW_USER_AGENT·LAW_REFERER: 법제처 호출에 붙는 User-Agent·Referer 기본값을 바꿀 때만 설정.get_batch_articles는 최대 20개 법령·총 100개 조문으로 제한됩니다. HTTP 연결 종료 또는 MCP 취소는 fetch, 재시도 대기, 응답 본문 읽기까지 전파됩니다. JSON-RPC 배치 항목은 예산만 공유하고 취소 신호는 서로 분리됩니다.publish 전
build/를 삭제하고 실제 pack 파일과 exports를 검증합니다.kordoc는 별표 PDF/HWP 파싱에 실제 사용되므로 유지하고, 필요한 pure-JSpdfjs-dist@4.10.38만 일반 의존성으로 고정합니다. 플러그인·문서·Docker 설치는--omit=optional --ignore-scripts로 OCR/ML/native 선택 의존성을 제외합니다. CI·게시 workflow는 개발 도구의 optional binding을 설치하되 script는 끈 상태로 검증한 뒤, production graph로 prune하고 PDF 별표 smoke test를 실행합니다. transitive scanner 경고는 실제 도달 가능한 서버 경로와 구분해 평가합니다.
문서
docs/API.md — 도구 레퍼런스
docs/ARCHITECTURE.md — 시스템 설계
docs/DEVELOPMENT.md — 개발 가이드
CHANGELOG.md: 버전별 변경 내역
자주 묻는 질문
Q. Claude·ChatGPT에서 한국 법령·판례를 검색하려면?
이 MCP 서버를 연결합니다. Claude.ai는 커넥터 주소 https://mcp.gomdori.app/law?oc=본인키 하나면 되고, Claude Desktop·Cursor·Windsurf·Zed는 설치 및 사용법, ChatGPT는 연결 영상을 따르세요.
Q. 무료인가요? MIT 라이선스 오픈소스입니다. 필요한 법제처 Open API 인증키도 무료로 발급됩니다(0단계).
Q. AI가 지어낸 조문·판례를 걸러낼 수 있나요?
legal_analysis(mode="verify_citations")가 답변 속 법령 조문과 판례 번호를 법제처 원문과 대조해 실존 여부와 내용 일치를 확인합니다. 판례가 아직 유효한지는 mode="cite_check"로 봅니다.
Q. 어디까지 조회되나요? 법령, 판례, 행정규칙, 자치법규(조례·규칙), 조약, 법령해석례(국세청 포함)와 별표·서식입니다. 과거 시점 법령과 폐지 법령의 후속 규정도 찾습니다.
Star History
데이터 출처
법령·판례·행정규칙·자치법규·조약·해석례 본문은 법제처 국가법령정보센터 OPEN API (https://open.law.go.kr/)에서 조회합니다. 국세청 해석례는 국세법령정보시스템을 사용합니다.
법적 효력이 필요한 판단에는 반드시 국가법령정보센터 원문을 확인하세요. 이 도구는 조회 결과를 가공·요약할 수 있습니다.
API 인증키(LAW_OC)는 법제처에서 각자 발급받아야 하며, 발급받은 본인만 사용할 수
있습니다.
라이선스
제3자 구현 참조 및 데이터 출처 고지는 NOTICE를 참조하세요.
Made by 류주임 @ 광진구청 AI동호회 AI.Do
Available Tools
10 toolsdiscover_tools전문 도구 찾기ARead-onlyIdempotent
Korean-law-mcp — [메타] 전문도구(조세심판·관세·헌재·행심·공정위·개인정보위·노동위·학칙·조약·영문법령·용어 등 80+개) 카테고리 검색. 도구 이름과 설명을 돌려준다
| Name | Required | Description | Default |
|---|---|---|---|
| intent | Yes | 찾고 싶은 도구의 의도 또는 카테고리 (예: '공정위', '조약', '용어', '헌재') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety is covered. The description adds the concrete payload ('도구 이름과 설명을 돌려준다') and the breadth of the index (80+), but leaves the matching behavior unexplained — whether it matches on tool names, descriptions, or both, and whether results are ranked.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences: identity and scope first, then return format. Dense but front-loaded with no filler. The category enumeration is long, though it doubles as usable query vocabulary, so it largely earns its space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does correctly state the return content, and the single parameter is fully covered. What's missing is the workflow contract for a meta tool — that discovered tools are then invoked via execute_tool, and whether results can be refined by re-querying with different intents.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with an example-laden intent description, so the baseline is 3. The description earns an extra point by enumerating eleven concrete query categories (조세심판, 관세, 헌재, 행심, 공정위, 개인정보위, 노동위, 학칙, 조약, 영문법령, 용어) that work directly as intent values, materially beyond the schema's four examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action (category search) over a specific resource set (80+ specialized tools: 조세심판·관세·헌재·행심·공정위·개인정보위·노동위·학칙·조약·영문법령·용어) and says what it returns (tool names and descriptions). The '[메타]' tag plus the category inventory makes it distinguishable from retrieval siblings like search_law or get_law_text, though it never names a sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'meta / discovery' framing implies you call this when you don't already know the right specialized tool, and the schema examples clarify the query style. But there is no explicit when-to-use or when-not statement, and no mention of the natural follow-up (execute_tool), which is the key routing decision an agent faces in this 10-tool set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_tool전문 도구 실행CRead-onlyIdempotent
Korean-law-mcp — [메타] 전문도구를 이름(tool_name)과 인자(params)로 실행
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes | 도구에 전달할 파라미터 객체 | |
| tool_name | Yes | 실행할 전문도구 이름 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and openWorld, so the safety profile is covered. What the description fails to add is the behavior that actually matters for a dispatcher: what happens when tool_name is unknown or params don't match the target tool's schema, and what the response looks like (the sub-tool's output, presumably).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short line with no padding, which is good, but here the brevity comes at the cost of under-specification rather than discipline — the dispatch contract is not explained at all.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an open-world meta-dispatcher with a free-form nested params object and no output schema, the description should at minimum say how to discover valid tool_name values and how errors are surfaced. Neither is present, so an agent must guess before it can invoke this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are described in the schema, so the baseline of 3 applies. The description restates the same two fields and adds nothing about the crucial constraint that the params object must conform to the signature of whichever tool tool_name selects — a nested-object semantic the schema cannot express.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"[메타] 전문도구를 이름(tool_name)과 인자(params)로 실행" states the verb (execute) and the resource (a specialized tool), plus the dispatch mechanism. However, it never says what a "전문도구" is in this server's context or points to discover_tools as the source of valid names, so the agent cannot map it against nine siblings on the description alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this dispatcher instead of calling search_law, legal_research, get_law_text, etc. directly, and no mention of discover_tools as the prerequisite for obtaining a valid tool_name. The only guidance is implicit in the word "[메타]".
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_annexes별표·서식 조회ARead-onlyIdempotent
Korean-law-mcp — [별표] 별표/서식 조회. lawName+'별표N'으로 내용 추출. 금액/기준은 별표에 있는 경우 많음. date(기준일)를 주면 그날 시행 중이던 버전의 별표 — 건축허가·착공·처분 시점의 설치기준·과태료표 등 과거 기준이 필요할 때(제명이 바뀐 법령도 옛 버전까지, 별표 번호가 시점마다 달라 query로 별표명을 주는 편이 안전).
| Name | Required | Description | Default |
|---|---|---|---|
| jo | No | 위임 조문 (예: '제38조', '38'). 조문 동반 질의('관세법 제38조 별표2')의 조문 맥락 — 별표명의 '(제38조 관련)' 표기와 대조해 좁히고, 응답에 위임 관계를 표기 | |
| knd | No | 1=별표, 2=서식, 3=부칙별표, 4=부칙서식, 5=전체 | |
| date | No | 기준일 (예: '2015-06-01'). 지정 시 그날 시행 중이던 법령 버전의 별표를 조회 — 건축허가·착공·처분·위반 시점 기준이 필요할 때. 제명이 바뀐 법령도 옛 버전까지 찾는다. 별표 번호는 시점마다 다를 수 있으니 query(별표명)로 좁히는 것이 안전. 미지정 시 현행 | |
| query | No | 별표명으로 좁히기 (예: '운전면허 취소·정지', '과태료'). 번호를 모를 때 사용. 1건으로 좁혀지면 그 별표 본문을 바로 추출 | |
| bylSeq | No | 별표번호 (예: '000300'). 지정 시 해당 별표 파일을 다운로드하여 텍스트로 추출 | |
| annexNo | No | 별표 번호 (예: '4', '별표4', '제4호'). bylSeq 대체 입력 | |
| lawName | Yes | 법령명 (예: '관세법'). 별표를 바로 지정하려면 '... 별표4' 또는 '... 별표1의2'처럼 함께 입력 가능 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered structurally. The description adds real behavioral context beyond that: it downloads the annex file and extracts text when bylSeq is given, and extracts the body directly when query narrows to a single annex. However, it never says what a multi-match response looks like versus a single-match extraction, leaving the return shape ambiguous.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and the core lawName+'별표N' pattern are front-loaded, and every sentence carries usable information (amounts in annexes, retroactive lookup, query-over-number advice). It is a dense run-on block with parenthetical asides and some overlap with the schema text, which keeps it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 7 parameters, a 100% covered schema, and full annotations, the description supplies the missing decision context: retroactive date semantics, jurisdiction/naming quirks, and narrowing strategy. There is no output schema, and the description only partially covers the return shape (file-download text vs. direct body extraction vs. presumably a list when ambiguous), so a small gap remains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3; every parameter already carries an inline description with examples (jo, knd enum, bySeq, annexNo). The description's date and query guidance largely restates what is already written in those schema fields, adding little genuinely new parameter meaning. The interaction hint that query is safer than a number when the annex number varies is the main marginal contribution.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and retrieval method: 별표/서식 (annexes/forms) of a Korean statute, extracted via lawName + '별표N'. It also notes that monetary amounts and standards often live in annexes rather than the main text, which clarifies what kind of content this tool returns. It never names the sibling get_law_text as the alternative for main-article text, so the differentiation is implicit rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for the date parameter (retroactive standards at time of permit/construction/disposition, renamed statutes) and advises using query by annex name because annex numbering shifts over time. This is genuine when-to-use guidance. It stops short of stating when NOT to use it or naming a sibling to fall back on.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_decision_text판례·결정례 본문 조회BRead-onlyIdempotent
Korean-law-mcp — [통합조회] 23개 도메인 전문 조회. domain+id. full=false(기본) 시 본문 계단식 축약
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | 일련번호/ID (search 결과에서 획득. nts·ministry=moef는 본문조회ID(ntstDcmId)) | |
| full | No | true=본문 전문 그대로. 미지정=이유/전문 섹션 계단식 축약 (판시·요지·주문은 항상 full) | |
| domain | Yes | 도메인 선택 (enum 값 참조) | |
| options | No | 도메인별 옵션. treaty:{chrClsCd:'010202'(한)/'010203'(영)} english_law:{mst,lawName} ministry:{ministry(search 때와 같은 부처)} prec/constitutional/admin_appeal/interpretation:{caseName} |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description does add one real behavioral trait beyond that — the default full=false returns a tiered/abridged body — but '계단식 축약' is jargon and the detail is largely repeated from the `full` parameter description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short and front-loaded with the integration scope, with no filler sentences. However, the telegraphic fragments and mixed Korean/English abbreviations ('[통합조회]', '계단식 축약') trade clarity for brevity on a fairly complex 4-parameter nested tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a unified 23-domain retrieval tool with a nested options object and no output schema, the description omits what the returned body looks like, what happens on an invalid or cross-domain id, and why domain-specific options matter. The schema fills in the parameter details, but the description itself is thin relative to the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including enum values for domain and detailed per-domain options, so the schema carries the parameter burden. The description only echoes 'domain+id' and the full=false default, adding no meaning beyond what the schema already documents; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource: retrieves the body text (전문 조회) of precedents/decisions, keyed by domain+id, across 23 domains. That is enough to distinguish it from search_decisions, though the contrast is only implicit in the word 전문 rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance and no sibling is named; the agent must infer that this is a follow-up call after search_decisions (the 'search 결과에서 획득' hint lives in the schema, not the description). Nothing says when not to call it or what to do for other domains.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_law_text법령 조문 조회ARead-onlyIdempotent
Korean-law-mcp — [법령조회] 조문 전문 조회. mst/lawId 필수, jo로 특정 조문만 가능 — jo는 '제148조의2' 같은 자연어 조문 표기를 그대로 받는다(권장). 6자리 JO 코드를 직접 쓰려면 조번호 4자리 zero-pad + 의X 2자리: 제10조의2→001002, 제234조의2→023402(234002 아님). jo='부칙' 이면 부칙 원문(시행일·경과조치, 최근 공포부터). 과거 시점 본문은 efYd 에 그 날짜를 넣으면 그날 시행 중이던 버전으로 자동 보정한다(제명이 바뀌기 전 버전 포함).
| Name | Required | Description | Default |
|---|---|---|---|
| jo | No | 조문 번호. 자연어 표기 권장 — '제38조'·'제148조의2'를 그대로 넣으면 서버가 변환한다. 6자리 JO 코드 직접 지정 시 조번호 4자리 zero-pad + 의X 2자리: 제38조→003800, 제10조의2→001002, 제234조의2→023402(234002 아님). '부칙' 이면 부칙 원문(최근 공포부터) | |
| mst | No | 법령일련번호 (MST) | |
| efYd | No | 기준일 또는 시행일자 (YYYYMMDD). 시행일이면 그 버전, 시행일이 아닌 날짜(건축허가일·사건일 같은 조회 기준일)면 그날 시행 중이던 버전으로 자동 보정한다(제명이 바뀌기 전 버전 포함). 현행 본문은 efYd 없이 조회한다. 시행예정본은 그 시행일을 넣는다. | |
| lawId | No | 법령ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld). Beyond that, the description discloses real behavior: efYd auto-corrects to the version in force on the given date (including pre-renaming versions), jo='부칙' returns supplementary provisions from the latest promulgation, and jo accepts natural-language notation. These are meaningful behavioral details not in the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but front-loaded with the core action first, then parameter-specific rules. The encoding examples (제10조의2→001002) earn their place by preventing a real error, though the paragraph is information-heavy for a single block.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-param, no-output-schema retrieval tool whose schema fully documents parameters, the description covers how to specify the target law and version. It omits what the returned text looks like (structure, truncation) and the mst/lawId requirement contradicts the schema's empty required list, leaving a small gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds value by explaining that efYd is used both for prospective effective dates and for historical lookup dates with automatic version correction, and by restating the 6-digit JO encoding rule. It also notes mst/lawId are required, which conflicts with the schema's empty required array and could confuse an agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource (법령 조문 전문 조회 — retrieving the full text of statute articles) and clarifies that jo narrows to a specific article. It does not explicitly differentiate itself from siblings like search_law or get_annexes, so an agent relies on the title/resource to tell them apart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives useful conditions for the jo parameter (natural-language notation recommended, 부칙 for supplementary provisions) and for efYd (historical version retrieval). However, it offers no guidance on when to use this tool versus search_law or get_decision_text — the usage advice is parameter-level, not tool-selection-level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
legal_analysis인용 검증·법령 분석·신구조문대비표BRead-onlyIdempotent
Korean-law-mcp — [정밀분석] 검증·분석·신구조문대비표 5종 통합. mode: verify_citations=텍스트 속 법령 조문·판례 인용('민법 제750조', '대법원 2013다61381' 등)이 실존하는지 법제처 DB 교차검증, LLM 환각 방지 — 판례는 실존불가/미확인 구분(text 필수) | cite_check=판례 생사 확인 — 사건번호로 후속 인용 역추적+변경·폐기 감지, 한국형 Citator(caseNumber 필수) | applicable_law=사건 시점에 시행되던 법령 버전+그 시점 조문+부칙 경과조치, 행위시법 판단(lawName+date 필수, jo 선택). 제명이 바뀐 법령은 옛 이름 시절 버전으로 특정. 법령이 아니면 행정규칙(고시·훈령 — 예: '스프링클러설비의 화재안전기준', 'NFTC 103')의 기준일 시행 버전 | impact_map=한 조문을 인용한 판례·헌재·해석례·행심·조례 역방향 그래프+mermaid(lawName+jo 필수, jo는 '제103조'·'103조'·JO 6자리 코드 '010300' 모두 수용) | amendment_table=일부개정안의 신구조문대비표(신·구조문대비표·신구대비표·개정안 대비표) 작성 — 개정 후 조문만 주면 현행 조문을 법제처에서 가져와 법제처 대비표 표기 그대로 대조: 바뀐 부분 밑줄(채팅 표에서는 굵은 글씨), 개정안 칸의 같은 부분 '----'(글자 수만큼, 문장 끝 마침표 유지), 같은 항·호 '①·② (생 략)'/'(현행과 같음)' 묶음, <신 설>·<삭 제>·<단서 신설>. 줄표 수·묶음·밑줄 범위를 규칙대로 계산한 결과라 표를 그대로 쓸 수 있다(lawName+amendments 필수, 조례·행정규칙은 amendments[].currentText). 로컬 실행에서는 outputPath 로 한글(.hwpx) 저장
| Name | Required | Description | Default |
|---|---|---|---|
| jo | No | [impact_map 필수, applicable_law 선택] 조문 번호 — 자연어 표기('제103조', '제10조의2')와 6자리 JO 코드('010300', '001002') 모두 수용 | |
| date | No | [applicable_law 필수] 기준일 — 행위·계약·처분 시점 (예: '2023-05-10', '20230510') | |
| mode | Yes | 분석 유형 (도구 설명의 mode 표 참조) | |
| text | No | [verify_citations 필수] 검증할 법률 텍스트 (LLM 답변/계약서 등 조문 인용 포함 문자열) | |
| title | No | [amendment_table] 대비표 제목 (예: '건축법 일부개정법률안'). 생략 시 법령명으로 만든다 | |
| display | No | [cite_check] 후속 인용 판례 최대 표시 수 (기본 20) | |
| lawName | No | [applicable_law·impact_map·amendment_table 필수] 법령명 (예: '민법', '도로교통법'). applicable_law는 약칭·옛 법령명과 행정규칙명(고시 — 예: '스프링클러설비의 화재안전기준', 'NFTC 103')도 받는다. amendment_table은 조례·행정규칙이면 amendments[].currentText 로 현행 원문을 같이 준다 | |
| deepScan | No | [cite_check] 후속 인용 상위 판례 본문 정밀 스캔 (기본 true, false면 빠르지만 변경·폐기 감지 생략) | |
| amendments | No | [amendment_table 필수] 신구조문대비표를 만들 개정 조문 목록 | |
| caseNumber | No | [cite_check 필수] 사건번호 (예: '2013다61381', 문장 포함 가능) | |
| outputPath | No | [amendment_table] 한글(.hwpx) 저장 경로 — 로컬 실행(STDIO·CLI)에서만 | |
| maxCitations | No | [verify_citations] 검증할 최대 인용 개수 (기본 15, 많을수록 느림) | |
| includeMermaid | No | [impact_map] mermaid 그래프 코드 출력 (기본 true) | |
| includeOrdinances | No | [impact_map] 자치법규 인용 검색 포함 (기본 true, false면 전국 조례 팬아웃 생략) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, but the description explicitly states that in local execution outputPath saves an .hwpx file ('로컬 실행에서는 outputPath 로 한글(.hwpx) 저장'), which is an environment-modifying write and directly contradicts the read-only hint. Other behavioral details (legal DB cross-checking, hallucination prevention, reverse citation graph) are informative, but the contradiction overrides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description front-loads the tool identity and mode list, but then packs five modes and detailed amendment_table formatting rules into one dense paragraph with pipe separators. It is not wasteful given the tool's complexity, yet it is hard to scan and would benefit from clearer structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
It covers invocation for all five modes, required parameters, and key behavioral constraints (e.g., hallucination prevention, version-at-incident-time, omission of amendments counted as deletion). However, with no output schema it gives little detail on return structures for four of the five modes, leaving the agent unable to anticipate response shapes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already documents all 14 parameters including the mode enum, required tags, and format notes. The description organizes which parameters belong to each mode but adds little beyond the schema's own parameter descriptions, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that this tool integrates five precise legal-analysis modes and names each specific operation (verify_citations, cite_check, applicable_law, impact_map, amendment_table) with the legal resource it handles. However, it does not mention or differentiate from sibling tools such as legal_research, search_law, or get_law_text, so an agent gets no explicit routing guidance against alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The mode-by-mode breakdown gives clear conditions for each mode and marks required parameters (e.g., text 필수, caseNumber 필수, lawName+jo 필수), so the agent knows how to invoke each mode. But it never states when not to use this tool or which sibling to choose instead, leaving alternative selection implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
legal_research법령 종합 리서치ARead-onlyIdempotent
Korean-law-mcp — [⛓리서치] 다단계 법령 리서치 통합 — 여러 API를 병렬로 엮는 복합 질문 전용. task: full_research=도메인·법령명 불명확한 자연어 질문 폴백(기본값, 예 '음주운전 처벌 기준') | law_system=법률·시행령·시행규칙 3단+위임+별표(예 '관세법 체계') | action_basis=처분·허가의 법적 근거+해석례+판례+행심(예 '영업정지 근거') | dispute_prep=불복·소송 준비, 판례+심판례+도메인 결정례(예 '과세처분 불복') | amendment_track=개정 이력+신구대조+연혁(예 '2023년 개정 뭐 바뀜') | ordinance_compare=조례 전국 비교+상위법 적합성(예 '서울시 주차 조례') | procedure_detail=절차·수수료·별표서식(예 '건축허가 절차') | document_review=계약서·약관 조항 리스크+근거법령(text 필수). scenario(선택): 확장 시나리오 — time_travel(두 시점 본문 diff)·timeline·penalty·action_plan·delegation·impact·compliance·customs·manual. 미지정 시 쿼리에서 자동 감지되며, task별 호환 조합은 scenario 파라미터 설명 참조.
| Name | Required | Description | Default |
|---|---|---|---|
| mst | No | [amendment_track] 법령일련번호 (알고 있으면) | |
| task | No | 리서치 유형 (도구 설명의 task 표 참조). 미지정 시 full_research | full_research |
| text | No | [document_review 전용·필수] 검토할 계약서/약관 전문 텍스트 | |
| lawId | No | [amendment_track] 법령ID (알고 있으면) | |
| query | No | 자연어 질문/법령명/키워드 (예: '음주운전 처벌 기준', '관세법 체계'). document_review 외 모든 task에서 필수 | |
| domain | No | [dispute_prep] 전문 분야 (tax=조세심판, labor=노동위, privacy=개인정보위, competition=공정위). 미지정 시 자동 감지 | |
| toDate | No | [time_travel] 비교 종료 시점 YYYYMMDD | |
| articles | No | [law_system] 함께 조회할 조문 번호 (예: ['제38조']) | |
| fromDate | No | [time_travel] 비교 시작 시점 YYYYMMDD | |
| scenario | No | 확장 시나리오. 미지정 시 쿼리에서 자동 감지. task별 호환: law_system=delegation·impact | action_basis=penalty | amendment_track=timeline·time_travel | ordinance_compare=compliance | full_research=customs·action_plan | procedure_detail=manual | |
| parentLaw | No | [ordinance_compare] 상위 법령명. 미지정 시 자동 검색 | |
| maxClauses | No | [document_review] 최대 분석 조항 수 (기본 15) | |
| includeHistory | No | [amendment_track] 조문별 개정 이력(제정 시점부터 전건)까지 포함. 기본 false — 이 섹션이 응답 상한을 먼저 소진해 신구대조표가 잘린다 (#158) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/openWorld, so safety is covered. The description adds genuinely behavioral context: it fans out to multiple APIs in parallel and auto-detects scenario from the query when unspecified, which tells the agent to expect higher latency and broader output. It does not warn about response-size limits in the description body itself (the #158 truncation caveat lives only in the includeHistory parameter).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core distinction — complex parallel research only — is front-loaded before the enumeration, which is the right ordering. The pipe-delimited task/scenario list is dense but information-bearing rather than padded; it is long, though, and the scenario guidance spills into a second clause that could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 13-parameter aggregator with no required params, the description does the hard work of explaining which task/scenario combinations are legal and coherent. With no output schema, the return shape (what sections a full_research vs. amendment_track response contains) is left entirely unspecified — the one meaningful gap for a tool that merges many sources.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each parameter is already tagged with its governing task, so the schema carries most of the load. The description still adds value by supplying the per-task examples that the task enum's own description explicitly defers to ('도구 설명의 task 표 참조') — without the description the enum would be much less interpretable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (다단계 법령 리서치 통합) and immediately constrains scope to '복합 질문 전용' — questions that require stitching multiple APIs in parallel. The eight enumerated tasks with concrete example queries make it unmistakable that this is the orchestrator, not a single-lookup sibling like search_law or get_law_text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The task table is effectively a routing guide: each task names a question shape and an example, and it declares full_research as the fallback for unclear natural-language queries. Scenario compatibility per task is spelled out in the enum description. What's missing is an explicit statement of the negative case — that simple single-law lookups should go to the lighter siblings instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ordinance_radar조례 정비 레이더ARead-onlyIdempotent
Korean-law-mcp — [자치법규] 조례 정비 레이더 — 조례가 인용한 근거 상위법령(법률/시행령/시행규칙)을 본문에서 추출하고, 각 상위법의 현행 시행일과 조례 시행일을 대조해 '상위법이 조례 시행 이후 개정됨 → 정비 검토 대상'을 자동 플래그. 조례 담당 공무원의 상위법 개정 추적·조례 정비 판단용. ordinSeq(또는 id)나 ordinanceName 중 하나 지정.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | ordinSeq 별칭 — 힌트가 id=로 안내하는 경우 대응 | |
| query | No | ordinanceName 별칭 — 자연어 조례명으로 검색 | |
| ordinSeq | No | 자치법규 일련번호 (ordinSeq) | |
| ordinanceName | No | 자치법규명 — 지정 시 검색 후 첫 결과 사용 (예: '서울특별시 광진구 주차장 설치 및 관리 조례') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that the tool is read-only, idempotent, open-world, and non-destructive. Beyond that, the description explains the substantive behavior: citation extraction, effective-date comparison, and automatic flagging of possible maintenance targets. It does not describe output format or handling of missing citations, but the core behavioral logic is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but front-loaded: it names the tool, states the extraction/comparison behavior, then gives the intended user and parameter rule. Some title duplication at the start is redundant, but the remaining text earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still conveys the conceptual return value — flagged ordinance provisions whose superior law was amended after the ordinance took effect. It does not specify the exact result structure or edge-case behavior, but it covers enough for an agent to understand the tool's purpose and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds a meaningful constraint beyond the schema: despite all parameters being optional in the schema, the caller should specify one of ordinSeq/id or ordinanceName. It omits the query alias, but the main identifier-selection rule is useful.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb-and-resource combination: it extracts superior statutes cited by an ordinance and compares effective dates to flag provisions needing review. This is far more precise than the title alone, though it does not explicitly distinguish itself from sibling tools such as legal_analysis or search_law.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear use context — ordinance officials tracking amendments to superior laws and deciding whether an ordinance needs maintenance. It does not state when to use this instead of alternatives or when not to use it, so it falls short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_decisions판례·결정례 검색ARead-onlyIdempotent
Korean-law-mcp — [통합검색] 23개 도메인(판례·해석례·헌재·행심·조세심판·관세·국세청·고용노동부·행정안전부 해석·중앙부처 1차 해석·공정위·개인정보위·노동위·산재보험재심사·고용보험심사·권익위·소청심사·학칙·공사공단·공공기관·조약·영문법령) 통합 검색. domain으로 선택. 판례 본문까지 필요하면 domain='precedent', options.includeText=true, options.detailLimit=N. 판례 기본은 판례명 검색이라 법리·사실관계·유사판례 탐색은 options.search='both'(판례명+본문). 세무 관련 국세청 직접 회신 해석은 domain='nts', 고용노동부 행정해석(질의회시)은 domain='moel'(본문검색 options.search=2), 지방세(취득세·재산세 등) 행정안전부 유권해석은 domain='mois', 그 밖의 부처(국토교통부·재정경제부·보건복지부 등 39개) 1차 해석은 domain='ministry'+options.ministry(부처 코드나 부처명), 산재보험 재심사 재결은 'iaciac', 고용보험 재심사 재결은 'eiac'.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 페이지 (기본1) | |
| sort | No | 정렬: lasc/ldes/dasc/ddes/nasc/ndes | |
| query | No | 검색 키워드 | |
| domain | Yes | 도메인 선택 (enum 값 참조) | |
| display | No | 결과 수 (기본20) | |
| options | No | 도메인별 옵션. prec:{court,caseNumber,fromDate,toDate,search(1=판례명 기본·2=본문·"both"=판례명+본문)} tax_tribunal:{cls,gana,dpaYd,rslYd} customs:{inq,rpl,gana,explYd} moel·mois:{search(1=안건명 기본·2=본문),explYd} ministry:{ministry(필수: 부처 코드 molit·moef·mohw… 또는 부처명 '국토교통부'),search,explYd} constitutional:{caseNumber} interpretation:{fromDate,toDate} treaty:{cls,natCd,eftYd,concYd} |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/openWorld, so the safety profile is covered. The description adds a non-obvious behavioral default that the annotations cannot convey: precedent search defaults to case-name matching only, so body/fact-pattern searches silently miss results unless options.search is changed. It does not discuss result limits/truncation behavior or error cases, so it falls short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded and nearly every clause carries information, but the description is one long run-on sentence packed with parenthetical enumerations. The 23-domain list in the opening sentence and repeated field lists consume space that could be structured as domain→option pairs, making it harder to scan under time pressure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter, nested-options, 23-domain tool with no output schema, the description covers the decision-critical parts: which domain to pick, when to enable body search, and which nested options exist. It does not describe the shape of returned results or how paging/sort codes behave across domains, which leaves a residual gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description earns above baseline because the options object is a loosely typed bag (additionalProperties: {}) and the description supplies the actual per-domain option keys and value encodings (search 1/2/'both', ministry code requirement, explYd, gana, caseNumber, etc.). It also mentions options.includeText and options.detailLimit, which are not documented in the schema at all.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource: an integrated search across 23 Korean-law domains, with the domain parameter choosing the source. It explicitly enumerates the domain families (판례, 해석례, 헌재, 행심, 조세심판, 관세, 부처 해석, 재심사 재결 등), which makes it clearly distinguishable from siblings such as search_law and get_decision_text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives routing guidance that would otherwise require guessing: domain='precedent' plus options.includeText for full text, options.search='both' when the agent wants legal reasoning/fact patterns rather than case-name matches, and explicit source-to-domain mappings (NTS replies → 'nts', labor ministry → 'moel' with search=2, local tax → 'mois', all other ministries → 'ministry' with a ministry code, industrial-accident review → 'iaciac', employment-insurance review → 'eiac'). That is when-to-use-which guidance in concrete terms.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_law법령 검색ARead-onlyIdempotent
Korean-law-mcp — [법령검색] 법령명·조례명·행정규칙명 키워드검색 → lawId, mst 획득. 지자체 조례·규칙(자치법규), 훈령·예규·고시(행정규칙)도 검색 — 0건 시 자치법규/행정규칙으로 자동 폴백(예: '광진구 복무조례', '외국환거래규정'). 약칭 자동변환. 제명변경·시행예정 개정 자동 병기. 폐지된 법령·행정규칙은 폐지 사실과 후속(통합) 규정을 자동 안내. 법령·조례·행정규칙 조회 전 식별자 확보용.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | 검색할 법령명 (예: '관세법', 'fta특례법', '화관법') | |
| display | No | 최대 결과 개수 (기본 50 — 짧은 법령명 정확매칭 누락 방지) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the read-only and idempotent annotations, the description discloses substantive behavior: automatic fallback to local ordinances and administrative rules on zero hits, automatic abbreviation conversion, display of renamed and upcoming-amendment laws, and guidance for repealed rules including successor provisions. These are exactly the behavioral traits an agent needs before relying on results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is front-loaded with the tool purpose and then lists concrete behavioral features. It is dense and slightly overpacked into a single paragraph, but each clause contributes operational information rather than filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, yet the description states the key return values (lawId, mst) and covers fallback, abbreviation conversion, amendment notation, and repealed-law guidance. For a search/discovery tool, this is complete enough for an agent to call and interpret results correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning to the query parameter by explaining that abbreviations are auto-converted and by giving example queries including ordinance and administrative-rule names. It does not add detail about the display parameter beyond what the schema already says.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: keyword search of law names, ordinance names, and administrative rule names, returning lawId and mst. It clearly distinguishes this discovery step from retrieval siblings such as get_law_text and get_annexes by framing itself as identifier acquisition before lookup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear usage condition: use this before retrieving laws, ordinances, or administrative rules in order to secure identifiers. It also explains fallback behavior when there are zero results, though it does not explicitly contrast itself with sibling search tools such as search_decisions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
10 tool updates
v4.15.23- First observed
discover_tools - First observed
execute_tool - First observed
get_annexes - First observed
get_decision_text - First observed
get_law_text - First observed
legal_analysis - First observed
legal_research - First observed
ordinance_radar - First observed
search_decisions - First observed
search_law
TDQS
Scored across 10 tools
Core search/retrieval pairs are well separated (search_law vs get_law_text, search_decisions vs get_decision_text), and the discover/execute meta pair is distinct. However legal_research and legal_analysis are broad multi-mode hubs whose modes overlap with ordinance_radar, get_law_text, and search_decisions; the detailed descriptions help, but boundaries remain fuzzy.
All tools use snake_case, and most follow a recognizable verb_noun pattern such as search_law, get_law_text, search_decisions, and execute_tool. The noun/adjective-based names (ordinance_radar, legal_research, legal_analysis) are minor deviations rather than a different convention.
Ten top-level tools is well within the appropriate range, and the discover_tools/execute_tool meta pair sensibly avoids exposing 80+ specialist tools directly. Each top-level tool has a meaningful role in the surface.
The set covers the full read-only legal research lifecycle: law lookup, statute text and annex retrieval, ordinance maintenance analysis, decision search/retrieval, multi-step research, citation verification, and amendment comparison. Meta access to specialist domains fills the remaining gaps.
Maintenance
Related MCP Connectors
Korean law: statutes, precedents, ordinances, treaties and citation verification (법제처 API).
Korean accounting standards, audit, tax and legal sources and rulings, with citation checks
Korean fact-verification tools for AI agents: business registration, address, DART, apt prices, laws
Korean statutes, precedents, local business-district stats and public procurement for AI agents.
Related MCP Servers
- FlicenseAqualityAmaintenanceEnables AI systems to search, retrieve, and analyze Korean legal information from the National Law Information API (law.go.kr), including laws, administrative rules, English translations, and law-ordinance linkages.262-
- FlicenseNot gradedqualityDmaintenanceEnables real-time search and analysis of Korean laws, legal precedents, and administrative rules through the National Law Information Center Open API, allowing AI agents to access official legal information for contract review, compliance, and legal research.75-
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to search and retrieve Korean laws, regulations, administrative rules, legal interpretations, and precedents via official APIs for legal review workflows.1MIT
- AlicenseAqualityDmaintenanceEnables AI assistants to query and analyze Korean law, including statutes, precedents, and ordinances, with citation verification and impact analysis.1011,768 npmMIT

