{"data":{"slug":"chrisryugj-korean-law-mcp","name":"korean-law-mcp","tagline":"Korean law MCP for LLMs","github_url":"https://github.com/chrisryugj/korean-law-mcp","owner":"chrisryugj","repo":"korean-law-mcp","owner_avatar_url":"https://avatars.githubusercontent.com/u/212630997?v=4","primary_language":"TypeScript","stars":2520,"forks":505,"topics":["citation-verification","claude","hallucination-detection","korean-law","law","legal-ai","legal-rag","legal-tech","mcp","mcp-server","model-context-protocol","precedent","typescript"],"archived":false,"github_pushed_at":"2026-08-20T07:50:14+00:00","maintenance_label":"Very active","stars_delta_30d":196,"url":"https://www.graphcanon.com/tools/chrisryugj-korean-law-mcp","markdown_url":"https://www.graphcanon.com/tools/chrisryugj-korean-law-mcp.md","api_url":"https://www.graphcanon.com/api/graphcanon/tools/chrisryugj-korean-law-mcp","graph_url":"https://www.graphcanon.com/api/graphcanon/graph?tool=chrisryugj-korean-law-mcp","description":"법제처 국가법령정보를 LLM에서 바로 조회하는 MCP 서버. 법령·판례·조례 검색과 인용 검증 | MCP server for Korean law — search statutes, precedents, and ordinances, and verify citations","homepage_url":"https://www.npmjs.com/package/korean-law-mcp","license":"MIT","open_issues":0,"watchers":10,"ai_summary":"Provides tools and protocols for citation verification, hallucination detection, and querying of Korean legal information including laws, precedents, and regulations within the context of AI systems.","readme_excerpt":"# Korean Law MCP\n\n**법제처 42개 API를 10개 도구로.** 법령, 판례, 행정규칙, 자치법규, 조약, 해석례(국세청 포함) + **LLM 환각 방지 인용 검증(법령·판례, 실존+내용)** + **조문 영향 그래프** + **시점 비교 자동 diff** + **이럴 땐 이렇게 — 5단계 안내** + **판례 생사 확인(Citator)** + **행위시법 판단** + **조례 정비 레이더** + **폐지 법령 후속 규정 안내**를 AI 어시스턴트나 터미널에서 바로 사용.\n\n\n\n\n\n<a href=\"https://jocohunt.com/p/5lkkxp3x\" target=\"_blank\" rel=\"noopener\" title=\"조코헌트 주간 1등 Top 1 위너\">\n  <img\n    src=\"https://jocohunt.com/images/badges/weekly-light.svg\"\n    alt=\"조코헌트 주간 1등 Top 1 위너\"\n    style=\"width: 250px; height: auto;\"\n  />\n</a>\n\n> 법제처 Open API 기반 MCP 서버 + CLI. Claude Desktop, Cursor, Windsurf, Zed, Claude.ai 등에서 바로 사용 가능.\n\n[English](./README-EN.md)\n\n\n\n<sub>▶ 클릭하면 유튜브에서 재생됩니다.</sub>\n\n### AI에 연결하기\n\n| Claude에 연결하기 | ChatGPT에 연결하기 |\n|:---:|:---:|\n|  |  |\n\n---\n\n## v4.12.0 — 이슈 62건 통합 배치 + \"없다고 잘못 말하던\" 경로 차단\n\n법률 자문 3축(법적 정합성·토큰 효율·응답 성능)을 실측해 등록 이슈 62건([#88~#149](https://github.com/chrisryugj/korean-law-mcp/issues))을 한 번에 해결한 배치([#150](https://github.com/chrisryugj/korean-law-mcp/pull/150), @humdrum00001010)와, 머지 전 도메인별 리뷰에서 찾은 결함 31건의 후속 수리. 테스트 196 → **701**.\n\n**자료가 있는데 \"없다\"고 답하던 경로를 막았다.** 이 서버에서 가장 나쁜 실패는 느린 게 아니라 실재하는 법령·판례를 부존재로 단정하는 것이다.\n\n- 판례 조회에서 **일시 장애(503·네트워크 오류) 직후의 빈 응답 한 번**을 부존재로 확정하던 판정을 관측 이력 기준으로 교체\n- 법제처 점검·안티봇 페이지를 받았을 때 **실재 판례를 `[NOT_FOUND]`로 단정**하던 HTML 폴백 경로 차단 — 이제 기구 고장과 자료 부존재를 구분한다\n- 별표 조회에서 HTML 응답이 조용히 빈 목록이 되고 \"법제처 DB에 없습니다\"로 굳던 경로 차단\n\n**응답이 멈추거나 끊기지 않는다.**\n\n- 체인 자문에 **45초 데드라인**(`MCP_CHAIN_DEADLINE_MS`) — 만료되면 받은 갈래까지 조립해 **부분 결과**를 돌려주고 못 받은 자리는 마커로 남긴다. 업스트림이 느릴 때 MCP 클라이언트 타임아웃(60초)에 걸려 통째로 날리던 것이 사라졌다\n- 2MiB 초과 본문에서 **300초 무한 정지 → 13ms 명시 에러**(v4.11.0 회귀 수정)\n- 판례 미스 조회 12.5초 → **2.2초**, 체계도 히트 10.6~11.6초 → 6.3~8.3초\n- 8.5k자 질의의 라우팅 476ms, 적대적 입력에서 최대 45.9초 걸리던 정규식 제거\n\n**인용 검증이 더 정확해졌다.**\n\n- `verify_citations`가 법령+**판례** 2축으로 확장 — 실존 불가와 미확인을 구분해 표기한다\n- `impact_map`이 조번호에 더해 **법령명까지** 대조 — 형법 제1조 질의에 군형법 제1조가 섞이던 것 차단. 판정이 애매하면 버리지 않고 보류한다(위헌심판의 \"구 OO법\" 인용 포함)\n- `cite_check`가 판시사항을 배열·객체 형태로 받아도 읽는다(종전에는 조용히 실패)\n\n**별표·검색.** 100건 창 밖의 별표에 도달(도로교통법 시행규칙 263건 중 별표28 본문 확인), 별표 `1의2`를 별표 1로 조용히 바꿔 주던 오선택 차단, `discover_tools` 응답 65% 감축(정답 잔존 10/10).\n\n> 사용자 가시 변경 2건: 날짜 표기가 `2024.1.5.` → `2024.01.05`로 통일(빈 시행일은 `N/A`), `discover_tools` 응답이 포인터·랭킹 형식으로 바뀌었다.\n\n## v4.11.0 — 요청·릴리스 경계 하드닝\n\n한 번의 요청이 업스트림 호출 수백 건으로 증폭되거나, 클라이언트가 끊은 뒤에도 서버가 계속 일하던 구조를 정리했다.\n\n- **요청 단위 실행 예산**: 재시도·안티봇 hop까지 같은 예산에서 차감(`MCP_MAX_UPSTREAM_REQUESTS` 기본 48)\n- **취소 전파**: HTTP 연결 끊김·MCP 취소 신호가 도구·체인·업스트림 fetch·백오프 대기까지 도달\n- **패키징 검증**: 소스 없는 산출물·`exports` 대상 부재를 게시 전에 차단\n\n> ⚠️ Breaking: HTTP 바인드 기본값이 `0.0.0.0` → `127.0.0.1`, `TRUST_PROXY` 기본값이 `1` → `false`(허용값도 1~10 정수만), `get_batch_articles` 입력 상한(법령 20개·법령당 조문 50개·요청당 100개). 자세한 마이그레이션은 [CHANGELOG](./CHANGELOG.md#4110---2026-08-16) 참조.\n\n## v4.10.0 — 폐지된 법령을 찾을 때 후속 규정을 알려준다\n\n폐지된 법령명으로 검색하면 0건만 돌아오던 것을, **연혁을 추적해 폐지 사유와 후속 통합 규정을 안내**하도록 바꿨다. 법령·행정규칙 양쪽 모두 지원한다. \"지금은 없는 법\"을 묻는 질문이 막다른 길로 끝나지 않는다.\n\n## v4.9.7 — 공용 키 사용자의 429 폭증 해소 (폴백 쿼터 토큰버킷화)\n\n법제처 키 없이 공개 서버(`mcp.gomdori.app/law`)를 쓰는 사용자가 429를 반복해서 맞던 문제. 서버 키 폴백 쿼터는 **무키 사용자 전원이 공유하는 전역 한도**인데, 고정창(fixed window) 방식이라 창 초반 몇 명이 소진하면 나머지 사용자가 남은 창 내내 차단됐다. 실측(2026-08-12 프로덕션)에서 무키 요청 3건 중 2건이 즉시 429였다.\n\n- **토큰버킷으로 교체** (`src/lib/rate-limit.ts`): 연속 리필이라 소진 후에도 몇 초 뒤 다시 통과한다. 평균 처리율은 그대로 두고 버스트만 흡수 — 한 대화 턴에 도구를 여러 번 부르는 MCP 사용 패턴에 맞다\n- **`Retry-After` 헤더 + 대기 초 안내**: 429 본문이 `retry in Ns`를 포함하고, IP 한도 초과 응답도 JSON-RPC 형식으로 통일(기존 `{error}` 평문은 MCP 클라이언트가 파싱하지 못했다)\n- **`FALLBACK_DAILY_CAP` 신설**: 분당 한도를 풀어도 하루 총량은 묶어 서버 키의 법제처 quota를 보호. 0이면 비활성(기본)\n- 공개 서버 설정도 분당 `30 → 120`으로 완화하고 일일 캡 `43,200`(종전 분당 한도의 24시간 이론 총량)을 걸었다 — 총량은 유지, 버스트만 4배 완화\n\n자체 법제처 키를 헤더(`apikey`)로 넘기는 사용자는 이 게이트를 타지 않는다(무료 발급: https://open.law.go.kr).\n\n## v4.9.0 — 인용 검증이 **조용히 건너뛰던** 표기 3종 해소\n\n`verify_citations`를 환각 게이트로 파이프라인에 걸어 쓸 때 가장 위험한 실패는 \"검증 실패\"가 아니라 **검증 미가동**이다. 법령명을 못 뽑으면 조문 실존 검증에 진입조차 못 하는데 출력은 경고(⚠)로만 보여서, 같은 텍스트에 없는 조문이 섞여 있어도 `✗`가 나오지 않는다. 사용자에겐 \"통과\"로 읽힌다. 표기 3종을 실사용 제보로 확인해 막았다.\n\n```\n「노인장기요양보험법」 제38조제1항 및 같은 법 시행규칙 제30조\n\nbefore  ⚠ 0 실존 / 2 확인필요 — '119긴","github_created_at":"2025-12-19T11:03:22+00:00","created_at":"2026-07-11T11:51:16.185812+00:00","updated_at":"2026-08-26T12:02:09.097332+00:00","categories":[{"slug":"data-retrieval","name":"Data & Retrieval","url":"https://www.graphcanon.com/categories/data-retrieval","markdown_url":"https://www.graphcanon.com/categories/data-retrieval.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/data-retrieval"},{"slug":"llm-frameworks","name":"LLM Frameworks","url":"https://www.graphcanon.com/categories/llm-frameworks","markdown_url":"https://www.graphcanon.com/categories/llm-frameworks.md","api_url":"https://www.graphcanon.com/api/graphcanon/categories/llm-frameworks"}],"tags":[{"slug":"citation-verification","name":"citation-verification"},{"slug":"hallucination-detection","name":"hallucination-detection"},{"slug":"korean-law","name":"korean-law"},{"slug":"legal-ai","name":"legal-ai"},{"slug":"legal-rag","name":"legal-rag"},{"slug":"mcp","name":"mcp"},{"slug":"model-context-protocol","name":"model-context-protocol"}],"trust":{"provenance":{"is_fork":false,"github_id":1119492821,"owner_type":"User","methodology":"github_public_v1","parent_repo":null,"near_duplicate_slugs":[]},"computed_at":"2026-08-26T12:02:07.828Z","maintenance":{"label":"Very active","score":96,"methodology":"github_public_v1","releases_90d":7,"days_since_push":6,"last_release_at":"2026-08-19T12:30:15Z","stars_delta_30d":196,"open_issues_delta_30d":0},"security_summary":{"status":"no_manifest","scanner":null,"low_count":0,"high_count":0,"last_scan_at":"2026-07-11T11:51:17.378Z","medium_count":0,"scan_profile":"mcp_manifest","critical_count":0}},"capability_facts":{"mcp":{"source":"package.json:@modelcontextprotocol/*","observed_at":"2026-08-26T12:02:08.343Z","server_manifest":true},"scan":{"source":"repo_scan","observed_at":"2026-08-26T12:02:08.343Z"},"deploy":{"source":"dockerfile:Dockerfile","self_host":true,"observed_at":"2026-08-26T12:02:08.343Z","managed_saas":false},"has_cli":{"value":true,"source":"package.json:bin|scripts","observed_at":"2026-08-26T12:02:08.343Z"},"languages":{"value":["typescript","javascript"],"source":"github.language+package.json","observed_at":"2026-08-26T12:02:08.343Z"},"has_docker":{"value":true,"source":"dockerfile:Dockerfile","observed_at":"2026-08-26T12:02:08.343Z"},"license_spdx":{"value":"MIT","source":"github.license","observed_at":"2026-08-26T12:02:08.343Z"}},"decision_facts":{"hosting":null,"pricing":null,"requirements":null,"constraints":null,"when_to_use":["When developing AI systems that need precise querying of Korean laws and precedents","For citation verification in the context of Korean legal texts within AI applications"],"when_not_to_use":["If your project requires legal information from jurisdictions other than Korea","In contexts where real-time adaptation to evolving legal interpretations is critical without a focus on Korean law"],"source":"enrich:decision_facts","observed_at":"2026-07-15T08:27:09.127Z"},"constraint_facets":null,"decision_summary":[{"label":"Adopt for","value":"korean-law-mcp is a framework for Korean legal information retrieval and verification specifically for LLMs."}]}}