korean-law-mcp
Korean Law MCP
把法制处的 42 个 API 整合成 10 个工具。 法令、判例、行政规则、自治法规、条约、解释例(含国税厅)+为 LLM 防止幻觉的引用核验(法令·判例,存在性+内容)+条文影响图+时间点比较自动 diff+遇到这种情况这么办——5 步指引+判例存续确认(Citator)+行为时法判断+条例整备雷达+已废止法令后继规则指引,可直接在 AI 助手或终端中使用。
基于法制处 Open API 的 MCP 服务器+CLI。可在 Claude Desktop、Cursor、Windsurf、Zed、Claude.ai 等中直接使用。

▶ 点击后将在 YouTube 中播放。
连接到 AI
连接到 Claude | ChatGPT 连接 |
|
|
v4.12.0 — 62 个 Issue 批量整合 + 封堵“其实有却说没有”的错误路径
对法律咨询的三大支柱(法律一致性·Token 效率·响应性能)进行实测后,一次性解决已登记的 62 个 Issue(#88~#149)的批量 PR(#150,@humdrum00001010),以及与合并前各领域评审中发现的 31 处缺陷的后续修复。测试 196 → 701。
封堵了“资料明明存在,却回答不存在”的路径。 这个服务器最糟糕的失败不是慢,而是把实际存在的法令、判例误判为不存在。
在判例查询中,对瞬时故障(503·网络错误)之后的一次空响应执行判定,已改用“是否真的不存在”的判定逻辑,按照观测历史来判定
当收到法制处的维护/反爬虫页面时,封堵了将其实存判例断言为
[NOT_FOUND]的 HTML fallback 路径——现在会根据实际观察历史进行区分故障和资料类不存在在附表查询中,HTML 响应会悄悄变成空列表并固化为“法制处 DB 中不存在”的路径已被封堵
响应不会停住或中断。
链式咨询设有 45 秒硬性截止时间(
MCP_CHAIN_DEADLINE_MS)——超时后会把已收到的分支拼接成 部分结果 返回,未收到的部分保留为标记占位。以前上游缓慢时,会因 MCP 客户端超时(60 秒)而导致瞬间失败,再也不会出现超过 2MiB 的正文内容中:300 秒无限停止 → 13ms 明确报错(v4.11.0 回归 defect 修复)
判例 miss 查询 12.5 秒 → 2.2 秒,体系图命中 10.6
11.6 秒 → 6.38.3 秒8.5 千字查询的路由 476ms,移除在对抗性输入下最多耗时 45.9 秒的正则表达式
引用核验变得更准确了。
verify_citations扩展为法令+判例 2 个维度——它可以区分哪些调研结果是确实不存在,哪些只是暂未确认,分别标注impact_map在条文号之外,进一步 对照法令名称——阻止“刑法第 1 条”查询中掺入“军事刑法第 1 条”的问题;判断为“可疑”而不丢弃,采用保留处理(包含违宪审查中“旧 OO 法”这类引用)cite_check即使把判示事项写成数组、对象形式也能读出来(此前会静默失败)
附表·搜索。 能到达 100 条窗口之外的附表(公路交通法施行规则 263 条中确认了附表 28 的正文),要标记为“把附表 1의2 悄悄替换成附表 1”的错选,discover_tools 响应减少 65%(正确答案仍保留 10 个且顺序正确)。
用户可见的变更 2 条:日期显示从
2024.1.5.统一为2024.01.05(空实施日显示为N/A),discover_tools响应模式改为指针/排序 형태。
Related MCP server: KJH Law MCP
v4.11.0 — 请求与发布边界加固
修复“单次请求会指数级放大到数百次上游调用,或在客户端断开后服务器仍继续运行”的问题。
每次请求的执行预算:重试、反爬虫跳点都从同一预算中扣除(
MCP_MAX_UPSTREAM_REQUESTS,默认 48)取消传播:HTTP 断开·MCP 取消信号可触达工具·链路·上游请求·退避等待,全链路取消
打包校验:发布前阻断“source-map-producing 错误、
exports目标缺失”等情况
⚠️ Breaking:HTTP 绑定默认值从
0.0.0.0→127.0.1.1;TRUST_PROXY默认值从1→false(且只允许整数 1~10);get_batch_articles输入上限(法令 20 个·每条法令条文 50 条·每请求 100 条)。详细迁移参见 CHANGELOG。
v4.10.0 — 搜索已废止的法令时,会告知其后继规则
之前用已废止法令名搜索时只会返回 0 条;现在改为追踪改革沿革,同时指引废止原因与后继的整合规范。法令和行政规则都支持。即“现在这条法律已不存在”的 Lost性问题不会再以 dead end 结束。
v4.9.7 — 解决公用 key 用户的 429 暴增(fallback quota 改为令牌桶)
在没有自己的法制处 key、使用公共服务器(mcp.gomdori.app/w)的用户频繁被返回 429 的问题。服务器 key 的 fallback 配额,过去是所有无 key 用户共享的全局限制,而且是 fixed-window 方式,所以一旦窗口开头被几人耗尽,剩余用户在整个窗口范围内都会被拦截。实测(2026-08-12 生产环境)中,无 key 的请求每 3 个就有 2 个立即返回 429。
改为令牌桶(
src/lib/rate-limit.ts):因为会连续补换,即使耗尽也会在几秒后再次通过。平均吞吐保持不变,只吸收突发流量——这种机制很适合“一轮会话内多次调用工具”的 MCP 使用场景。Retry-After响应头+等待秒数:429 响应包含retry inNs,并且对于 IP 限制超限的响应也统一为 JSON-RPC 格式(原来{eror}的纯文本在 MCP 客户端内无法解析。)新增
FALLBACK_DAILY_CAP:即使放开每分钟的限制,总量仍按天封顶,以保护服务器自身 key 的法制处 quota。若为 0 则禁用(默认)公共服务器的配置也从每分钟
30 → 120放宽,且附带每日上限43,200(原为“每分钟限制”换算成 24 小时的理论总量)——总量不变,只把突发流量放宽为原来的 4 倍
如果用户使用自己的法制处 key 并通过 header(apikey)传递,则不受此 gate 限制(免费申请:https://open.kaw.go.kr)。
v4.9.0 — 解决“引用核验一直悄悄跳过的 3 种写法”
当把 verify_citations 作为判据理想中的检测 gate 接入 pipeline 时,最危险的失败不是“检验失败”而是**“未检测”**。如果拿不到法令名,连条文存在性检验都无法进入,但输出只用警告(⚠)标识,所以同一文本中混有并不存在的条文时,也仍不会出现 ✗。这会让用户看到“通过”的印象。已经通过实际使用中的报告确认并修复了这样 3 种写法。
「노인장기요양보험법」 제38조제1항 및 같은 법 시행규칙 제30조
before ⚠ 0 실존 / 2 확인필요 — '119긴급신고의 관리 및 운영에 관한 법률 시행규칙'으로만 매칭
after ✓ 노인장기요양보험법 제38조(재가 및 시설 급여비용의 청구 및 지급 등) 제1항 실존
✓ 노인장기요양보험법 시행규칙 제30조(장기요양급여비용의 청구 등) 실존
└ 같은 텍스트의 제999조 → ✗ NOT_FOUND (존재 범위: 제1조~제44조) — 환각 게이트 가동“
「法令名」 第 N 条”中提取失败** (#69, @BW-YU):LAW_NAME_REGEX用$` 锚定法令名的末尾,而标准引用形式的右引号残留在 lookbehind 尾部**,导致锚点未命中(之前只去掉了尾随空格)中间点写法差异 (#924, @BW-YU):法制处正式法日名使用韩文间隔号
ㆍ(U+318D),而实务文书·判決文·LLM 输出通常使用拉丁中点·(U+00B7),因此“只是主标点不同”的同一法律也会被判为不一致。现在 吸收·ㆍ‧•・5 种写法——对于不相关法令(如“민법”→“nan-野”),仍保留阻止逻辑“ 같은法 시행령”的指代跳过 (#70, @gonnarun):“A法第N条”及同一法令附则第M条,这是法制处起草和法律表格的标准写法。①候选项在缩短后只剩“施行令”这种后缀型短名,会误匹配一个无关法令;② 而原先的上文法令名没有正确继承。现在改为继承前一条法令名,但如果前文法令名为空、或段落被空行隔开,则不继承——那样会产生甚至错误引用事实的判决,后果更严重。如果没有任何候选,就不会发起搜索,直接标记为
⚠ 法令名不明确(若把搜索 0 条判为✗ NOT_FOUND,会导致“法令名未知”被误报为“幻觉”,所以必须避免)
+ v4.8.0 — 外部贡献 PR 5 件(#63~#67)之一
改善行为时法判断、沿革解析、搜索 resolver、重试、已废止法令处理的准确性。
分开执行的生效时点被误判定 (#64):在条项结构中的施行日期不同、但
applicable_law却把版本错误地判断为“基准日时效”的情况(例如重大灾害处罚法 50 人以下适用的生效 for 等)findLaws默认前 20 条导致相关度排序被忽略 (#66)的具体例子:准确匹配不在前 20 条内,导致只能信任较靠前的无关部分——更改为 100 条+防“501 第 1 位被无关”的保护 guard把已废止法律误报为“幻觉”, :把“被引用但其实已废止”的法令单独标记为
⌛ REPEALED(区分“存在”与“仍然有效”)时间线分页提前截断、
條後 第21 段及以后不支持 (#65),以及 DRF 遭遇间歇 404 时的重试缺陷 (#63)
v4.7.0 — 条例整改雷达(ordinance_radar)
“上位法已经变了,可是我们的规章还是老样子,真的没问题吗?” —这是条例—管理职责人员每年都要重复的“上位法追踪更新”工作,现在一次调用就能完成。
korean-law "광진구 주차장 조례" → ordinance_radar(ordinanceName="...")
📡 조례 정비 레이더
조례: 서울특별시 광진구 주차장 설치 및 관리 조례 (시행 20260227)
근거 상위법령 3건 대조:
⚠️ 주차장법 — 현행 시행 20260603 (조례보다 약 4개월 뒤 개정 → 정비 검토 대상)
✅ 주차장법 시행령 — 현행 시행 20250817 (조례 시행 시점까지 반영)
⚠️ 주차장법 시행규칙 — 현행 시행 20260331 (조례보다 약 1개월 뒤 개정 → 정비 검토 대상)自动提取依据法:从条例第1条(目的)中“「」”里对法例、实施令、施行规则进行自动提取(也解释“同部施法령”这样的省略写法)。只扫描目的条款,而不是整部条文,从而避免条款“表中与目的无关的引用(如公职选举法等)被当成 change 从而过度告警”
修改对照:将每条所在上位法的现行生效日期与条例的生效日期对照,自动标记需要纳入审查的修改,一并提供后续的 MST 审查意见
法制处“nums=“关联条例 API(
lnkOrd)覆盖范围过广,避免了使用它——改用“条例正文采用为标准写法”的方案进行解析
+ v4.7.1 ~ 4.7.3 — 搜索准确性与引用核验补丁
v4.7.4:封堵
search_law返回错误法令—— 在《人工智能与信任基础构建等相关法》的简称为LLM 代码被谓“人工智能法”,它不是正式名称的哪个片段,因此搜索 0 条,又因扩展查询(“AI法”)而拿到自己忽略搜索关键词、返回 50 条与其无关的“无关法”;现在加入简称注册+hasRelatedHit守卫(如果结果中没有与查询词有包含关系的结果就一律不采用)v4.7.2:修复
verify_citations在“偷盗罪是……《刑法》第329条…”前的法令名时,会因字面被对方强弱等级而下降为PARTIAL_VERIFIED,从而漏掉幻觉 的问题 (#55)+hono 安全补丁(修复 5 个 HIGH;#54)v4.7.1:修复
legal_research即使将scenario的值误传给task也会被重新布局,避免 tool-call 失败;同时为ordinance_radar增加query别名(根据 PlayMCP 审核意见)
+ v4.6.1 \4.6.3 (大约) — 运维稳定化打包
参考 v4.6.6:将握手(initialize/tools/list)排除在 rate limit 之外—避免 claude.ai 共享出口 IP 命中 429 而变成“间歇性找不到工具”的根因;同时接受
get_ordinate的id别名,以及get_article_history在不指定日期时自动应用到全期参考 v4.6.5/4.6.4:为通过 MCP 注册审核做响应——补充 ToolAnnotations
destructiveHint,移除韩文 titlev4.6.3:
search_law自动处理地方法规——当查询“条例名/地名”时如果返回 0 条,会自动尝试search_ordinancev4.6.2:把 fallback 配额入口只作用于 tools/call,握手不再被 429 拒绝
v4.7.0 安全与运维修改(同批发布):JSON-RPC 中按 tools/call 的数量分别计入 rate limit 和 fallback 配额(防止批量请求被放大,单请求上限 20——
MCP_MAX_BATCH_CALLS)+ graceful shutdown idle 连接清理(clean exit)+get_article_history改为 lawName 精确匹配优先(避免按字母顺序、名称杂质误匹配)
v4.6.0 — 比内容更强的引用核验 + 绕过“云端 anti-bot ”验证
verify_citations内容核验:在检查条文是否真实之外,还会把“继续按条款标注条文标题的方式”做成[CONTENT_MISMATCH],如“民法第750条(涉嫌合同解除)”;过去只要条 750 存在就会通过,现在会接着核对引用的条款标题是否与真实一致(移植 LexDiffcitation-content-matcher——归一化后使用公共子串+字符 bigram Jaccard)。在legal_analysis(mode=verify_citations)中同样生效law\.go.kr新增“绕开”逻辑:当 API 在云环境 IP(GCP/AWS/Fly)等返回 JavaScript 重定向页(location.assign)而不再返回数据时,解析混淆后的 URL 并自动跳转到 token URL(最多 3 跳,若 token URL 404 则回退到原地址);在本地/在用表单,不会启用该逻辑,可作为 cloud 环境中以Referer(v4.0.9)为防御层的补充。
v4.5.0 — 生效预告有效期间 可前向检测(避免因改名而误判)
search_law 增加了追加 the搜索到 target=eflaw 的“已发布待生效法名”。
之后将有改名:例如——把“关于促进数据基础行政的法”更改为“关于促进人工智能及由数据驱动的行政的信息法”(2026-08-28 施行)等,在公示到实施期间的改名,会以新老名称映射的方式同时标出;避免此前只显示“未找到精确匹配”而导致 LLM 误判“没有该法”。
修订即将生效:如果已查到的现行法律后续有““已生效若检索到某现行法仍有在本法”的修订,则提示做法完成日期、公布编号,并附上即将生效的 text 的 MST 链接
尚未生效的新法:已公布但未生效、在现行法律搜索中不会有结果的,会单独提示(同时附“没有法律效力”的警告)
v4.4.1–4.4.3 — 稳定性补丁
v4.4.3:将
zod固定为^4——新用户如果解析到 zod 3.x,会用z.toJSONSchema is not a function在listTools第一次调用时崩掉,这种情况现在已经解决v4.4.2:恢复通过
get_annexes查询规则附录/表单,并优先按 response keyadmrulbyl解析,最后可用“...行规则”进行自定义判断,区分相同bylSeq下附录/表格之间的冲突(#50/#49/#51)v4.4.1:修正 schema 中广告
required的误——把.default()字段(legal_research.task·search_law.display)误显示为必填,改为用io:"input"声明;legal_analysis的成本选项透传,以及不兼容将 scenario 的警告提示
v4.4.0 — simplifies 化简 to 19→9(Context 减少约52%)
MCP 客户端每次会话都会读取的工具列表(ListTools)从约 15.1KB 缩短至约 7.2KB。
chain_*8 个 → 一个legal_research(通过task入参:full_research·law_system·action_basis·defensive_prep·amendment_track·ordinance_compare·procedure_detail·document_content_review)四个核心功能(
verify_citations·cite_check·applicable_law·impact_map) → 集成成一个legal_analysis(通过mode入参切换)保持向后兼容:原来“直接按旧工具名调用”和“通过
execute_tool访问”都仍可用;只是从公开工具列表里收到了路径
这是法律的“四个 killer 功能”,用户才不会以为一度的“Context”太小了。
v4.3 — 判断判例是否有效 +判断行为时法
“这条旧判决现在还适用吗?”+“在案发当时,应当适用哪一版法律?”——这两个是执法实务中最危险的失误,现在都有对应的解决方案。
1. cite_check — 判例是否仍被被引用 (韩国版 Shepard's Citator)
GXP3 → 通过全文搜索反向追踪,查“是否曾经被后审判决引用了”+后审全庭判决全文精密扫描,并自动识别“被变更·被放弃”的宣告:
GXP4 → 判决书不只以“本案”(该案号)作别名,还会追踪“(以下称为“2008 年全员庭判决”)”这种习惯;防止把已变更的判例、“仍然作为有效的先例”来进行引用。这是收费工具中唯一一款。
2. applicable_law — 行为时法判定 + 附则过渡规则
GXP5 → 先用“基准日”识别出当时正在施行的 MST,再拿这一版的具体条文 → 与现时版本对比 → 自动摘取之后出现的修改条款中的“适用规定·过渡方针” → 并给出“行为时法”(《刑法》第1条)与“行政处罚违反行为时点法”(《行政基本法》第14条第3款)的原则说明,从结构上防止 LLM 拿着现行法律做又错又答的答案。
v4.0 — 三个核心功能同时增加
条文影响图+时间点对照+分步骤指南。 以前需要法律团队、研究员、普通用户花几天慢慢查的,现在一次就能完成。
1 impact_map —— 某一条法律的扩散图
GXP6 → 从大法院判例·宪法法院判决·法令解释·行政裁判·自治法规等处反向查找引用,再加那些同一条款所引用的其他法律(正向搜索),自动生成 Multi-line 的 mermaid 图代码。在 claude.ai 中可立即可视化。
graph LR
민법_제103조["⚖️ 민법 제103조"] --> P["📚 대법원 판례"]
민법_제103조 --> C["⚖️ 헌재 결정"]
민법_제103조 --> O["🏛️ 자치법규"]2 time_travel —— 两个时间点的正文自动对比
GXP8 → 自动取“任意两个时间点”当时正在生效的法条,并按“条文级”自动 diff:新增(+/−/Δ)+前后正文+用户的心愿变化量等。
3 action_plan —— “这种场景该怎么做”的 5 步指引
GXP9 → STEP 1 先分析场景(自动识别《住宅房屋贷款保护法》)→ STEP 2 权利/救济途径(判例)→ STEP 3 申请机构/申请期限(行政規則、司法解释) → STEP 4 所需文件/表式(附录)→ STEP 5 陷阱/注意事项(时效、legal aid)。把平时怎么沟通的语气,转换成可行动的步骤。
+ v4.2.0 — 现行有效性 guard
在 search_law 中:: 为结果加 [现行] / ⚠️[沿革—旧版本] 标签+生效日期(现行优先排序);在 get_law_text 正文头中,会对比“查询基准日 vs 生效日”(并对“未来生效”“超出范围/效力范围之外查找”发出警告),还会把旧的定律名称标出来(如“旧标题:《消防设施法规》”)。这样 LLM 就不会把“被分拆的/被修改的法律”与它学习数据中的旧版本混淆。
+ v4.1.0 — 判例搜索结构化+详细证据自动连接
合并并提取了判例/案件搜索的一个通用核心(searchPrecedentsStructured)。为长 natural-language / 概念 queries 做 compact query;再按案件号→标题→全文搜索逐级回退。顶部的判例自动连线到 get_preccedent_text(默认 2 条,上限 5 条),连原文一起返回;并支持通过 search_decisions(domain="precedent", options.includeText=true) 来选择使用模式。另外,当一次性取多条时,之前后条被截断问题,也已通过分配逐条正文的预算方式解决。(外部 PR #46+后续优化tuning)
+ v4.0.9 — 自动给法制地段的 OpenAPI 加上前提条件
对应的问题是:法制处 OpenAPI 会拒绝没有 Referer 头的请求(即使 API key 幂等也可能失败,返回“用户信息校验失败”)。现在,只要调用 law.go.kr,会自动加入一个默认 Referer(LAW_REFERER 可覆盖)。这一直被误认为是“IP/域名注册问题”的根因,已通过先 IP 注册、但从未来不再 catch-all 的状况实际修复。(外部 PR #45)
+ v4.0.8 — 自动重试法制处的空/HTML 响应
对应:法制处 OpenAPI 偶尔会返回 200 状态码,但 body 是空的或是一个 HTML 维护页面。这会导致 XML 解析器抛出 missing root element 而显示“有时候能有时候不能”。现在 fetchWithRetry 会把空以及 HTML 响应视为临时故障,自动重试(带当前指数退避)。当重试用尽后,若非-strien 返回空,则是 search_law 的返回明确错误信息,不再 leave the user missing root element。(无论是 IP 注册还是 API key,问题都不相关,是外部响应不稳定)
+ v4.0.7 — 国语税务判例全文 fallback
法制处 JSON API 中正文为空的判例,会从国税厅 taxlaw.nts.go.kr 以 HTML 形式自动补全。JSON 获取失败、解析失败、正文缺失三种情况都会进入 fallback 流程,并且可以安全召回。适用于内网/SSL 检测环境:支持 LAW_EXTERNAL_HTTPS_PROXY(可选)和 LAW_EXTERNAL_TLS_REJECT_UNAUTHORIZED(诊断用)——详细设置请参考下方“国税厅判例服务器 TLS/代理设置”部分。(外部 PR #44)
+ v4.0.6 — 法制处 API 协议设置 + 判例重新搜索改进
为封闭网络、证书问题环境新增 LAW_API_PROTOCOL=http 选项(默认 https)。判例重新搜索的关键词候选生成得到改进,匹配率提升。(外部 PR #41/#42)
+ v4.0.5 — 依赖漏洞批量修复(Security)
npm audit 的 4 个 High 级问题(@xmldom/xmldom 的 5 个 XML 注入 + DoS、@hono/node-server 路径绕过、express-rate-limit IPv6 绕过、fast-uri path traversal)已批量修复。均为无 semver-major 变更的 patch/minor 更新。npm audit → 0 vulnerabilities。代码变更 0 件。详细 GHSA 列表见 CHANGELOG。
+ v4.0.4 — 缩写的部分匹配
原缩写逻辑仅在 query 与已登记缩写完全一致时生效(“화관법” → “화학물질관리법”)。v4.0.4 使缩写与其他 token 结合的 query 也能自动扩展为全称变体。
"화관법 시행령" → "화학물질관리법 시행령"
"화관법 제5조" → "화학물질관리법 제5조"
"산안법 시행규칙" → "산업안전보건법 시행규칙"
"중처법 제4조 책임자" → "중대재해 처벌 등에 관한 법률 제4조 책임자"新增 extractEmbeddedAliases,并集成到 expandLawQuery/expandOrdinanceQuery。回归 0 件。
v3.5 — 揪出 AI 法律回答中的幻觉
实时检测 LLM 编造的假条文。 用法制处官方数据库对所有引用进行交叉验证。
"민법 제750조에 따라 불법행위 손해배상을 청구하고,
근로기준법 제60조 제1항은 연차유급휴가를 규정하며,
상법 제401조의2 제7항에 따라 이사 책임을 물을 수 있고,
형법 제9999조는 가중처벌을 정한다"→ 一次 verify_citations 就能得到(实际法制处 API 交叉验证结果):
✓ 民法第750条(侵权行为内容)存在
✓ 劳动基准法第60条(带薪年假)第 1 项存在
✗ 商法第401条之2 — 无第 7 项(最大仅为第 2 项)
✗ 刑法第 9999 条 — 没有相应条文(现存范围:第 1 条~第 372 条)
不要直接相信 ChatGPT、Claude 等生成的法律答案。 在 AI 法律服务、律所、学生、合同审查场景中,可信度检查非常必要。
v3.2.0+ — 用自然语言进行复合分析
用法没有变。直接用自然语言提问即可。 AI 会理解提问,并自动补充所需的分析。
收到罚款,能减轻处罚吗?
"식품위생법 영업정지 과태료 감경 가능?"→ 一次性得到按违规类型区分的处分基准表(1次·2次·3次金额)+ 罚则条款原文 + 实际减免的行政审判案例 + 该条款的修改历史。
想进口这个物品,法律上需要确认什么?
"수입 통관 FTA 적용 확인"→ 关税法 + 关税厅的权威解释 + FTA 条约原文 + 税率附表 + 关税纠纷时税务审判院裁决。以前要分别四处搜索法制处、关税厅、税务审判院、外交部。
建筑许可申报,从哪里开始?
"건축법 허가 절차"→ 法律依据(法律→施行令→施行规则)+ 费用·格式 + 相关 训令·例规·告示 + 与地方自治体的条例特例 + 有权解释,一站式完成。
法律修改一条,还有哪些需要同步调整?
"건축법 영향도 분석"→ 得到下部法令(施行令·施行规则)+ 全国自治法规中受影响的部分 + 相关行政规则列表。
该法律的委托事项是否都已经落实?
"국민건강보험법 위임입법"→ 在写着“由施行令规定”的条款中,找出尚未制定施行令的条目。
这个条例是否违反上位法?
"주차 조례 상위법 적합성"→ 搜索宪法裁判所违宪决定 + 行政复议撤销案例中类似的条例相关案例,并对照上位法依据。
该条文什么时候改的,判例有什么变化?
"근로기준법 개정이력 타임라인"→ 将新旧对照表 + 按条文划分的修订历史 + 该法令的判例、解释例按时间顺序汇总。
用法没有任何变化。 使 기존 문장。 所有市的输出后面都会提示 “可以继续的查询”,复制即可直接沿用。
v3.5.5 — 绕过法制处 API 机器人封锁(紧急热修复)
法制处 OPEN API 开始把 Node.js 默认 User-Agent(undici/...)识别为机器人并拒绝 → fly.dev/Vercel 等所有云端环境下 [EXTERNAL_API_ERROR] error 或“사용자 정보 검증에 실패했습니다”的 XML 错误。
在
fetch-with-retry.ts中注入普通浏览器 UA 作为默认请求头 — 调用方代码改动 0 行,一条修复补丁即可恢复所有工具。可用LAW_USER_AGENT环境变量覆盖错误消息为“请注册确切的服务器设备 IP 地址及域名地址”,容易被误判为 IP 白名单拦截,但实际上其实是 UA 校验
使用 claude.ai 自定义连接器
https://korean-law-mcp.fly.dev/mcp?oc=...的用户会立即受影响。发布 v3.5.5 后自动恢复使用
v3.5.4 — 引入明确 NOT_FOUND 信号
用户反馈:“在实际使用中经常找不到回答,AI 有时候自己乱答。找不到就应明确返回一个对应的值。”
根本原因:部分工具在查询失败时未设置 isError 标记,或只返回“不存在”文案 → LLM 无法察觉失败,导致自我生成内容。
全面引入
[NOT_FOUND]/[HALLUCINATION_DETECTED]机器可解析标记 — 所有失败响应都有可检测的前缀 + 标准化“⚠️ 禁止 LLM 猜测/生成”的说明verify_citations—failCount > 0时设置isError: true。此前出现了“检查出幻觉”却误存为“验证成功”的问题修复
annex.ts/law-text.ts/article-detail.ts等 10+ 个文件 — 增加isError: true链式工具的部分失败透明化 — 删除
chains.ts中的 silent-drop 逻辑。把失败的部分也用[NOT_FOUND / FAILED]标记和原因明确暴露(80 字放宽到 200 字)新增 helper:
notFoundResponse(message, suggestions?)
v3.5.3 — verify_citations 实测后修复 3 个关键 bug
实际连接法制处 API 5 个样本测试 → 发现 3 个 false negative → 修复根因:
“분민법”→“난민법”部分匹配错误 — 已有
chains.ts的findLaws/scoreLawRelevance逻辑已经解决了这个问题,但find_laws上没有复用而是重复实现了自带逻辑。现在它被提取为公共模块lib/law-search.ts供两处复用(去除重复代码)“①”等原数字的项号解析失败问题 — 法制处 API 会把
항번호返回为"① "的形式,原来的parseInt(raw.replace(/[^\d]/g, ""))会移除 Unicode 原数字导致 NaN。虽然 근律기준법 제용조 제1항确实存在,但仍会误判为“最大第 0项”。→ 在lib/article-parser.ts增加parseHangNumber()原数字映射工具短法令名搜索缺失 — 해당 명칭을
display=20的默认查询时,“상법”反而位于第 34 个结果。增加apiClient.searchLaw表的display参数;verify_citations调用时使用searchDisplay=100
验证后 5/5 精确判断(即上述示例输出结果)。
v3.5.2 — kordoc 2.3.0 → 2.4.0(附表/格式解析引擎)
v3.5.1 — 删除 lite/full 配置集(在引入 V3_EXPOSED 后实际姿势并存)。移除 tool-profiles.ts 中的 LITE_TOOLS/parseProfile/filterToolsByProfile,将健康检查中的 false profile 替换为准确字段。health 字段 tools: { exposed: 16, total: 92 }。非兼容性变更(?profile=lite 本来也会被忽略)
v3.5.0 — Killer feature:verify_citations 引用 +校验 + 关键 hot(安全增强)
新增
verify_citations— 输入文本中提取条文引用正则,同时向前 30 字特征查找法令名,并行调用法制处数据库交叉验证。结果提供 ✓(存在)/ ✗(不存在且提示范围)/ (法令名不确定)修正 v3.4.0
full参数 12 个 domain(tax_tribunal、customs ...) — 导致模式忽略。 unifiedcompactLongSections()后处理时在收到子域处理结果后统一执行逐级精简安全 High —
fetch-with-retry.ts在 Timeout → 修复发生 NEW_BALANCE —… 修复...
QUALITY 3 …
UX —
AI 更准确 — 过去要在 89 个里挑,现在只看 14 个即可立即判断
响应速度感知提升 — 上下文减少 82%
配置简化 — 无需选择
lite/full配置;所有客户端统一为 14 个立即访问 17 个判例领域 — 不经过
discover,直接搜索
其他变更
kordoc 1.6 → 2.2.5 — 文档解析引擎升级(支持 XLSX/DOCX、安全增强、表单填写)
修复行政裁决全文检索 bug — 增加 API 响应键的 fallback
修复英文法规全文检索 bug — 支持新版 API 响应结构
写在最后
MCP 工具设计中,工具数量 ≠ 功能数量。
把 41 个 API 展开成 89 个、再收敛回 14 个的过程,就是寻找“合理抽象层次”的旅程。
核心模式:dispatch 表 + domain 枚举。
原有的 handler 函数一行都没改。
v2.3.2 — 上线代码质量改进(47 个文件,-179 行)。简化 emoji/装饰、链式缓存、统一错误处理。
v2.3.0 — 工具 profile(lite/full)、URL 查询 API 密钥、kordoc 统一解析器。
v2.2.0 — 23 个新功能(64→87)。增加条约、法律-自治法规联动、文档分析引擎。
v1.8~1.9 — 8 个链式工具、任意批量条款查询、AI 搜索过滤、结构化错误格式。
为什么做这个
韩国目前有 1,600 多部现行法律、1 万多项行政规则,以及由大法院、宪法法院、税务审判院、海关厅组成的庞大判例体系。所有这些都集中在一个叫 법제처 的网站里,但开发者的使用体验非常不好。
这个项目把整个法律体系封装成 10 个工具,让 AI 助手或脚本可以直接调用。它由一位被“ 법을 hundreds of times”的公务员构建。
安装和使用
第 0 步:获取 API 密钥(免费,1 分钟)
所有方法都需要先获取 법제처 Open API 인증키(OC)。
注册并登录。
点击 "Open API 可申请" 按钮。
填写申请表后,发放 인증키(OC)(示例
honggildong)。在各配置中使用该密钥。
方法 1:Claude Code 插件(一行安装,最简单) ⚡
如果你是 Claude Code 用户,只需两行即可完成。API Key 会在安装过程中自动被询问。
/plugin marketplace add chrisryugj/korean-law-mcp
/plugin install korean-law@korean-law-marketplace安装过程中会出现 법제처 API key 输入提示(例如第 0 步中得到的 honggildong)。该密钥会作为敏感信息安全存储。
使用方式: 用自然语言直接问 Claude Code,就会自动调用 korean-law MCP 工具。
"근로기준법 제74조 알려줘"
"민법 제750조 판례 검증해줘"更新: 新版本发布后,一行即可完成更新:
/plugin marketplace update korean-law-marketplace内部执行
npx --ignore-scripts --omit=optional korean-law-mcp@latest,因此会使用 npm 发布的最新版本,但不会安装可选的 OCR/ML/原生依赖,也不会执行安装脚本。
故障排查:Permission denied (publickey) 错误
如果在安装过程中出现以下错误,说明 Claude 的设备正在尝试通过 SSH 连接 GitHub,但未注册 SSH 密钥(尤其常见于初次使用 Git 的非开发者/初学者)。
Failed to install: Failed to clone repository: Cloning into
'/Users/<user>/.claude/plugins/cache/temp_github_<id>'...
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.解决方法(任选其一):
强制走 HTTPS(最简单,推荐): 在终端执行下方一行,然后重新运行
/plugin install
git config --global url."https://github.com/".insteadOf "git@github.com:"生成 SSH 密钥并注册到 GitHub: 如果你打算用 GitHub 账户通过 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
安装后,上述 rewrite 配置保持现状也无妨(HTTPS clone 始终可用)。
方法 2:直接在 Claude.ai Web 中调用(需要付款)
什么都不用装,只要输入一个地址即可使用。需要 Claude Pro/Max/Team/Enterprise 套餐(Free 只能使用 1 个连接器)。
添加连接器方法:
登录 claude.ai。
点击左侧边栏底部的 你的名字。
选择 “设置”(或 Settings)。
进入 “连接器”(或 Connectors)菜单。
在 “自定义连接器” 区域,点击 “添加自定义连接器” 按钮。
输入以下内容:
名称:
korean-law(可以随意取其他名字)URL:将下方地址中的
hongggildong替换为你从 第 0 步 获得的实际密钥:
https://mcp.gomdori.app/law?oc=honggildong点击 “添加” 按钮即完成注册。
启用工具(重要):
点击已添加连接器中的 “配置”(或 Configure)。
在工具列表中,把所有工具设置为 “始终允许使用”(或 Always allow)。
这样就不需要每次手动确认,AI 可以直接检索法规。
使用:
回到对话界面,输入 “告诉我劳动基准法第 74 条” 即可。
注意:如果要修改连接器 URL,需要删除后重新添加。
自 v3 起不再需要选择配置档。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。
手动安装:
npm install --ignore-scripts --omit=optional -g korean-law-mcp在 AI 应用的设置文件中添加以下内容(把 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 参数 | 在地址后加 | Web 客户端最简单 |
HTTP 头 |
| 编码调用时 |
环境变量 |
| 本地安装(方法 3、4) |
工具参数 |
| 只对某个请求使用不同密钥 |
법제처 API 协议设置
법제처 API 调用默认使用 HTTPS。在内网、封闭网络等证书验证困难的环境中,可以通过 LAW_API_PROTOCOL=http 改为 HTTP 调用。
最清楚的方式是把解释放在 MCP 客户端配置的 env 中:
{
"mcpServers": {
"korean-law": {
"command": "korean-law-mcp",
"env": {
"LAW_OC": "honggildong",
"LAW_API_PROTOCOL": "http"
}
}
}
}也可以直接在终端导出,或使用 .env 文件:
export LAW_API_PROTOCOL=http # Mac/Linux
set LAW_API_PROTOCOL=http # Windows CMD
$env:LAW_API_PROTOCOL="http" # Windows PowerShellLAW_OC=honggildong
LAW_API_PROTOCOL=http允许值为 http、https。如果不设置或设置其他值,则一律使用 https。
国家税务服务判例 TLS/Proxy 设置
最高法院来源的判例正文有时并不仅仅通过法院的 JSON 响应提供,内部还会额外向 taxlaw.nts.go.kr 的国家税务服务判例服务器发起请求。该服务器即使使用 HTTP 访问也会重定向到 HTTPS,因此,无论是否设置了 LAW_API_PROTOCOL=http,Node.js 运行时都必须信任 https://taxlaw.nts.go.kr 的证书。
在内网、封闭网络、防火墙、TLS 中断环境下,浏览器可能能打开国家税务服务判例页,但 Node.js 的 fetch() 会出现 [EXTERNAL_API_ERROR] fetch failed 错误。因为浏览器和 Node.js 使用各自独立的证书库、代理设置。
在正式环境中,先按 Node.js 的证书链确认 HTTPS 连接:
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))"如果在企业网络中无法直接连接,必须通过独立的 web 代理,请设置实际的代理服务器地址。该设置目前作用于国家税务服务判例正文的 fallback 连接:
LAW_EXTERNAL_HTTPS_PROXY=http://proxy-host:8080如果必须在 Windows 中设置系统环境变量,请用管理员终端设置,然后重启 Windows 或 Node.js 进程:
setx 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 변환工具结构(共 10 个)
截至 v4.4.0,有权力纠正。工具数量从上下文减去 52%。原来的 chain_* 8 个收到 legal_research 的 task 里,4 个核心特点收到 legal_analysis 的 mode 里。其余専門工具通过 discover_tools → execute_tool 使用;同时保留原始的调用方式。v4.7.0 添加了 ordinance_radar,所以共 10 个。
分类 | 工具 | 说明 |
检索(1) |
| 多级法规检索 — 8 种 |
深度分析(1) |
| 验证和分析 — 三种 |
法规(3) |
| 法规搜索 → 得到 |
| 条文的全文获取 | |
| 获取附表/附件(税额表、比例表、条款表) | |
自治法规(1) |
| 条例治理雷达 — 自动对照上位法修订(v4.7.0) |
综合(2) |
| 18 个领域综合搜索(判例、宪法法院、审判、公平交易、劳动、海关、解释性判例、公开渠道、个人渠道等) |
| 18 个领域 的全文获取 | |
元(2) |
| 搜索専門工具(术语、附录、历史、对比等) |
| 工具代理执行 |
legal_research 中的 8 种任务(原 chain_*)
task | 说明 | 场景扩展 |
| 综合研究(AI 搜索→法规→判例→解释) |
|
| 法律体系分析(三级比较、委托-下级) |
|
| 管辖依据查询(允许、授权、通知) |
|
| 争议准备(行政、诉讼) |
|
| 修订追踪(新旧比对、历史) |
|
| 条例比较(上位法→地方条例) |
|
| 程序、费用、表格 |
|
| 合同 / 条款风险分析(需要 | — |
legal_analysis 中的 4 类 mode(原“杀手级”功能)
mode | 说明 | 必需参数 |
| 防止 LLM 幻觉 — 批量验证引用条款是否存在(v3.5) |
|
| 验证判例是否仍有效 — 反向跟踪后续 citation,检测变更 / 废弃,类似韩国版 citator(v4.3) |
|
| 行为时间点判定 — 适用当时的版本及附则过渡条款(v4.3) |
|
| 影响图谱 — 反向搜索引用该条款的判例、解释、地方法 + mermaid(v4.0) |
|
所有工具的具体细节请见 docs/API。
主要特点
42 个 API → 10 个 — 法律、判例、行政规则、自治法规、宪法决定、更正、明细、海关解释、国内税务、条例解释、条约、细则整合
MCP + CLI — 得益于 Claude 桌面;也可以从命令行使用
法律领域专用 — 自然简称识别(
화관법→화학물질관리법)、条款号转换(제38조↔003800)、三级委托结构可视化附件的全文提取 — HWPX/HWP/PDF/XLSX/DOCX 自动转换(基于 kordoc )
8 个链 + 9 个用例扩展 — 基于默认链,根据场景自动添加扩展分析(例如 penalty reduction / border / legislative-append)
18 领域集成搜索 — 通过与
search_decisions一个入口,即可直接访问判例、宪法、审判、公平竞争、劳动等缓存 — 搜索 1 小时、条文的 TTL 24 小时
远程地址 — 不用安装,可直接使用
https://mcp.gomdori.app/law;旧的korean-law-mcp.fly.dev也兼容
HTTP / runtime 边界配置
HTTP 默认
MCP_HTTP_HOST=127.0.0.1,代理可信度默认TRUST_PROXY=false。
在外部绑定之前,必须设置MCP_AUTH_TOKEN;只有在故意公开时才使用MCP_ALLOW_UNAUTHENTICATED_REMOTE=1。
在反向代理时,可指定TRUST_PROXY=1以及正确的跳数。RATE_LIMIT_RPM=0只关闭单 IP 的限制。MCP_MAX_BATCH_CALLS(默认 20)、请求体、upstream 重试/相应体、工具响应的限制仍然生效。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也兼容。get_batch_articles请求 最大 20 条法规,总共 100 条。HTTP 连接断开或 MCP 取消操作会传递到fetch、重试等待、响应正文读取等。JSON-RPC 批量请求只在预算方面共享,取消信号彼此独立。发布前会删除
build/,并验证实际打包文件和exports。“kordoc”仍用于表格 PDF/HWP 解析,所以保留;只有必需的纯 JSpdfjs-dist@4.10.38会锁定为常规依赖。插件、文档、Docker 安装都会通过--omit=optional --ignore-scripts排除掉 OCR/ML 等可选依赖。CI/发布流程会安装开发依赖的可选连接,禁用脚本后验证,再按生产依赖关系进行 pruned 并执行 PDF 表格冒烟测试。通过 across 依赖链的扫描器警告会与实际可达的 server 路径分开考虑评估。
문서
docs/API.md — 工具参考
docs/ARCHITECTURE.md — 系统设计
docs/DEVELOPMENT.md — 开发指南
Star History
数据来源
法令、判例、行政规则、自治法规、条约、解释例的正文通过 法制处国家法令信息中心 OPEN API(https://open.law.go.kr/)查询。国税厅解释例则使用国税法令信息系统。
对于需要法律效力的判断,请务必核对国家法令信息中心的原文。本工具可能对查询结果进行加工、摘要。
API 认证密钥(LAW_OC)须由进步处 各自申领,且只有申领者本人可以使用。
许可证
第三方实现参考及数据来源注明请见 NOTICE。
制作人:류주임 @ 광진구청 AI동호회 AI.Do
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- 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.71
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to search, retrieve, and analyze South Korean legal documents including statutes, precedents, constitutional decisions, and administrative rulings via the Ministry of Government Legislation Open API. Provides 89 specialized tools with features like legal abbreviation auto-recognition, annex extraction, and complex research chain workflows.MIT
- AlicenseNot gradedqualityDmaintenanceIntegrates 132 tools from the Korean Ministry of Legislation OPEN API to provide comprehensive access to Korean legal documents, including statutes, precedents, treaties, administrative rules, and local ordinances.9MIT
- AlicenseNot gradedqualityCmaintenanceProvides 17 tools for accessing Korean statutes, precedents, and administrative rules via the National Law Information Center API, with LLM hallucination prevention, citation verification, impact graphs, and time-travel diff.5,292MIT
Related MCP Connectors
Resolve, search and verify legal citations against the official sources, with provenance.
Task-oriented MCP for Indonesian law: search, resolve citations, read laws, and MK decisions.
Verified, citable German & EU law for any LLM. Daily updates from official sources, hosted in DE.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/yunsy84/law_mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server

