nts-taxlaw-mcp

nts-taxlaw-mcp

MCP server that directly queries the Korean National Tax Service tax law information system for tax law interpretations, precedents, and guidance. It supports exact document-number lookup, keyword search, and structured retrieval of ruling details and legal grounds.

Category
Visit Server

README

korean-taxlaw-mcp

한국 세법 자료를 출처별로 통합 조회하기 위한 MCP 서버입니다.

두 출처의 원본을 직접 조회합니다. Python과 FastMCP로 구현했습니다.

  • 국세 — 국세청 국세법령정보시스템 (https://taxlaw.nts.go.kr)

  • 지방세 — 한국지방세연구원(KILF) 지방세 법령정보시스템 (https://www.olta.re.kr)

  • 최신 세법해석례·지방세 유권해석 조회

  • 회신·판단·결론 등 상세 본문 구조화

  • 문서번호 기반 exact lookup (국세·지방세 각각의 번호 체계 지원)

  • 판례·결정례 및 행정 해석기준 검색

  • 출처와 근거 유형을 포함한 구조화 응답

기존 korean-law-mcp는 법제처 OPEN API 특성상 국세청 해석례의 목록 검색은 가능하지만 상세 본문 조회에는 제한이 있습니다. korean-taxlaw-mcp의 현재 국세 도메인은 법제처 미러(ntsCgmExpc)를 거치지 않고 국세청 원본을 직접 조회해 문서번호 검색과 상세 본문 조회를 제공합니다.


1. 지원 데이터

국세 — 국세청 국세법령정보시스템

영역 대상 검색 문서번호 조회 본문
세법해석례 사전답변, 질의회신(서면질의), 과세기준자문, 고시서면질의 O O 요지·사실관계·질의내용·회신·관련법령
판례·결정례 과세적부, 이의신청, 심사청구, 심판청구, 판례, 헌재 O O 처분개요·청구인 주장·처분청 의견·심리 및 판단·결론
행정 해석기준 국세 기본통칙 O - 조항 본문
행정 해석기준 세법집행기준 O - 조항명·목차
행정 해석기준 국세청 고시 206건, 훈령 143건 O - 메타데이터
별표·서식 법령서식 34,487건 O - 메타데이터·파일 식별자

지방세 — 한국지방세연구원(KILF) 지방세 법령정보시스템

영역 대상 검색 문서번호 조회 본문
유권해석 행정안전부 유권해석(지방세 예규), 법제처 유권해석 O O 답변요지·질의요지·회신내용·관계법령
판례·결정례 조세심판원 심판결정례, 감사원 심사결정례, 법원 판례, 헌재 결정례 O O 요지·이유·결정유형

취득세·등록면허세·재산세·자동차세·주민세·지방소득세·지역자원시설세·지방교육세·담배소비세 등 지방세 22개 세목으로 필터할 수 있습니다.

국세와 지방세의 분리

국세와 지방세는 출처·문서번호 체계·권위 수준이 모두 달라 섞지 않고 도메인별로 나눠 둡니다.

국세 지방세
출처 국세청 국세법령정보시스템 한국지방세연구원 지방세 법령정보시스템
문서번호 서면-2026-법규재산-0119 (종류-연도-분류-일련) 부동산세제과-1794(2026.6.9.)호 (부서-일련)
예규 권위 수준 nts_ruling local_ruling
도구 접두 search_tax_*, lookup_tax_document search_local_tax_*, lookup_local_tax_document

응답의 taxLevel 필드로 national·local 을 구분할 수 있습니다.

수록 규모

2026년 8월 실측 기준입니다.

데이터 건수
질의회신 132,638
사전답변 5,117
과세기준자문 1,036
고시서면질의 14
세법해석정비 996
과세적부 518
이의신청 1,478
심사청구 22,233
심판청구 71,349
판례 55,860
헌재 355

지원하지 않는 데이터

데이터 이유
법률·시행령·시행규칙 본문 국가법령정보센터가 원본이며 korean-law-mcp에서 제공
조세조약 법제처 조약 API가 더 안정적이므로 중복 구현하지 않음
일반 판례·헌재 결정 전체 세목이 부여된 조세 사건만 조회
세법집행기준 조항 본문 원본이 연도별 PDF로 배포되어 목차·조항명·PDF 파일 ID까지만 제공
서식 파일 바이너리 POST 폼 다운로드 방식으로 안정적인 GET URL이 없음
감사원 심사청구·납세자보호위원회 심의사례·평가심의사례 별도 모듈·액션으로 현재 미구현
발간책자·세목별요약정보·용어사전·세무일정 법적 근거가 아닌 안내자료로 현재 지원하지 않음

추가 조사 내용은 docs/INVESTIGATION.md를 참고하세요.


2. 데이터 출처

세목 구분 출처 주소
국세 국세청 국세법령정보시스템 https://taxlaw.nts.go.kr
지방세 한국지방세연구원(KILF) 지방세 법령정보시스템 https://www.olta.re.kr

두 사이트 모두

  • 공개 조회 경로만 사용 (국세청 POST /action.do, 지방세 목록·상세 화면)
  • 로그인·CAPTCHA·접근제어 우회 없음
  • 별도 세션·쿠키·인증키 불필요
  • 모든 응답에 원본 추적 정보 포함

국세:

{
  "sourceAgency": "국세청",
  "sourceSystem": "국세법령정보시스템",
  "sourceId": "200000000000022584",
  "documentNumber": "서면-2026-법규재산-0119",
  "sourceUrl": "https://taxlaw.nts.go.kr/qt/USEQTA002P.do?ntstDcmId=200000000000022584",
  "retrievedAt": "2026-08-19T13:34:58Z"
}

지방세:

{
  "sourceAgency": "행정안전부",
  "sourceSystem": "지방세 법령정보시스템",
  "sourceId": "60099135",
  "documentNumber": "부동산세제과-1794(2026.6.9.)호",
  "sourceUrl": "https://www.olta.re.kr/explainInfo/authoInterpretationDetail.do?num=60099135",
  "retrievedAt": "2026-08-20T04:12:00Z"
}

3. 문서번호 검색

문서번호의 표기 차이를 정규화해 동일 문서를 조회합니다.

서면-2026-법규재산-0119
서면 2026 법규재산 0119
서면2026법규재산0119
서면서면-2026-법규재산-0119
질의회신 서면-2026-법규재산-0119
질의회신서면-2026-법규재산-0119
국세청 서면-2026-법규재산-0119

확인된 문서번호 형식은 다음과 같습니다.

형식 구조 예
A 종류-연도-분류-일련 서면-2026-법규재산-0119, 사전-2026-법규소득-0543, 조심-2025-인-4460
B 종류-기관-연도-일련 적부-국세청-2026-0119, 이의-광주청-2026-0024, 심사-부가-2026-0018
C 기관 부서-일련 재정경제부 국제조세협력과-104

A와 B는 두 번째 항목이 4자리 연도인지 여부로 구분합니다.

Exact match 원칙

정확히 일치
→ found: true
→ exactMatch: true
→ document 반환

일치 없음
→ NOT_FOUND
→ similarDocuments 별도 반환

일부만 일치하는 문서는 정답으로 반환하지 않습니다.

lookup_tax_document("법규재산-0119")

→ [NOT_FOUND]

similarDocuments:
  · 서면-2026-법규재산-0119
  · 서면-2015-징세-0119
  · 기준-2023-법규부가-0044
  · 적부-국세청-2020-0119

similarDocuments는 검색 보조 정보이며 요청한 문서로 간주하지 않습니다.

0119와 119처럼 0 패딩만 다른 경우에는 동일한 문서번호로 처리합니다. 정규화는 조회 후보를 확장하기 위한 용도로만 사용하며, 최종 응답에는 국세청 원본의 문서번호를 그대로 반환합니다.


4. 키워드 검색

국세법령정보시스템의 실제 검색 결과를 기준으로 검색 문법을 적용합니다.

입력 건수 의미
["상속"] 22,349 단일 키워드
["증여"] 22,924 단일 키워드
["상속","증여"] 14,913 AND
["상속 증여"] 14,913 AND
["상속|증여"] 30,360 OR
["상속"] + 제외 ["증여"] 7,436 NOT

MCP에서는 다음과 같이 사용합니다.

{"query": "상속 공동상속주택"}                  # AND
{"query": "상속 증여", "match": "any"}         # OR
{"query": "상속", "exclude": ["증여"]}         # NOT
{"query": '"공동상속주택 소수지분" 양도'}       # 구절 검색

검색 시 다음 사항에 주의합니다.

  • OR 연산자는 ASCII 파이프 |를 사용합니다.
  • ¦(U+00A6)는 OR로 동작하지 않습니다.
  • 잘못된 정렬 필드를 전달하면 오류가 아니라 0건이 반환됩니다.
  • 서버에서는 실측 검증된 DCM_RGT_DTM, FRS_RGT_DTM, SCORE만 사용합니다.

5. 가장 쉬운 설치

개발 도구나 Python을 직접 설정하지 않고 Claude Code 또는 Codex에 설치를 맡길 수 있습니다.

1. 사용할 앱 설치

2. 설치 요청

둘 중 사용하는 도구에 맞는 내용을 그대로 요청합니다.

Claude Code를 사용하는 경우

korean-taxlaw-mcp를 내 컴퓨터에 설치하고 Claude Desktop에서 사용할 수 있게 설정해줘.
저장소: https://github.com/zisu17/korean-taxlaw-mcp
MCP 이름은 korean-taxlaw로 등록하고, 설치 후 연결 테스트까지 해줘.

Codex를 사용하는 경우

korean-taxlaw-mcp를 내 컴퓨터에 설치하고 Codex에서 사용할 수 있게 MCP로 등록해줘.
저장소: https://github.com/zisu17/korean-taxlaw-mcp
MCP 이름은 korean-taxlaw로 등록하고, 설치 후 목록 확인과 연결 테스트까지 해줘.

Codex에 등록한 MCP 설정은 같은 컴퓨터의 ChatGPT 데스크톱 앱, Codex CLI, IDE 확장에서 공유됩니다. 자세한 내용은 Codex MCP 공식 문서를 참고하세요.

Claude Code 또는 Codex가 명령 실행이나 설정 파일 변경 권한을 요청하면 내용을 확인한 뒤 승인합니다.

3. 앱 재시작

설치가 끝나면 사용 중인 Claude Desktop 또는 ChatGPT 데스크톱 앱을 완전히 종료했다가 다시 실행합니다.

4. 연결 확인

Claude 또는 Codex에서 다음처럼 요청해 봅니다.

국세청에서 "공동상속주택" 관련 세법해석례를 찾아줘.

korean-taxlaw 도구를 사용해 출처 링크와 함께 결과를 반환하면 설치가 완료된 것입니다.


6. 직접 설치와 문제 해결

Claude Code나 Codex를 사용할 수 없거나 직접 설치해야 한다면 docs/INSTALLATION.md를 참고하세요. 다음 내용을 포함합니다.

  • Windows·macOS·Linux용 uv 설치
  • 실행파일 경로와 PATH 확인
  • Claude Code 및 Claude Desktop 수동 등록
  • 소스 설치와 pip + venv 대체 방법
  • HTTP 연결과 문제 해결

7. 함께 사용하기

법률·시행령·시행규칙 본문은 korean-law-mcp, 국세청 고유 자료는 korean-taxlaw-mcp로 조회하는 구성을 권장합니다. Claude Code에 두 MCP를 함께 설치해 달라고 요청하거나 Codex에 두 MCP를 함께 등록해 달라고 요청하면 법령 본문과 국세청 해석례·결정례를 출처별로 나누어 확인할 수 있습니다.


8. 환경변수

모든 항목은 선택 사항이며 기본값만으로 실행할 수 있습니다.

두 기관의 시스템을 조회하므로 설정도 공통값 + 사이트별 재정의 두 층입니다. 우선순위는 사이트별 > 공통 > 기본값 입니다.

접두 적용 범위
TAXLAW_* 국세·지방세 공통
NTS_* 국세(국세청)만 재정의
OLTA_* 지방세(한국지방세연구원)만 재정의
항목 공통 국세 전용 지방세 전용 기본값
요청 타임아웃(ms) TAXLAW_TIMEOUT_MS NTS_TIMEOUT_MS OLTA_TIMEOUT_MS 20000
재시도 횟수 TAXLAW_RETRIES NTS_RETRIES OLTA_RETRIES 3
재시도 대기 base(ms) TAXLAW_RETRY_BASE_MS NTS_RETRY_BASE_MS OLTA_RETRY_BASE_MS 300
분당 요청 한도 TAXLAW_RATE_PER_MIN NTS_RATE_PER_MIN OLTA_RATE_PER_MIN 60
버스트 허용량 TAXLAW_RATE_BURST NTS_RATE_BURST OLTA_RATE_BURST 20
본문 최대 글자수 TAXLAW_BODY_LIMIT NTS_BODY_LIMIT OLTA_BODY_LIMIT 30000
User-Agent TAXLAW_USER_AGENT NTS_USER_AGENT OLTA_USER_AGENT Chrome UA
캐시 최대 항목 수 TAXLAW_CACHE_MAX — — 600

예시:

# 양쪽 다 타임아웃을 10초로
TAXLAW_TIMEOUT_MS=10000

# 공통 10초, 다만 국세청만 30초로 늘림
TAXLAW_TIMEOUT_MS=10000
NTS_TIMEOUT_MS=30000

# 지방세 쪽 요청만 더 천천히
OLTA_RATE_PER_MIN=20

요청 한도는 사이트별로 따로 셉니다. 두 곳이 다른 기관의 서버이므로 한쪽 조회가 다른 쪽 한도를 깎지 않습니다.

캐시는 하나를 공유합니다. 키에 출처를 담아 구분하므로 사이트별 재정의가 없습니다. 이전 이름 NTS_CACHE_MAX 도 계속 동작합니다.

잘못된 값(숫자가 아니거나 하한 미달)은 그 항목만 건너뛰고 다음 후보나 기본값을 씁니다. 설정 오류로 서버가 뜨지 않는 일은 없습니다.


9. MCP 도구

총 12개의 도구를 제공합니다.

국세 (국세청)

도구 용도
lookup_tax_document 문서번호 exact lookup
search_tax_interpretations 세법해석례 검색
search_tax_decisions 판례·결정례 검색
get_tax_document 해석례·결정례 본문 조회
search_tax_guidance 기본통칙·집행기준·고시·훈령 검색
get_tax_guidance 통칙·집행기준 특정 조항 조회
search_tax_forms 법령서식·별표 검색
search_taxlaw 국세 전체 영역 통합 검색
tax_research 세무 질의에 대한 층별 근거 수집

지방세 (한국지방세연구원)

도구 용도
search_local_tax_interpretations 지방세 유권해석 검색 (행정안전부·법제처)
search_local_tax_decisions 지방세 심판·판례·감사원·헌재 검색
lookup_local_tax_document 지방세 문서번호 exact lookup + 본문 조회

취득세·재산세 등 지방세 사안은 search_local_tax_* 를, 양도소득세·법인세 등 국세 사안은 search_tax_* 를 사용합니다.

문서번호를 알고 있다면 lookup_tax_document를 먼저 사용합니다.

get_tax_document는 해석례와 결정례의 상세 조회를 하나의 도구로 통합합니다. 국세법령정보시스템의 상세 조회 액션이 문서 유형과 관계없이 동일하기 때문에 별도의 상세 조회 도구로 나누지 않습니다.

사용 예제

문서번호 조회:

{
  "name": "lookup_tax_document",
  "arguments": {
    "document_number": "서면-2026-법규재산-0119"
  }
}

응답 예:

[OK]

found: true
exactMatch: true

서면-2026-법규재산-0119
질의회신 | 양도소득세 | 2026-08-11 | nts_ruling

title:
인구감소지역 내 취득한 분양권이 ’27.1.1.이후 주택으로 전환된 경우 조특법§71의2 적용 여부

relatedLaws:
- 조세특례제한법 제71조의2
- 조세특례제한법 시행령 제68조의2

sections:
- facts
- question
- relatedLawsText

판례·결정례 검색:

{
  "name": "search_tax_decisions",
  "arguments": {
    "query": "공동상속주택",
    "type": "court",
    "result": ["국승"],
    "limit": 3
  }
}

기본통칙 검색:

{
  "name": "search_tax_guidance",
  "arguments": {
    "kind": "basic_ruling",
    "law_name": "상속세 및 증여세법",
    "query": "상속재산"
  }
}

세무 질의 근거 수집:

{
  "name": "tax_research",
  "arguments": {
    "question": "부모가 자녀에게 시가보다 낮은 가격으로 아파트를 양도하면 증여세가 발생하는지"
  }
}

10. 법적 근거 구분

세무 자료는 근거의 성격에 따라 구분해 반환합니다.

값 의미
statute 법률
enforcement_decree 시행령
enforcement_rule 시행규칙
nts_ruling 국세청 해석례·예규
nts_guidance 기본통칙·집행기준·고시·훈령
adjudication 과세적부·이의신청·심사청구·심판청구
court_case 법원 판례·헌재 결정

국세청 예규는 과세관청의 법령해석이며 법원을 구속하지 않습니다. 기본통칙과 집행기준은 내부 집행기준으로 법규 자체는 아닙니다.


11. 오류 처리

자료가 실제로 존재하지 않는 경우와 원본 서버 문제로 조회하지 못한 경우를 구분합니다.

오류 코드 의미 부존재로 판단 가능
NOT_FOUND 원본에 일치하는 자료가 없음 O
DETAIL_NOT_AVAILABLE 문서는 있으나 원본에서 본문을 제공하지 않음 X
UPSTREAM_ERROR 국세청 오류·점검·비정상 응답 X
PARSE_ERROR 응답 형식이 예상과 다름 X
RATE_LIMITED 서버 자체 요청 한도 초과 X
TIMEOUT 요청 시간 초과 X
INVALID_INPUT 입력 오류 X

오류 응답에는 모델이 확인되지 않은 본문이나 결론을 생성하지 않도록 guardrail 정보를 함께 반환합니다.

HTTP 200 응답이라도 점검 페이지 HTML이 반환되거나 본문이 비정상적으로 비어 있으면 일시 장애로 처리하고 재시도합니다.


12. 요청 제한 및 캐시

국세법령정보시스템에 과도한 요청이 발생하지 않도록 호출량을 제한하고 반복 조회를 줄입니다.

요청 제한

  • 기본 요청 한도: 분당 60회
  • 버스트 허용량: 최대 20회
  • tax_research처럼 한 작업에서 여러 요청이 이어지는 경우를 고려해 토큰 버킷 방식 사용

캐시

대상 유지 시간
검색 결과 30분
문서 본문 24시간
통칙·집행기준·고시·훈령 12시간
법령 목록 7일

중복 요청 처리

동일한 요청이 동시에 들어오면 실제 국세법령정보시스템 조회는 한 번만 수행하고 결과를 공유합니다.

HTTP 연결 재사용

httpx의 keep-alive 연결 풀을 사용합니다.


13. 면책사항

  • 이 서버는 국세청 원문 검색과 구조화를 위한 데이터 접근 계층이며 법률적 판단이나 세무 자문을 제공하지 않습니다.
  • 해석례와 결정례는 개별 사안의 사실관계를 기준으로 한 판단입니다.
  • 국세청 예규는 과세관청의 법령해석으로 법원을 구속하지 않습니다.
  • 기본통칙과 집행기준은 내부 집행기준이며 법규가 아닙니다.
  • 개정 법령은 적용시점을 별도로 확인해야 합니다.
  • 데이터의 정확성과 최신성은 국세법령정보시스템의 갱신 상태를 따릅니다.
  • 법적 효력이 필요한 판단에는 국세법령정보시스템 원문을 확인해야 합니다.
  • 실제 신고·불복 등 법적 효력이 있는 행위는 세무사·변호사 등 자격 있는 전문가의 검토가 필요합니다.

라이선스

MIT

데이터 출처 고지는 NOTICE를 참고하세요.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured