한국 사업자 검증 액션 MCP 서버. SSOT는 kr-biz-verify-mcp-plan.md(작업계획서) — 모든 작업은 계획서의 루프(Loop 0~8) 순서와 각 루프의 AC(수용 기준)를 따른다. 계획서와 충돌하는 판단은 하지 말고 보고한다.
- 이 세션(zai/GLM)은 구현 담당이다. 평가는 별도 세션(Claude)이 수행한다.
- 평가가 가능하도록, 루프 단위 작업 완료 시
docs/PROGRESS.md에 기록한다: 루프 번호 · 수행 내용 · AC 충족 증거(실행한 명령과 실제 출력) · 미해결 이슈. - "되는 것처럼 보임"으로 멈추지 않는다. AC는 명령 출력으로 증명한다.
kb MCP 도구(kb_search / kb_get / kb_upsert)를 사용한다.
- 작업 시작 전
kb_search로 관련 지식을 확인한다 (query 예: "kr-biz-verify", "국세청 API"). - 루프를 넘어 유지할 가치가 있는 결정·발견·함정은
kb_upsert로 저장한다:domain은kr-biz-verify고정 (Domain 노드 이미 존재).- 8타입(Fact/Convention/Decision/Component/Domain 등)·8관계 고정 온톨로지만 사용, raw Cypher 금지.
- 저장 전 dedup: 유사 노드가 있으면 새로 만들지 말고 갱신, 모순은 SUPERSEDES 처리.
- 일회성 디버깅 로그·코드로 알 수 있는 내용은 저장하지 않는다.
- 개인정보 무저장: 대표자명 등 진위확인 입력값은 요청 즉시 폐기. 로그·캐시·에러 메시지 어디에도 남기지 않는다. 캐시 가능한 것은 사업자번호와 상태조회 결과뿐.
- 캐시: 상태조회 24h TTL. 진위확인은 캐시 금지.
- 모든 도구 반환은 zod 스키마 고정. 판정(
check_invoice_eligibility)에는 반드시basis(근거 필드) 동봉. - 면책 문구 상시 포함: "국세청 공공데이터 기준, 법적 효력 있는 증명은 홈택스 발급 문서 참조".
- 사업자번호는 국세청 호출 전 체크섬 형식 검증으로 걸러낸다.
- 서비스키는
.env로만 관리. 코드·로그·커밋에 노출 금지.
- 문서는 한국어 우선(README.md 한국어, README-EN.md 병기).
- TypeScript + MCP SDK(@modelcontextprotocol/sdk).
- 계획서에 없는 추상화·설정성·방어코드를 추가하지 않는다. 최소 코드로 푼다.