Back to the catalog

build.naru/contract-compass

Korean public procurement law: rule-engine rulings, statutes search, live court precedents

Open source Repository Open in the app JSON README (API)

About

Korean public procurement law: rule-engine rulings, statutes search, live court precedents

Details

Kind
MCP servers
Topic
Government & public data
Publisher
build.naru
Origin
official
Category
ferramentas
Transport
http
Version
1.1.0
Last push
2026-08-17T15:02:17Z
Repository state
ativo
Language
HTML
License
MIT
Added
2026-08-29 03:00:49
Updated
2026-08-29 03:00:49
Origin id
build.naru/contract-compass

README

# 계약나침반 🧭 (Contract Compass)

[![Glama MCP server](https://glama.ai/mcp/servers/pg836bshvk/badge)](https://glama.ai/mcp/servers/sallim-app/contract-compass)

> **Korean public procurement law MCP server & web service** — a deterministic rule
> engine for contract-method decisions (94 rules encoded directly from statutes), a
> searchable corpus of Korean procurement statutes/regulations/adjudication tables,
> and live court precedents & authoritative interpretations from law.go.kr.
> All MCP tools are **LLM-free**: your AI client does the reasoning, this server
> provides verifiable legal grounds. Remote endpoint: `https://contract.sallim.app/mcp`

**공공계약 방법 결정 도우미** — 국가계약법·지방계약법 등 공공계약 법령을 기반으로,
발주하려는 계약(공사·용역·물품)에 적용 가능한 계약방법(입찰·수의계약·제한경쟁 등)과
법령 근거를 결정론적으로 안내하는 오픈소스 웹서비스 + **MCP 서버**입니다.

- **결정 위저드**: 계약유형·추정가격·조건을 입력하면 룰엔진(법령 직접 인코딩 94룰)이
  적용 가능한 계약방법·낙찰자 결정방법·적격심사 기준을 후보와 근거 조문과 함께 제시
- **법령 챗봇(Ask)**: 국가계약법령·계약예규·감사원 공공계약 실무가이드 등 공개 코퍼스
  기반 RAG 검색 + 인용 답변 (웹 UI 전용)
- **MCP 서버(무LLM)**: Claude·ChatGPT·Cursor 등 AI 에이전트가 룰엔진 판정, 법령 조문,
  예규·적격심사 세부기준(별표 포함), **판례·법령해석례(law.go.kr 실시간)**를 직접 조회
- **기관유형 지원**: 국가기관 / 지방자치단체 / 공기업·준정부기관 프로파일
- **결정론 우선**: 계약방법 결정은 LLM이 아닌 룰엔진이 수행 — 같은 입력엔 항상 같은
  결과. LLM은 웹 챗봇·설명 생성에만 사용(키 없이도 핵심 기능 동작)

> ⚠️ **면책**: 이 서비스는 정보 제공 목적이며 법적 자문·유권해석이 아닙니다.
> 적격심사 통과점수·낙찰하한율·각종 한도는 발주기관별 세부기준과 법령 개정에 따라
> 다를 수 있으므로, 실제 발주 전 반드시 소속 기관 계약 부서와 현행 법령을 확인하세요.

## MCP 서버 사용하기

원격 엔드포인트(Streamable HTTP): **`https://contract.sallim.app/mcp`**
무료: IP당 50콜/일 (전 도구) · 유료 키: 한도 상향 — [요금 안내](https://contract.sallim.app/mcp/pricing)

### 도구 목록 (11종) — Tools / ツール

아래 표는 **라이브 서버의 `tools/list` 응답에서 그대로 뽑은 것**입니다(실측 2026-08-18, 11종 전수).
MCP 디렉토리·크롤러가 이 저장소를 정적으로 읽을 때 도구 이름을 찾는 자리이므로, 서버의 실제
도구 목록과 1:1로 유지합니다(불일치는 회귀로 취급). 누구나 직접 재현할 수 있습니다:

```bash
curl -s -X POST https://contract.sallim.app/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
# → decide_contract_method, search_law, search_references, search_cases, get_case,
#   get_law_article, get_law_article_asof, estimate_delay_penalty,
#   delay_exemption_guide, check_price_adjustment, report_issue  (11 tools)
```

| 도구 | 설명 | LLM |
|---|---|---|
| `decide_contract_method` | 룰엔진 결정론 판정 — 계약방법 후보·법령 근거·적격심사 파라미터 | ✗ |
| `search_law` | 법령 조문 검색(키워드·조문번호·부분매치·시맨틱 폴백) | ✗ |
| `get_law_article` | 조문 원문 전체 조회 (현행) — 법률 자체의 미정비 인용은 `notes`로 경고 | ✗ |
| `get_law_article_asof` | **특정 시점에 시행 중이던 조문** — 과거 계약·처분·감사 대응(행위시법) | ✗ |
| `search_references` | 전 코퍼스 통합 검색 — 계약예규·조달청/행안부 적격심사 세부기준(별표)·실무가이드 | ✗ |
| `search_cases` | 판례·법령해석례 검색 (law.go.kr 실시간 — 항상 현행) | ✗ |
| `get_case` | 판시사항·판결요지·참조조문 / 질의요지·회답·이유 본문 | ✗ |
| `estimate_delay_penalty` | **지체상금·지연배상금 산정** — 법정 요율·기준금액·30% 한도 결정론 적용(국가/지방 요율이 다르다) | ✗ |
| `delay_exemption_guide` | **지체일수 불산입(면책) 사유 지도** — 예규 사유·확인할 사실·기재부/행안부 회신 선례 | ✗ |
| `check_price_adjustment` | **물가변동 계약금액 조정** — 90일·3%·단품 문턱(국가 15%/지방 10%) 판정 + 조정금액·선금공제 산식 | ✗ |
| `report_issue` | 오류·개선 제보(오인용·개정 미반영 등) — 운영 검토 파이프라인 직결 | ✗ |

클라이언트 설정:

```bash
# Claude Code
claude mcp add --transport http contract-compass https://contract.sallim.app/mcp
```

```json
// Cursor (.cursor/mcp.json) — Streamable HTTP 직접 지원
{ "mcpServers": { "contract-compass": { "url": "https://contract.sallim.app/mcp" } } }
```

```json
// Claude Desktop (claude_desktop_config.json) — mcp-remote 경유
{ "mcpServers": { "contract-compass": {
    "command": "npx", "args": ["-y", "mcp-remote", "https://contract.sallim.app/mcp"] } } }
```

ChatGPT: Settings → Connectors → Developer mode에서 위 URL을 커넥터로 추가.

설치했으면 AI에게 이렇게 물어 30초 안에 확인하세요 —
*"국가기관이 2,000만원짜리 물품을 사려는데 어떤 계약방법을 쓸 수 있어? 근거 조문도."*
소액수의계약과 **국가계약법 시행령 제26조 제1항 제5호**가 나오면 정상입니다.

도구 명세·아키텍처·한도 정책 상세는 [docs/MCP.md](docs/MCP.md) 참조.

### 평가셋 — 우리 판정을 남이 되짚을 수 있게

이 서버가 무엇을 맞히고 무엇을 못 맞히는지는 [`evaluation.xml`](evaluation.xml)에
공개돼 있습니다(20문항, 답은 전부 실측값). 지어낸 문항은 없습니다 — 미검증 문항은
회귀 검사를 거짓 실패시키기 때문입니다.

기계 검증은 결정론 회귀 하네스가 합니다. LLM을 쓰지 않아 비용 없이 재현됩니다:

```bash
python3 tools/mcp_regression.py --endpoint https://contract.sallim.app/mcp
# 28 케이스 · exit 0=전부 PASS / 1=회귀 존재 / 2=서버 미도달
```

각 케이스는 과거에 **실제로 발견·수리된 결함**의 회귀입니다(삭제된 조문을 근거처럼
반환하던 문제, 지자체 판정에 국가 수치가 섞이던 문제 등). 무료 티어는 IP당 50콜/일이고
이 스위트가 28콜을 쓰므로 하루 1회가 한계입니다.

금액구간별 계약방법·수의계약 사유·용어 가이드 페이지(`/g/`)의 생성·검증·배포 절차는
[docs/PROGRAMMATIC_SEO.md](docs/PROGRAMMATIC_SEO.md) 참조 — 룰셋에서 파생 생성하므로
페이지를 수기 편집하지 말 것.
로컬 stdio 실행: `python3 mcp/server.py` (등록: `codex mcp add contract-compass -- python3 /path/to/mcp/server.py`)

## 구성

```
backend/    FastAPI — 룰엔진·RAG·LLM 연동 (frontend/dist 정적 서빙 포함, :8402)
frontend/   React + TypeScript (Vite) — 위저드 UI
mcp/        MCP 서버 — stdio(로컬) / Streamable HTTP(:8403, 원격) · 무LLM 도구 11종
edge/       Cloudflare Worker (contract-edge) — 장애 폴백 게이트 · law API 엣지 캐시
rules/      계약 룰셋 JSON (contract_rules·law_registry 등) ← 결정론 핵심
tools/      법령·예규·별표 수집/인덱싱 파이프라인 (law.go.kr Open API) · 가이드 페이지 생성기
etl/        PDF/DOCX → 청크 → ChromaDB 파이프라인
docs/       MCP 명세 · 장애 전환 런북 · 가이드 페이지 파이프라인
scripts/    스탠바이 동기화 · 반출 전 기밀 검사
tests/      단위·회귀 테스트 + Ask 질문뱅크
```

## 빠른 시작

```bash
# 1) 백엔드 의존성 (+ MCP 서버까지 쓰려면 mcp/requirements.txt 추가)
pip install -r backend/requirements.txt

# 2) 프론트 빌드 (Node.js는 빌드 때만 필요)
cd frontend && npm install && npm run build && cd ..

# 3) 환경설정 (선택 — LLM 키 없이도 동작)
cp .env.example .env

# 4) 실행 (rate limiter는 SQLite 공유 — 다중 워커 가능, 코어 수에 맞춰 조정)
python3 -m uvicorn backend.main:app --host 0.0.0.0 --port 8402
```

## RAG 코퍼스 구축 (선택)

법령 챗봇·근거 검색을 쓰려면 공개 코퍼스를 인덱싱합니다:

```bash
# 법령 XML을 tools/laws/ 에 준비(law.go.kr Open API — tools/lib/lawgo.py 헬퍼 참조) 후 인덱싱
python3 tools/index_laws.py            # → law_articles 컬렉션

# 계약예규(행정규칙) 수집·인덱싱
python3 tools/fetch_admin_rules.py && python3 tools/parse_admin_rules.py
python3 tools/index_admin_rules.py     # → admin_rules 컬렉션

# 법령 별표·적격심사 세부기준 전문 PDF (부정당 제재기준·하자담보기간·낙찰하한율 별표)
python3 tools/fetch_law_tables.py

# 공개 간행물(감사원 공공계약 실무가이드 등)을 data/source_docs/ 에 넣고
python3 tools/reindex_qa.py            # → public_guides 컬렉션

# BM25 하이브리드 인덱스
python3 tools/build_bm25_index.py
```

코퍼스가 없으면 위저드(룰엔진)는 정상 동작하고, RAG 검색 결과만 비어 있습니다.
판례·법령해석례 조회는 코퍼스와 무관하게 law.go.kr Open API 키(`LAW_API_KEY`)만 있으면 동작합니다.

## 데이터 출처 (전부 공개 자료)

- 법령·시행령·시행규칙·별표·판례·법령해석례: [국가법령정보센터](https://law.go.kr) Open API (출처표시)
- 계약예규(적격심사기준·정부 입찰·계약 집행기준 등): 기획재정부 행정규칙
- 적격심사 세부기준: 조달청·행정안전부 행정규칙
- 공공계약 실무가이드: 감사원 공개 간행물
- 물품분류·중소기업자간 경쟁제품: 조달청·중소벤처기업부 고시

## 라이선스

MIT

More