Releases: lapiogga/caseLaw
v0.11.0 — Outcome Prediction (4 prediction tools)
v0.11.0 — Outcome Prediction (4 prediction tools)
법제처 OpenAPI 기반 한국 판례·법령 MCP 서버. 활성 MCP Tool 52종, 단위 테스트 352 PASS, 자동 생성 문서 4종 + 결과 예측 4종.
v0.11.0 의 변화 한 줄: 변호사가 의뢰인에게 가장 먼저 받는 질문 3종("이길 수 있나요?·얼마 받을까요?·얼마나 걸릴까요?")에 유사 판례 N건의 통계로 답하는 도구 4종 추가.
추가된 4 Tool
| Tool | 입력 | 출력 |
|---|---|---|
predict_sentencing |
형사 검색 키워드 + 법원·기간·표본수 | 양형 분포 (벌금/집유/실형/무죄/분류불가 비율) + 표본 N + 라벨링 한계 |
predict_civil_outcome |
민사 검색 키워드 | 인용/일부/기각/취하/분류불가 비율 + 인정 금액 통계 (평균·중앙값·min·max) |
estimate_case_duration |
사건유형(민사/형사) + 심급(1·2·3) + 복잡도(단순/보통/복잡) | 평균 소요 개월 + 95% CI (사법연감 시드) |
dispute_resolution_options |
분쟁유형 + 청구금액 + 우선순위(관계/속도/비용) | 소송 vs 조정 vs 화해 vs 중재 4-옵션 매트릭스 + 본건 추천 |
사용 예시
자연어 채팅 (Claude Desktop · Gemini CLI):
음주운전 양형 분포 알려줘. caselaw 의 predict_sentencing 으로
대법원 판례 30건 표본으로.
→ 형사 양형 분포 표 + 의뢰인 보고 권장 표현 + 가중·감경 요인 안내 회수.
대여금 5천만원 청구. 6개월 안에 끝내고 싶고 상대방과 관계는
유지하고 싶어. caselaw 의 dispute_resolution_options 추천?
→ 화해(settlement) 우선 추천 + 매트릭스 + 적합/비적합 케이스 회수.
표본 크기 가드 (필수 정책)
- N < 5 →
ValueError즉시 거부 ("표본 부족, 키워드 넓히세요") - 5 ≤ N < 10 → "참고용 그림자 데이터" 강한 경고 (결과는 표시)
- 10 ≤ N < 30 → "신뢰구간 넓을 수 있음" 경고
- N ≥ 30 → 정상
의뢰인에게 "통계지 보장이 아님" 을 명확히 전달하기 위한 면책 블록 자동 부착.
라벨링 휴리스틱 (정직한 한계 보고)
- 민사: granted / partial / dismissed / withdrawn / unknown
- 형사: acquitted / suspended_sentence / fine / imprisonment / unknown
- 사건명만으로는 양형 분류가 어려운 경우
unknown카테고리에 솔직 모음 use_full_text=True옵션으로 본문(판시사항)까지 라벨링 → 정확도 ↑ (느림, 캐시 활용)
drafting 모듈과 시너지
predict_sentencing 결과 → draft_criminal_defense 의 양형 의견 입력
predict_civil_outcome 결과 → draft_legal_opinion 의 결론 입력
estimate_case_duration → draft_civil_complaint 작성 시 의뢰인 기대 관리
→ 검색 → 예측 → 문서 작성 한 줄 워크플로 완성.
통계 변화 (v0.10.0 → v0.11.0)
| 항목 | v0.10.0 | v0.11.0 | 차이 |
|---|---|---|---|
| 활성 MCP Tool | 48 | 52 | +4 (prediction) |
| 단위 테스트 | 314 PASS | 352 PASS | +38 (prediction 모듈) |
| Python 모듈 | 27 | 32 | +5 (tools/prediction/ 5 파일) |
| 패키지 시드 데이터 | citizen_data | citizen_data + prediction_data | +1 (사법연감 베이스라인) |
| 새 의존성 | starlette · uvicorn | (변경 없음) | 0 |
Out of Scope (Phase 15+ 후보)
- ML 라벨링 (현재 휴리스틱). 변호사 검수 데이터로 학습 시 정확도 ↑
- 재판부별 경향 분석 (특정 판사·재판부의 판단 경향)
- 실시간 신판례 알림 (특정 키워드 새 판례 등록 시 푸시)
- 외국 판례 통합 (CourtListener, Find Case Law UK 등)
- 인용 그래프 (referenced_by 역검색, 인용 깊이별 정렬)
- opposing counsel strategy predict (상대방 변호사 예상 전략)
동결 코드 영역 (v0.11.0)
src/caselaw_mcp/server.py의 52 tool signaturesrc/caselaw_mcp/tools/prediction/labels.py의 5×5 라벨 universe (CIVIL_LABELS · SENTENCING_LABELS) — 추가만 가능, 기존 라벨 제거·rename 금지src/caselaw_mcp/prediction_data/duration_baselines.json의 18 baseline (추가만 가능)- 모든
predict_*출력 dict 의 키 (doc_type·sample_size·label_distribution·markdown필수) DISCLAIMER_MARKER문자열 (회귀 가드 grep 대상)- 표본 크기 가드 임계값 (5/10/30) — 변경 시 변호사 가이드 동시 갱신
설치
PyPI (자동 — Trusted Publishing)
uvx caselaw-mcp@0.11.0 --help본 Release 가 published 상태로 전환되면 .github/workflows/publish.yml 이 자동 실행되어 PyPI 업로드.
로컬 클론
git clone https://github.com/lapiogga/caseLaw.git
cd caseLaw
git checkout v0.11.0
uv sync비기술자 ZIP installer
CaseLaw-installer-v0.11.0.zip (PyPI latest 자동 받음, 사용자 무액션 v0.10.0 → v0.11.0 자동 업그레이드)
v0.10.0 — Practitioner Doc Drafting (4 doc types)
v0.10.0 — Practitioner Doc Drafting
법제처 OpenAPI 기반 한국 판례·법령 MCP 서버. 활성 MCP Tool 48종, 단위 테스트 314 PASS, 자동 생성 문서 4종, 5언어(ko/en/zh/vi/ja).
v0.10.0 의 변화 한 줄: 변호사 트랙이 검색·분석에서 멈추지 않고 소장·의견서·준비서면·변호인 의견서까지 한국 표준 양식 마크다운 초안을 자동 생성.
추가된 4 Tool (한국 변호사 실무 4대 문서)
| Tool | 용도 | 출력 |
|---|---|---|
draft_civil_complaint |
민사 소장 | 청구취지 (지연손해금 옵션) / 청구원인 6하 / 갑호증 자동 번호 / 적용법조 / 관련 판례 / 부속서류 |
draft_legal_opinion |
법률의견서 | 사실관계 / 검토 쟁점 / 관련 법령 / 판례 분석 / 결론 / 권장 다음 단계 |
draft_preparatory_brief |
준비서면 | 우리 입장 / 상대방 주장 / 반박 / 적용법조 / 관련 판례 / 추가 입증방법 |
draft_criminal_defense |
형사 변호인 의견서 | 피고인 인적사항 / 공소사실 / 변호인 의견 / 양형 감경 / 요청 처분 / 유사 판례 |
기존 compare_precedents + format_citation + analyze_precedent_trend 의 출력을 입력으로 받아 한국 표준 양식 마크다운에 채우는 순수 조합 작업. 새 의존성 0.
면책 정책 (보안 책임)
모든 draft_* 출력 끝에 면책 블록 자동 부착:
- 변호사 모드 (
user_mode="lawyer"): "법원 제출 전 변호사 검토 필수" 단문 - 일반인 모드 (
user_mode="citizen"): 강한 경고 + 무료 상담 안내 (대한법률구조공단 132 / 여성긴급전화 1366) - 회귀 가드: 4 doc type parametrized 단위 테스트 —
DISCLAIMER_MARKER누락 시 fail
사용 예시 (Claude Desktop · Gemini CLI · ChatGPT)
자연어 채팅:
대여금 5천만 원, 원고 박원고 (서울 강남구), 피고 김피고 (서울 송파구).
2022. 3. 15. 대여, 변제기 2023. 3. 14., 미상환. 차용증·통장사본 첨부.
caselaw 의 draft_civil_complaint 로 소장 초안 만들어 줘.
→ 한국 민사소송 표준 마크다운 (청구취지·청구원인·갑호증 정렬·면책 부착) 즉시 회수.
입력 검증 (시스템 경계 패턴)
validate_party: name 필수, 빈 문자열·non-dict 거부validate_amount: 정수 KRW 만 허용, 음수·bool·float 거부validate_non_empty_list: 빈 리스트 거부 (사실관계·증거·쟁점 등)- 모든 거부는
ValueError즉시 발생
통계 변화 (v0.9.0 → v0.10.0)
| 항목 | v0.9.0 | v0.10.0 | 차이 |
|---|---|---|---|
| 활성 MCP Tool | 44 | 48 | +4 (drafting) |
| 단위 테스트 | 267 PASS | 314 PASS | +47 (drafting 모듈) |
| Python 모듈 | 22 | 27 | +5 (tools/drafting/ 5 파일) |
| 자동 생성 문서 | 0 | 4 | 신규 트랙 |
| 새 의존성 | starlette · uvicorn | (변경 없음) | 0 |
Out of Scope (Phase 14+ 후보)
- PDF/DOCX 직접 생성 — 현재 마크다운만 출력, 변환은 사용자 측 (워드/한글 복붙 패턴)
- 자동 한자 병기 — 한글 우선, 한자 OCR 필요 시 별도 도구
- 대법원 전자소송 API 연동 — 자동 제출은 별도 인증 부담
finalize_draft워크플로 — 검토→확정→pdf 변환 체인- 영문 문서 생성 — 외국 로펌 협업용 (Phase 15+ 후보)
- OAuth 2.1 Resource Server — ChatGPT 직결 (Phase 12 미해결, v0.11+ 검토)
동결 코드 영역 (v0.10.0)
이후 변경 시 후방호환 책임:
src/caselaw_mcp/server.py의 48 tool signature (4 drafting 추가)src/caselaw_mcp/tools/drafting/templates.py의DISCLAIMER_MARKER문자열 (회귀 가드 grep 대상)- 모든
draft_*의 output dict 키 (doc_type·markdown필수, 그 외 메타) user_mode파라미터 두 값 ("lawyer", "citizen") 의미- HTTP 엔드포인트 기본값
127.0.0.1:8000/mcp(변경 시 가이드 동시 갱신) CASELAW_AUTH_TOKEN환경변수 +Authorization: Bearer검증 동작
설치
PyPI (자동 — Trusted Publishing)
uvx caselaw-mcp@0.10.0 --help본 Release 가 published 상태로 전환되면 .github/workflows/publish.yml 이 자동 실행되어 PyPI 업로드. 토큰 노출 0 (OIDC).
로컬 클론
git clone https://github.com/lapiogga/caseLaw.git
cd caseLaw
git checkout v0.10.0
uv sync비기술자 ZIP installer
CaseLaw-installer-v0.10.0.zip (본 Release 첨부 — setup-for-novice.ps1 가 PyPI latest 자동 받음)
자세한 등록 절차는 클라이언트별 가이드 참조 (Claude Desktop · Gemini CLI · Cursor · VS Code · ChatGPT).
v0.9.0 — Multi-Client Edition (Claude · Gemini CLI · ChatGPT)
v0.9.0 — Multi-Client Edition
법제처 OpenAPI 기반 한국 판례·법령 MCP 서버. 활성 MCP Tool 44종, 단위 테스트 267 PASS, 5언어(ko/en/zh/vi/ja).
v0.9.0의 변화 한 줄: Claude Desktop 외 Gemini CLI + (HTTP transport 통한) ChatGPT 등 원격 클라이언트도 같은 서버를 공유.
지원 클라이언트 매트릭스
| 클라이언트 | Transport | 가이드 | 추가 인프라 |
|---|---|---|---|
| Claude Desktop | stdio | INSTALL.md · 원클릭 scripts/install-caselaw-mcp.ps1 |
없음 |
| Gemini CLI (Google 공식) | stdio | INSTALL_GEMINI.md · 원클릭 scripts/install-caselaw-gemini.ps1 |
없음 |
| Cursor / VS Code | stdio | INSTALL.md §2~3 | 없음 |
| ChatGPT (Apps SDK / Developer Mode) | streamable-http | INSTALL_CHATGPT.md | Cloudflare Tunnel + (현재 베타) OAuth 2.1 |
핵심 추가
1. HTTP transport 모드
caselaw-mcp --transport http --host 0.0.0.0 --port 8000- FastMCP
stateless_http=True, json_response=True(Cloudflare Tunnel · 원격 클라이언트 호환) - Starlette + uvicorn 위에
mcp.streamable_http_app()마운트 - 기본 endpoint:
http://127.0.0.1:8000/mcp
2. Bearer 토큰 인증
export CASELAW_AUTH_TOKEN="$(python -c 'import secrets; print(secrets.token_urlsafe(32))')"CASELAW_AUTH_TOKEN환경변수 설정 시 모든 HTTP 요청에Authorization: Bearer검증secrets.compare_digest로 타이밍 공격 방어- 미설정 시 인증 비활성 (로컬 신뢰 네트워크 한정)
- 401 응답에
WWW-Authenticate: Bearer헤더
3. 가이드 + 원클릭 등록 스크립트
docs/INSTALL_GEMINI.md—gemini mcp add명령 + settings.json 직접 편집 두 경로docs/INSTALL_CHATGPT.md— Cloudflare Tunnel(권장, 무료) / ngrok(대안) + Developer Mode 커넥터 등록 절차scripts/install-caselaw-gemini.ps1—-UseUvx스위치 (PyPI / 로컬 클론 자동 분기)
클라이언트별 라이브 검증 결과
Claude Desktop ✅
- 음주운전 대법원 판례 5건 자연어 검색 + 사건번호 표 정리 (v0.3.0 시점부터 통과 유지)
Gemini CLI ✅ — v0.9.0 신규
gemini mcp add등록 → OAuth Google 인증 → 헤드리스 모드(gemini -p ... --yolo)에서 ping + search_precedent 정상 호출- 사건번호 5건 (2025도15970·6752·8137·9717·7665) 회수 — Claude Desktop 결과와 일치
HTTP + Bearer 인증 ✅
127.0.0.1:18765라이브 boot- 토큰 누락 → HTTP 401 / 잘못된 토큰 → HTTP 401 / 정상 토큰 → HTTP 200 + initialize 응답
- 외부 cloudflared 임시 도메인 통한 실제 인터넷 호출도 동일 결과
통계
| 항목 | v0.8.0 | v0.9.0 | 차이 |
|---|---|---|---|
| 활성 MCP Tool | 44 | 44 | 동일 (transport 추가만) |
| 단위 테스트 | 250 PASS | 267 PASS | +17 (auth 11 + transport_cli 6) |
| 지원 transport | stdio | stdio + streamable-http | +1 |
| 지원 클라이언트 | Claude Desktop · Cursor · VS Code | + Gemini CLI · ChatGPT | +2 |
| Python 모듈 | 20 | 22 (auth.py 추가) |
+1 (config 갱신) |
Bug Fixes
- fix(auth):
.env의CASELAW_AUTH_TOKEN이 인증 미들웨어에 도달 못 하는 silent bypass 결함 해소. pydantic-settings 가.env를 자기 Settings 객체에만 로드하고os.environ에는 주입하지 않아,os.environ직접 호출이 항상 None 을 리턴 → 인증이 비활성 모드로 fallback 되던 문제. Settings 기반으로 일관 경로 변경. (26bed9c) - build(sdist): GitHub Release sdist 가 promo 영상까지 포함해 62MB 로 비대해지던 문제 해소 (157KB 로 정상화). (94c89b2)
- style:
docs/promo/automation/capture_pages.pyruff format — CI 빨강 해소. (2a438cc)
Out of Scope (Phase 13+ 후보)
- OAuth 2.1 Resource Server — ChatGPT custom MCP 가 Bearer 직접 인증 대신 OAuth 2.1 + Dynamic Client Registration 만 정식 지원 (OpenAI Apps SDK Auth). Auth0/Stytch 같은 IdP 와의 통합이 필요한 별도 큰 작업이라 v0.9.0 에는 미포함. v0.9.0 은 ChatGPT 직결 시 "인증 없음" 임시 검증만 가능.
- 외국 판례 (CourtListener, Case Law Access Project) 통합
- Vector DB 의미 검색
- open-webui 자체 호스팅 가이드 (Chrome 웹 UI 대안)
동결 코드 영역 (v0.9.0)
이후 변경 시 후방호환 책임:
src/caselaw_mcp/server.py의 44 tool signaturesrc/caselaw_mcp/server.py의 CLI flag 4 (--transport,--host,--port,--path) — 인자 이름·기본값src/caselaw_mcp/auth.py의CASELAW_AUTH_TOKEN환경변수 +Authorization: Bearer검증 동작src/caselaw_mcp/parsers.py의 응답 키 매핑 (영문 snake_case)client.py의 OC 환경변수·캐시 경로tools/citizen/{mode,locale}.py의 파일 기반 상태 (~/.caselaw_mcp/{mode,locale}.json)citizen_data/*.json시드 (추가만, 기존 ID 변경·제거 금지)docs/API_REFERENCE.md에 명시된 입출력 스키마- HTTP 엔드포인트 기본값
127.0.0.1:8000/mcp(변경 시 가이드 동시 갱신)
설치
한 줄 설치 (uvx, PyPI)
주의: PyPI v0.9.0 배포는 본 Release 와 별도. 미배포 시
uvx caselaw-mcp가 v0.8.0 받음. 첨부 wheel 직접 사용 권장.
uvx --from caselaw_mcp-0.9.0-py3-none-any.whl caselaw-mcp --help로컬 클론
git clone https://github.com/lapiogga/caseLaw.git
cd caseLaw
git checkout v0.9.0
uv sync자세한 등록 절차는 클라이언트별 가이드 참조.
v0.8.0 — Tri-Track (변호사 + 일반인 + 외국인)
v0.8.0 — Tri-Track 통합 (변호사 + 일반인 + 외국인)
법제처 OpenAPI 기반 한국 판례·법령 MCP 서버. 활성 MCP Tool 44종, 단위 테스트 250 PASS, 5언어(ko/en/zh/vi/ja).
트랙별 도달 상태
트랙 1 — 변호사·로펌 (27 tool)
판례·법령·헌재·해석례·심판례·위원회 12·특별심판 4·중앙부처 39·법령용어
- helper (analyze_trend, format_citation, compare_precedents)
- citation 역검색 (find_precedent_by_citation)
- 첨부 다운로드 (download_attachment, extract_attachment_links)
트랙 2 — 일반인 사전진단 (12 tool)
triage_dispute(50종 분쟁 카테고리)check_statute_of_limitations(30종 시효, 5단계 상태)estimate_litigation_cost(인지법 4구간 + 변호사비 9종)interview_facts(6턴 인터뷰)evaluate_case_strength(라벨 9종)recommend_pro_bono(전국 14 + 지역 14 + KLAC 6 + 도메인특화)prepare_consultation_kit(13섹션 마크다운, 변호사 질문 10개 자동)set_user_mode/get_disclaimer/triage_dispute등
트랙 3 — 외국인 사용자 (5 tool)
set/get_user_locale(ko/en/zh/vi/ja)get_disclaimer_localized/list_disclaimers_localizedget_foreigner_resources— 외국인종합안내센터 1345·이주여성긴급전화 1577-1366·다누리콜센터 1577-5432·이주민건강협회
통계
| 항목 | 수 |
|---|---|
| MCP Tools | 44 |
| Python 모듈 | 20 |
| 단위 테스트 | 250 PASS |
| 통합 smoke | 19 시나리오 |
| 시드 데이터 JSON | 6 (categories 50 + limitations 30 + court_fees 4구간 + pro_bono 30+ + interview 6턴 + i18n 5언어) |
| 면책 문구 | 30개 (6종 × 5언어) |
| 한국어 별칭 | 200+ |
| 법제처 OpenAPI target | 60+ |
설치 (Windows + Claude Desktop)
git clone https://github.com/lapiogga/caseLaw.git
cd caseLaw
uv sync --extra dev
"CASELAW_OC=발급받은_ID" | Out-File -Encoding ASCII .env
.\scripts\install-caselaw-mcp.ps1
# Claude Desktop 재시작 → "caselaw 로 ping 해줘"상세: docs/INSTALL.md, README