# contract-compass MCP server

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

## At a glance

contract-compass is an MCP server in the Legal & Government category. It is hosted remotely and connects over HTTP, and declares no required credentials. It exposes 11 tools, including decide_contract_method, search_law and search_references. It scores B (71/100) on the MCP Skills Hub health score as of Oct 28, 2026.

## Install

### How to install contract-compass in Claude Code

1. Add the server

```bash
claude mcp add --transport http contract-compass https://contract.sallim.app/mcp?via=official
```

2. Verify it's connected

```bash
claude mcp list
```

3. Sharing it with your team?

   Add `--scope project` to write it to .mcp.json in the repository root, which you can commit (with the secrets left as environment variables).

4. Use it in a session

   Ask Claude to use the tools this server exposes (e.g. decide_contract_method, search_law, search_references). It discovers them automatically.

### How to install contract-compass in Claude Desktop

1. Open your MCP config

   macOS: ~/Library/Application Support/Claude/claude_desktop_config.json · Windows: %APPDATA%\Claude\claude_desktop_config.json

2. Add this server

```json
{
  "mcpServers": {
    "contract-compass": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://contract.sallim.app/mcp?via=official"
      ]
    }
  }
}
```

3. Why the wrapper?

   This is a remote (HTTP) server and Claude Desktop only launches local processes, so mcp-remote proxies the connection. It will open a browser window if the server needs OAuth.

4. Restart Claude Desktop

   The tools appear under the 🔌 menu once the app reloads.

### How to install contract-compass in Cursor

1. Create / edit .cursor/mcp.json in your project

```json
{
  "mcpServers": {
    "contract-compass": {
      "url": "https://contract.sallim.app/mcp?via=official"
    }
  }
}
```

2. Enable it

   Cursor Settings → MCP → toggle the server on. Tools become available to the Composer/Agent.

### How to install contract-compass in Codex CLI

1. Add to ~/.codex/config.toml

```toml
[mcp_servers.contract-compass]
command = "npx"
args = ["-y", "mcp-remote", "https://contract.sallim.app/mcp?via=official"]
```

2. Why the wrapper?

   Codex runs MCP servers as local processes, so mcp-remote bridges this HTTP endpoint to stdio.

3. Run Codex

   Codex loads MCP servers from config.toml on startup and exposes their tools to the agent.

### How to install contract-compass in Windsurf

1. Edit ~/.codeium/windsurf/mcp_config.json

```json
{
  "mcpServers": {
    "contract-compass": {
      "serverUrl": "https://contract.sallim.app/mcp?via=official"
    }
  }
}
```

2. Reload

   Windsurf → Cascade → refresh MCP servers. Cascade can now call the tools.

### How to install contract-compass in Cline

1. Open Cline → MCP Servers → Configure

   Adds to cline_mcp_settings.json.

2. Add the server

```json
{
  "mcpServers": {
    "contract-compass": {
      "type": "streamableHttp",
      "url": "https://contract.sallim.app/mcp?via=official"
    }
  }
}
```

### How to install contract-compass in VS Code

1. Create .vscode/mcp.json

```json
{
  "servers": {
    "contract-compass": {
      "type": "http",
      "url": "https://contract.sallim.app/mcp?via=official"
    }
  }
}
```

2. Start it

   VS Code shows a ▶ Start action above the server entry. Agent mode (Copilot Chat) can then use the tools.

## Tools

- `decide_contract_method` — 계약방법 결정론 판정 — 룰엔진이 적용 가능한 계약방법 후보와 법령 근거를 반환. 상대방 지위(소기업·여성기업 등)를 안 넣었는데 그 지위로만 열리는 수의 후보가 있으면 `vendor_conditional_candidates`로 따로 온다 — 지위를 추정하지 말고 사용자에게 확인하라. `law_currency`는 이 판정이 기대는 법령(공기업이면 계약사무규칙 포함 — `laws_checked`)의 현행 여부다(2026-10-15). `status`가 "verified"가 아니면 `note_currency`와 `laws_not_verified`가 온다 — 그 규범을 현행으로 단정해 인용하지 말고 그 사실을 밝혀라. Args: contract_type: "construction"(공사) | "service"(용
- `search_law` — 법령 조문 검색 — 키워드 또는 조문번호로 조문 스니펫 반환(상위 top_k건). **코퍼스가 둘이고 한 응답은 한 쪽에서만 온다(2026-08-29).** 공공계약(국가·지방계약법 계열 38개 법령)과 **세법**(소득세법·법인세법·부가가치세법·조세특례제한법·지방세법 등 64개 법령)이다. 축은 자동으로 정해진다 — 질의가 세법 법령을 이름으로 부르면 세법 코퍼스로 간다. 법령명이 없어도 세법 고유 개념이면 세법 축에서 찾고, 공공계약 고유 업무를 명시하면 계약 축을 유지한다. 그 밖에는 공공계약 결과가 없거나 의미검색· 주제 밖 낱말 매치뿐일 때 두 축 거리를 비교한다. 이름으로 부른 시행령/시행규칙은 그 하위법령으로 검색을 제한한다(모법 이름만 부르면 기존 검색 유지). `corpus="tax"`/`"
- `search_references` — 공공계약 코퍼스 통합 검색 — 법령+계약예규+조달청·행안부 세부기준+실무가이드. LLM 미사용. search_law가 법령 조문 전용인 것과 달리 예규·적격심사 세부기준·실무가이드까지 검색한다. 낙찰하한율·적격심사 배점·실무 절차 등 법령 본문 밖 질문에 사용하라. AI 생성 없이 검색 근거 원문만 반환한다(백엔드 LLM 예산 미차감). **세법은 이 도구가 못 본다(2026-08-29 정직 공시).** 세법 조문은 별도 코퍼스 (`tax_articles` 64개 법령)에 있고 여기 붙어 있는 채널(BM25·doc2query·rerank)은 공공계약 코퍼스 것이다. 소득세법·법인세법·부가가치세법류 질문은 **search_law** (자동으로 세법 축으로 간다) 또는 get_law_article로 가라 — 여
- `search_cases` — 판례·법령해석례 검색 — law.go.kr 실시간 조회(항상 현행). LLM 미사용. 분쟁·처분취소·해석 다툼("~해도 되나", "~취소될 수 있나")에 조문만으로 부족할 때 쓰라. 본문은 get_case(kind, case_id)로 이어서 조회. **응답은 무엇으로 몇 건을 봤는지까지 말한다**(2026-08-29). `search_scope`가 "title"이면 사건명·안건명만, "body"면 본문까지 본 것이다. `searched`에 시도한 질의·범위·law.go.kr 총계(`total_cnt`)가 시도 순서대로 실리고, 넓혀서 다시 찾았으면 `retried`가 true다. **0건은 "그런 판례가 없다"가 아니라 "이 범위에서 못 찾았다"이다** — 사용자에게 옮길 때 `searched`가 밝힌 범위
- `get_case` — 판례/해석례 본문 조회 — 판시사항·판결요지·참조조문(판례) 또는 질의요지·회답·이유(해석례). 응답의 `source_url`은 국가법령정보센터 원문 주소다 — 판례·해석례를 인용할 때는 **이 링크를 함께 제시하라**(감사·보고서에서 근거를 되짚을 수 있어야 한다). **`error:"case_body_unavailable"`이면 `source_url`은 null이고 `existence_verified`는 false다**(2026-09-04). 이건 "본문만 없다"가 아니다 — 우리는 ①본문 미제공(하급심· 국세청 등 타기관 제공)과 ②그런 일련번호가 없음을 **구분하지 못한다**(본문 API 응답이 같다). 그러니 **링크를 만들어 채우지 마라**: law.go.kr 뷰어는 없는 번호에도 200과 빈 페
- `get_law_article` — 법령 조문 원문 조회 — 6,000자를 넘으면 잘라서 주고 `truncated`로 공시한다. **긴 조문은 잘린다(2026-10-15).** 원문이 6,000자를 넘으면 `truncated: true`와 `content_total_chars`(원문 총 글자수)·`content_shown_chars`·`paragraphs_shown`· `paragraphs_omitted`·`paragraph_cut`·`truncation_note`가 온다. 그때 content는 조문 전체가 아니다 — 생략된 항을 "없다"고 말하지 말고, ref에 항을 붙여(예: "소득세법 시행령 제155조제20항") 다시 부르면 그 항부터 창을 열어 준다(`requested_paragraph`). ref에 호를 붙이면(예: "…제26조제1항
- `get_law_article_asof` — **특정 시점에 시행 중이던** 조문 원문 조회 (law.go.kr 연혁 라이브). get_law_article은 항상 현행이다. 과거 사건에 현행 조문을 적용하면 조용히 틀린 답이 된다 — 계약 체결·입찰공고·처분 시점이 과거이면 **반드시 이 도구를 쓰라**: - "2023년에 체결한 계약인데 지체상금률이 맞나" - "재작년 부정당업자 제재가 당시 기준으로 적법했나" - 감사·분쟁·소송 대응(적용법령은 행위시법이 원칙) 응답 필드: effective_date 그 시점에 시행 중이던 판의 시행일자 is_current 그 판이 지금도 현행인가 (False면 이후 개정됨) prev/next_effective_date 직전·직후 개정 시행일 — 경계 판단용 notes 미정비 상호인용 경고 (get_law_art
- `estimate_delay_penalty` — 지체상금(국가·공기업)·지연배상금(지방) 산정 — 법정 요율·기준금액·30% 한도를 결정론 적용. **국가와 지방은 요율이 다르다**(물품 0.75/1000 ↔ 0.8/1000, 용역 1.25/1000 ↔ 1.3/1000) — org_type을 반드시 사용자에게 확인해서 넣어라. 법정 용어도 다르다(국가=지체상금, 지방=지연배상금). **이 도구는 지체일수를 정하지 않는다.** 준공검사 소요기간·검사 불합격 재검사 기간· 발주기관 귀책 일수 같은 것은 사실 판단이다 — delay_days/excluded_days는 사용자가 선언한 값으로 계산에 그대로 쓰이고, 응답의 counted_days.disclaimer가 이 사실을 밝힌다. 면책 사유 해당 여부가 쟁점이면 search_references로 예규·감사원
- `delay_exemption_guide` — 지체일수에서 **빼는(불산입) 사유** 지도 — estimate_delay_penalty가 정하지 않는 부분. "이 지연은 우리 책임이 아닌데 지체상금을 물어야 하나", "동절기 공사중지 기간도 지체일수인가", "관급자재가 늦게 와서 늦어졌다" 같은 질문에 쓰라. **이 도구는 해당 여부를 판정하지 않는다.** 일반조건 문언 자체가 "계약담당공무원이 인정할 때"를 요건으로 두므로 판단은 발주기관 몫이다. 도구가 주는 것은 셋이다 — ①예규에 있는 사유 목록과 원문 인용 ②각 사유가 인정되려면 **확정돼야 할 사실** (must_establish — 사용자와 하나씩 확인하라) ③기재부·행안부 회신 선례. 쓰는 순서: 이 도구로 사유를 좁힌다 → must_establish를 사용자와 확인한다 → 불산입 일수가 
- `check_price_adjustment` — 물가변동 계약금액 조정(에스컬레이션) 요건 판정 + 산식 적용 — 이행단계 Phase 3. "자재값이 올랐는데 계약금액을 올려받을 수 있나", "90일 지났나", "단품 조정 되나"에 쓰라. **이 도구는 조정률을 산정하지 못한다.** 품목조정률·지수조정률은 산출내역서와 지수·단가 원천(한국은행 생산자물가지수 등)으로 계산하는 값인데 이 서버는 그 데이터를 갖고 있지 않다 — 그러니 `adjustment_rate_pct`는 **사용자·발주기관이 산정한 값**을 받아 쓰고, 안 주면 요건 ②를 `met: null`로 두고 판정을 보류한다. 없는 값을 지어내지 마라. 판정하는 것(결정론): ①기간 요건(계약체결일 또는 직전 조정기준일부터 90일 이상) ②등락률 3% 문턱 ③**단품 조정 문턱 — 국가·공기업 1
- `report_issue` — 사용자가 **오류 제보나 개선 요청을 운영자에게 전해 달라고 했을 때만** 쓴다. 쓰는 때: 사용자가 "이 조문 인용이 틀렸으니 신고해 줘", "운영자에게 알려 줘", "이런 질문도 답하게 해 달라고 전해 줘"처럼 제보·요청을 부탁했을 때. 보내기 전에 무엇이 전달되는지 사용자에게 알린다. 쓰지 않는 때: 사용자가 요청하지 않았는데 질문을 남기려고 부르지 않는다. 답하기 전에 먼저 부르지도 않는다 — 이 도구는 답변·정정을 대신하지 않는다. 전달 내용(인자)과 같은 사용자의 직전 도구 호출 요약(서버 기록)이 운영자 검토용으로 저장된다(개인정보처리방침 https://contract.sallim.app/privacy). 개인 식별 정보(기관명· 사건번호·금액 조합 등)는 일반형으로 바꿔 적는다. Args: c

Source repository: https://github.com/sallim-app/contract-compass

---

Source: https://mcp-skills-hub.vercel.app/mcps/app-sallim-contract-compass · MCP Skills Hub · data as of 2026-10-28T12:31:05Z
