CLI and MCP tools for querying Korean legal data mirrored by legalize-kr. Provides search and access to Korean laws, precedents, administrative rules, and ordinances.
This MCP server exposes 4 Korean legal research tools with mostly adequate naming and schemas, but descriptions vary in quality and lack LLM-optimization guidance. Tool names follow verb_noun convention (laws_list, laws_get, laws_article, search) which is good. All 4 tools have descriptions and input schemas are visible in the source. However, descriptions are somewhat generic and lack actionable context for LLM decision-making (e.g., when to call laws_list vs search, or what distinguishes laws_get from laws_article). Parameter descriptions are present but inconsistent, some are well-structured (e.g., 'semantic' enum with clear semantic_date explanation), others are minimal (e.g., 'category' just lists enum values without usage guidance). Output schemas are partially documented (JSON structure visible in return statements) but lack explicit documentation of response field semantics in docstrings. Error handling returns JSON error objects but lacks recovery guidance, an LLM getting 'version not found' has no suggestion for next steps. The server targets a specialized domain (Korean law) which constrains tool design, but general quality principles still apply.
법령의 특정 조문을 조회합니다.
법령 전문(全文)을 마크다운으로 조회합니다.
미러된 한국 법령 목록을 조회합니다.
법령, 판례, 행정규칙, 자치법규에서 키워드를 검색합니다.
Descriptions lack actionable context for LLM tool selection. 'laws_get' retrieves full text and 'laws_article' retrieves single articles, but descriptions don't explain when an LLM should prefer one over the other, or what use cases each enables.
Error responses lack recovery guidance. When resolve_law_file_as_of() returns None with 'version not found' message, the tool returns a bare error JSON. The LLM has no suggestion for next steps (e.g., 'Try laws_list() to find available laws', 'Use different semantic parameter', 'Check date format').
Parameter 'semantic' uses Korean enum values ('공포일자', '시행일자') with English descriptions. While descriptions explain the distinction, LLMs may struggle with non-ASCII enum values in some contexts. Consider providing English aliases or translating enums.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 67 | 2026-07-28+ | v2 |
Output schema for 'search' tool is not visible in provided source code snippet (file listed as src/legalize_cli/cache.py but implementation not shown). Cannot verify return structure, field naming, or pagination support.
Parameter descriptions in 'search' mention 'code' strategy requires GITHUB_TOKEN, but tool interface does not expose how the token is resolved or whether it must be pre-configured. LLM cannot control strategy selection dynamically.
Pagination is supported (page, page_size parameters in laws_list and implicit in search limit), but 'next_page' field in laws_list response is present but semantics are unclear, is it a page number, cursor, or boolean indicator? Should be documented in return schema.