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)
[](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