Command Palette

Search for a command to run...

UnylyUnyly
Browse all

Yureong

FreeNot checked

Verifies Korean legal citations (case numbers, statutes) against the official government database to detect AI hallucinations. Works as CLI, MCP server, or Pyth

GitHubEmbed

About

Verifies Korean legal citations (case numbers, statutes) against the official government database to detect AI hallucinations. Works as CLI, MCP server, or Python library.

README

AI가 지어낸 유령판례를 잡아냅니다.

ChatGPT·Claude·Gemini가 생성한 법률 답변이나 서면 초안에서 판례번호·헌재사건·법령 조문 인용을 추출해, 법제처 국가법령정보 공식 DB와 실시간 대조합니다. 실재하지 않는 "유령 인용"을 제출 전에 걸러내는 도구입니다.

미국에서는 변호사가 ChatGPT가 지어낸 가짜 판례를 서면에 그대로 인용해 법원 제재를 받는 사건이 반복되고 있습니다(Mata v. Avianca 이후 수백 건). 한국어 법률 인용을 기계 대조하는 공개 도구가 없어서, 현직 형사변호사가 직접 만들었습니다.

의존성 0 — 파이썬 표준라이브러리만 씁니다. LLM도 안 씁니다(결정론적 대조).

🟢 [판례] 대법원 2026도459 — 실재 확인
   실재 확인 — 범죄단체가입·범죄단체활동·사기·자본시장과금융투자업에관한법률위반
   공식 표기: 대법원 2026-04-30 2026도459

🔴 [판례] 대법원 2020다999888 — 유령 의심 — 원문 확인 필수
   대법원 사건번호가 공개 판례DB에 없음 — 유령 인용 의심

🟡 [판례] 대법원 2025다213488 — 주의 — 확인 필요
   사건번호는 실재하나 선고일 불일치(본문 2024-12-01 ≠ 실제 2026-04-30)
   — 다른 판례를 섞었을 수 있음

🔴 [법령] 형법 제999조 — 유령 의심 — 원문 확인 필수
   현행 형법에 제999조가 없음 — 유령 조문 의심

검사 8건 → 🟢 4  🟡 2  🔴 2
🔴 유령 의심 인용이 있습니다. 그대로 제출하지 마세요.

설치

pipx install yureong        # 또는 pip install yureong

법제처 Open API 키(무료)가 필요합니다. open.law.go.kr에서 신청하면 가입 이메일의 아이디 부분이 곧 키입니다 (예: [email protected]me).

export LAW_GO_KR_OC=<이메일아이디>

사용법

CLI

yureong 서면초안.md              # 파일 검사
cat ai답변.txt | yureong -       # 파이프
yureong --text "대법원 2020다12345 판결에 따르면..."
yureong 서면초안.md --json       # 기계용 출력
yureong --treatment "83도399"    # 판례 생사 추적 — 후속 판례가 변경·폐기했는지

종료코드로 게이트를 만들 수 있습니다: 0 이상 없음 · 1 🔴 존재 · 2 설정 오류. CI나 훅에 넣으면 "유령 인용이 있으면 변환·제출을 기계적으로 차단"이 됩니다.

판례 생사 추적 (--treatment)

실재하는 판례라도 이미 변경·폐기된 판례를 인용하면 자해가 됩니다. --treatment는 그 사건번호를 본문에 인용한 후속 판례(대법원 우선)를 역추적해 "변경하기로 한다"류 선언을 스캔합니다:

  • 🔴 CHANGED — 변경·폐기 신호 감지(명시 또는 "같은 취지의 종전 판결" 포괄). 원문 확인 필수
  • 🟡 CITED — 후속 인용 중·신호 미감지. "생존 추정"일 뿐 확정 아님(휴리스틱)
  • 🟡 UNCITED — 공개 DB에 후속 인용 없음. 판단 불가
  • 🔴 NOT_FOUND — 대상 판례 자체가 공개 DB에 없음(먼저 실재 확인)

예: --treatment "2011도8805" → 2023년 전원합의체(2018도13877)가 변경했음을 감지. 알고리즘은 korean-law-mcp(MIT)의 cite_check를 파이썬으로 재구현한 것입니다.

MCP 서버 (Claude Code · Claude Desktop 등)

claude mcp add yureong --env LAW_GO_KR_OC=<키> -- yureong mcp

이후 AI에게 "이 답변 yureong으로 검증해"라고 하면 verify_citations 도구가 호출됩니다. AI가 스스로 생성한 인용을 스스로 검증하게 만드는 구조입니다. 판례 생사 추적은 check_treatment 도구로 노출됩니다.

Python

from yureong import check_text

result = check_text(open("서면.md").read())
print(result["counts"])   # {'GREEN': 4, 'AMBER': 2, 'RED': 2, 'ERROR': 0}

판정의 의미 — 반드시 읽으세요

판정 의미 아닌 것
🟢 GREEN 사건번호·조문이 공식 DB에 실재 인용 취지까지 맞다는 보증 아님
🟡 AMBER 실재하나 선고일·법원 불일치 / 하급심이라 DB 부재로 단정 불가 / 법령명 미확인 무시해도 된다는 뜻 아님
🔴 RED 공개 DB에서 확인 불가 — 유령 의심 100% 가짜라는 단정 아님

법제처 판례 DB는 공개된 판례만 수록합니다. 심리불속행 기각, 미공개 하급심 등 실재하지만 DB에 없는 판례가 있습니다. 그래서 🔴의 정확한 의미는 "이대로 제출하면 안 되고, 원문을 직접 확보해야 한다"입니다. 반대로 🟢도 존재 확인일 뿐 — AI가 실재 판례에 엉뚱한 법리를 붙이는 환각(취지 왜곡)은 이 도구가 잡지 못합니다(로드맵 참조).

이 도구는 인용을 통과시키는 도구가 아니라, 의심 지점을 노출하는 도구입니다. 최종 확인 책임은 언제나 법률가에게 있습니다.

한계 (v0.1)

  • 공백 포함 긴 정식명칭(예: "성폭력범죄의 처벌 등에 관한 특례법")은 「」 없이 쓰면 일부만 인식될 수 있습니다 → 🟡로 안전하게 처리됩니다. 약칭(성폭력처벌법)은 지원.
  • 구법(개정 전) 조문 번호는 현행법 기준으로 🔴가 뜰 수 있습니다 — 연혁 확인 필요.
  • 행정심판 재결·조세심판 결정 등은 아직 대상이 아닙니다.

로드맵

  • v0.2 — 판례 생사 추적(--treatment / MCP check_treatment): 후속 판례의 변경·폐기 신호 스캔
  • v0.2 — 취지 대조: 인용 주변 문장과 실제 판시사항의 의미 유사도 비교 (유령 법리 탐지)
  • v0.2 — 공백 포함 정식명칭 인식 개선, 구법 연혁 조회
  • v0.3 — 폐지 법령·개정 연혁 경고, 행정심판 재결례, 행위시법·부칙 경과규정 발췌(applicable_law)

프라이버시

검사 텍스트 전체가 아니라 추출된 사건번호·법령명만 법제처 API로 전송됩니다. 그 외 본문은 로컬을 떠나지 않습니다. 그래도 실명 사건번호 등 민감정보가 걱정되면 마스킹 후 사용하세요.

License

MIT — 자유롭게 쓰고, 고치고, 임베드하세요.


English

yureong ("ghost" in Korean) detects AI-hallucinated Korean legal citations. It extracts case numbers (Supreme Court, Constitutional Court, lower courts) and statute references from any text and verifies them against the official Korean government legal database (law.go.kr Open API). Zero dependencies, no LLM — deterministic lookup only. Ships as a CLI, an MCP server (yureong mcp), and a Python library. Exit codes make it usable as a CI/pre-submission gate. A red flag means "not found in the public DB — verify before use," not "proven fake"; green means the citation exists, not that the claimed holding matches. Final verification is always the lawyer's job.

from github.com/herrozim-ship-it/yureong

Install Yureong in Claude Desktop, Claude Code & Cursor

Recommended · one command, every IDE
unyly install yureong

Installs into Claude Desktop, Claude Code, Cursor & VS Code — handles npx, uvx and build-from-source repos for you.

First time? Get the CLI: curl -fsSL https://unyly.org/install | sh

Or configure manually

Run in your terminal:

claude mcp add yureong -- uvx --from git+https://github.com/herrozim-ship-it/yureong yureong

FAQ

Is Yureong MCP free?

Yes, Yureong MCP is free — one-click install via Unyly at no cost.

Does Yureong need an API key?

No, Yureong runs without API keys or environment variables.

Is Yureong hosted or self-hosted?

A hosted option is available: Unyly runs the server in the cloud, no local setup required.

How do I install Yureong in Claude Desktop, Claude Code or Cursor?

Open Yureong on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.

Related MCPs

Compare Yureong with

Not sure what to pick?

Find your stack in 60 seconds

Author?

Embed badge for your README

Browse similar

All data MCPs