Skip to main content
Glama

nts-tax-mcp

Это MCP-сервер (Model Context Protocol), который позволяет напрямую использовать в Claude интегрированный поиск по Системе налогового законодательства (taxlaw.nts.go.kr) + Системе местного налогового законодательства (olta.re.kr).

Государственные налоги: Предварительные ответы · Письменные запросы · Разъяснения по запросам (Налоговая служба/Министерство стратегии и финансов/Министерство законодательства), Апелляции в Налоговую палату, Апелляции в Налоговую службу, Судебные прецеденты, Законодательство

Местные налоги (добавлено в v3): Решения Налоговой палаты по налогу на приобретение · налогу на имущество · автомобильному налогу · местному подоходному налогу · регистрационному и лицензионному сбору, Решения Счетной палаты, Решения Конституционного суда, Судебные прецеденты, Официальные толкования Министерства законодательства/Министерства администрации и безопасности, Разъяснения по запросам местных органов власти

Расширение законодательной информации (v5, добавлено в расширенной версии server_ext.py): Поиск прецедентов Верховного суда и нижестоящих судов, истории законодательства и статей на определенную дату, примеров толкования законов, административных правил (включая основные общие правила), налоговых соглашений и местных нормативных актов (постановлений) на основе Open API Национального центра законодательной информации (law.go.kr) с помощью одного коннектора.

v5 — Перенос на серверный компьютер + добавление 8 инструментов Министерства законодательства (law.go.kr) (2026-08)

Из-за исчерпания кредитов Railway сервер перестал работать (2026-08-08). Произведен перенос на постоянно работающий собственный серверный компьютер + метод экспозиции Tailscale Funnel (завершено 2026-08-09). В ходе переноса были дополнительно подключены 8 инструментов Open API Министерства законодательства (law.go.kr), расширив возможности до использования в общей сложности 14 инструментов через один коннектор.

  • Точка входа расширения: server_ext.py — наследует 6 инструментов (государственные/местные налоги) из существующего server.py через from server import mcp и регистрирует 8 дополнительных инструментов Министерства законодательства через клиент law_go_kr.py. Поскольку сам server.py не изменен, при необходимости только в 6 базовых инструментах можно запускать server.py как есть.

  • 8 новых инструментов: court_case_search/court_case_detail (прецеденты Министерства законодательства), law_interpretation_search (примеры толкования законов), law_history_search (список версий истории законодательства), law_article_as_of (текст статьи, действовавшей на определенную дату — для проверки статей, цитируемых в постановлениях/прецедентах), admin_rule_search (административные правила — основные общие правила, правила обработки расследований, уведомления), treaty_search (текст налоговых соглашений/дата вступления в силу), ordinance_search (местные нормативные акты — постановления о льготах по местным налогам и т.д.)

  • Предварительное условие: Open API law.go.kr работает только с зарегистрированных IP-адресов. Необходимо предварительно зарегистрировать публичный IP-адрес сервера на open.law.go.kr → История заявок OpenAPI. Если IP не зарегистрирован, 8 инструментов Министерства законодательства будут выдавать ошибку "Ошибка аутентификации", а 6 базовых инструментов по государственным/местным налогам будут работать нормально. Учетная запись аутентификации задается через переменную окружения LAW_API_OC (код организации, выдаваемый при регистрации на law.go.kr, обязателен). Поскольку это личная идентификационная информация, фактическое значение не фиксируется в этом репозитории, а загружается из локального файла, находящегося в .gitignore, который хранится только на серверном компьютере.

  • Текущий метод работы: На серверном компьютере run_server.bat (порт 8734, запуск server_ext.py) постоянно работает через Планировщик задач Windows (nts-tax-mcp, автоматический запуск с правами SYSTEM при загрузке), а tailscale funnel --bg 8734 обеспечивает внешний доступ по фиксированному адресу https://desktop-ika1349.tail81ecba.ts.net/mcp. Первоначальная установка завершается однократным запуском setup.ps1 (автоматизация: загрузка исходного кода с GitHub → установка зависимостей → регистрация в Планировщике задач).

Related MCP server: LexGuard MCP

v5.1 — Исправление ошибки парсинга статей + указание на обрезание статей (2026-08-16)

  • Исправление ошибки парсинга первой статьи раздела: Исправлена ошибка, из-за которой law_article_as_of при запросе статьи, с которой начинается раздел, подраздел или глава (например, ст. 104 или ст. 55 Закона о подоходном налоге), возвращал только заголовок вроде "Раздел 6 …" вместо текста самой статьи. Причина в структуре, где узел заголовка появляется раньше фактической статьи с тем же <НомерСтатьи>. Теперь строки с номерами статей отфильтровывают блоки заголовков, отсутствующие в тексте.

  • Указание на обрезание статьи + раскрытие max_chars: Если статья превышает max_chars (по умолчанию 6000 символов), ранее хвостовая часть (последние пункты) обрезалась без каких-либо указаний. Теперь в случае обрезания в ответ добавляется пункт "Обрезано" с указанием общей длины и способа повторного запроса, а в инструмент law_article_as_of добавлен параметр max_chars для получения полного текста.

  • Внимание к эксплуатации — .bat обязательно должен иметь разрывы строк CRLF: Если run_server.bat сохранен с разрывами строк LF, cmd.exe может пропускать строки, и настройка PORT=8734 будет проигнорирована, в результате чего сервер запустится на порту по умолчанию 8000 (реальный случай сбоя — Funnel смотрит на 8734, поэтому коннектор перестает работать). В зависимости от редактора разрывы строк при сохранении могут измениться на LF, поэтому после редактирования .bat обязательно проверьте, что они CRLF.

v5.2 — Поиск статей административных правил (2026-08-17)

В admin_rule_search добавлены параметры article (номер статьи), max_chars и start_char. Для крупных уведомлений, таких как Правила валютных операций (уведомление Министерства финансов и экономики, около 300 000 символов), возврат полного текста невозможен, поэтому ранее можно было увидеть только первые 10 000 символов. Теперь, указав номер статьи, можно получить только соответствующую статью — например, для уведомления о прямых зарубежных инвестициях: serial=серийный_номер_Правил_валютных_операций, article="9-5" (статья 9-5). Если номер статьи неизвестен, можно продолжить чтение со смещением start_char, а в случае обрезания пункт "Обрезано" в ответе укажет способ следующего запроса.

Улучшение скорости (2026-08-18): Кэширование ответов law.go.kr на 10 минут позволяет не загружать заново полный XML закона (например, Закон о подоходном налоге — 610 000 символов) при последовательном запросе статей одного и того же закона (вторая и последующие статьи возвращаются мгновенно). Также исправлена ошибка параметра размера страницы в запросе истории (numOfRowsdisplay), что сократило количество HTTP-запросов с 5 до 1 (измерено: холодный запрос 1 статьи — 1,1 с → 0,6 с).

v3 — Добавление Системы местного налогового законодательства (olta.re.kr)

Системы нумерации дел Налоговой палаты для государственных и местных налогов различаются.

  • Государственные налоги: 조심-ГГГГ-Код_регионального_управления-NNNN (например, 조심-2023-서-9465)

  • Местные налоги: 조심ГГГГ지NNNN (например, 조심2026지0284)

Фактически, при поиске по одному и тому же ключевому слову в обеих системах, решения Налоговой палаты почти не пересекаются (система Налоговой службы не индексирует дела по местным налогам). Тем не менее, для надежности инструмент nts_and_olta_precedent_search нормализует номера документов, удаляет дубликаты и сообщает количество удаленных дубликатов (duplicates_removed).

Состав файлов

nts-tax-mcp/
├── server.py                    # MCP 서버 본체 (FastMCP) — 기본 도구 6개 (국세+지방세)
├── server_ext.py                # 확장 진입점 — server.py 6개 + 법제처 8개 = 14개 도구
├── nts_tax_ruling_search.py     # 국세: taxlaw.nts.go.kr 검색 클라이언트
├── olta_tax_ruling_search.py    # 지방세: olta.re.kr 검색 클라이언트
├── law_go_kr.py                 # 법령정보: law.go.kr Open API 클라이언트 (판례/법령/해석례/행정규칙/조약/자치법규)
├── test_mcp_client.py           # 서버 상태 독립 점검 스크립트
├── client/                      # MCP 커넥터 우회 독립 클라이언트 (CLI 포함)
│   ├── nts_client.py
│   ├── nts_search.py
│   └── README.md
├── requirements.txt
├── Procfile                     # Railway 배포용 (레거시 — 현재 운영은 서버컴퓨터+Tailscale Funnel)
├── setup.ps1                    # 서버컴퓨터 최초 설치 스크립트 (소스 다운로드→의존성→작업 스케줄러 등록)
├── run_server.bat               # 확장판(server_ext.py) 상시 구동용 — 작업 스케줄러가 부팅 시 실행
└── local_env.bat                # (커밋 안 됨) LAW_API_OC 등 개인 식별정보 — .gitignore 처리, 서버컴퓨터에서 직접 생성

Предоставляемые инструменты

server.py предоставляет 6 базовых инструментов, server_ext.py — 6 базовых + 8 от Министерства законодательства = всего 14 инструментов. Фактический рабочий сервер (серверный компьютер) работает на server_ext.py, и все 14 инструментов доступны.

6 базовых (государственные и местные налоги, server.py)

Инструмент

Назначение

nts_ruling_search

Интегрированный поиск по государственным налогам (если название налога точное, автоматически применяется фильтр по налогу на стороне сервера)

nts_ruling_get_by_doc_no

Прямой запрос документа государственных налогов по номеру дела

olta_ruling_search

Интегрированный поиск по местным налогам (предпросмотр всех категорий, по 3 результата на категорию)

olta_collection_search

Глубокий поиск по определенной категории местных налогов — пагинация, период, сортировка по новизне (на стороне сервера)

olta_get_detail

Полный запрос текста документа по местным налогам (поддержка Налоговой палаты и Конституционного суда)

nts_and_olta_precedent_search

Одновременный поиск по прецедентам Налоговой палаты (государственные + местные налоги) с удалением дубликатов

8 расширенных (Министерство законодательства law.go.kr, добавляются только в server_ext.py)

Инструмент

Назначение

court_case_search

Поиск прецедентов Министерства законодательства (Верховный суд, нижестоящие суды, отдельная БД от системы Налоговой службы)

court_case_detail

Полный запрос текста прецедента (обстоятельства дела, резюме решения, ссылочные статьи, содержание прецедента)

law_interpretation_search

Поиск/запрос текста примеров толкования законов

law_history_search

Запрос истории закона (список всех версий: дата вступления в силу, номер публикации, MST)

law_article_as_of

Текст статьи закона, действовавшей на определенную дату (для проверки статей, цитируемых в постановлениях/прецедентах)

admin_rule_search

Поиск/запрос текста административных правил (инструкции, постановления, уведомления — основные общие правила, правила обработки расследований и т.д.)

treaty_search

Поиск/запрос текста договоров (налоговых соглашений) — проверка текста и даты вступления в силу

ordinance_search

Поиск/запрос текста местных нормативных актов (постановления, правила — гибкие ставки местных налогов, постановления о льготах и т.д.), фильтр по местному органу власти

v4 — Функция углубленного поиска (полное отражение кандидатов на улучшение)

  • Пагинация, период, сортировка OLTA: Глубокий поиск по определенной категории с шагом 10 результатов с помощью olta_collection_search. Период (ГГГГММДД) и сортировка по новизне обрабатываются на стороне сервера для точности.

  • Запрос текста OLTA: Получение полного текста решений Налоговой палаты и Конституционного суда (резюме решения, краткое описание меры, суждение) с помощью olta_get_detail.

  • Фильтр по налогу на стороне сервера NTS: Если в tax_type_filter передать точное название налога (налог на прирост капитала, налог на прибыль организаций, налог на добавленную стоимость, налог на наследство и дарение, налог на совокупную недвижимость и т.д. — 14 видов), автоматически применяется фильтр кода на стороне сервера, обеспечивая точную фильтрацию на основе всех данных.

Подробные спецификации данных и таблицы кодов см. в DATA_SOURCES.md.

Исправление ошибок v2.1 (Важно)

Исправлены проблемы, обнаруженные в ходе работы с папкой client/.

  • Проблема, когда фильтр даты (date_from/date_to) полностью ломал поиск — на экране интегрированного поиска taxlaw.nts.go.kr изначально нет интерфейса фильтра по периоду, поэтому серверные параметры bltnStrtDtm/bltnEndDtm, добавленные по предположению в предыдущей версии, обрабатывались как неверные значения, что приводило к нулевому количеству результатов поиска. В этот раз эти параметры были удалены и заменены на фильтр на стороне клиента, который отфильтровывает результаты по полю date после их получения.

  • Также исправлена проблема, когда в поле номера документа (doc_no) не удалялись маркеры подсветки поискового запроса (<!HS>, <!HE>), из-за чего точное совпадение в nts_ruling_get_by_doc_no не срабатывало.

Независимый клиент для обхода MCP-коннектора (client/)

В папку client/ добавлен независимый клиент, который может напрямую подключаться к серверу и выполнять поиск, минуя MCP, когда соединение с коннектором Claude нестабильно. Инструкции по использованию см. в client/README.md.

cd client
python nts_search.py --ping
python nts_search.py "조정대상지역" -c precedent -n 10

Улучшения v2

После первой версии были улучшены следующие пункты.

#

Содержание улучшения

Поддержка пагинации (page) — обработка последующих запросов вроде "покажи еще"

Прямой запрос по номеру дела (nts_ruling_get_by_doc_no) — немедленная проверка уже известного документа без повторного поиска

Автоматическое добавление информационного сообщения (_guidance) при нулевом количестве результатов поиска

Фильтр по налогу (tax_type_filter) — метод постобработки на стороне клиента (таблица соответствия кодов налогов на стороне сервера не определена)

Опция сортировки (sort) — по релевантности/по новизне/по давности

Управление размером ответа (include_full_text=False) — возможность запроса только краткого содержания, без полного текста

Автоматическое обнаружение и повторное подключение при истечении сессии

Кэширование (по умолчанию 5 минут) + минимальный интервал между запросами (по умолчанию 0,5 секунды) — вежливый парсинг

Логирование неожиданных структур ответа

1. Проверка локального запуска

pip install -r requirements.txt
python server.py

По умолчанию сервис работает по адресу http://0.0.0.0:8000/mcp в режиме streamable-http. Порт можно изменить с помощью переменной окружения PORT.

PORT=8765 python server.py

Опции переменных окружения

Переменная

Значение по умолчанию

Описание

PORT

8000

Порт сервера

NTS_VERIFY_SSL

true

Проверять ли SSL-сертификат. Временно установите false для обхода только при ошибках сертификата во внутренней сети/через прокси

NTS_CACHE_TTL

300

Время хранения кэша одинаковых результатов поиска (в секундах)

NTS_MIN_REQUEST_INTERVAL

0.5

Минимальный интервал между запросами к серверу Налоговой службы (в секундах)

LOG_LEVEL

INFO

Уровень логирования (при установке DEBUG подробно записывается переподключение сессии, попадание в кэш и т.д.)

LAW_API_OC

Нет (обязательно)

Только для server_ext.py. Код организации, выдаваемый при регистрации на law.go.kr — если не задан, 8 инструментов Министерства законодательства вернут явную ошибку. Работает только с IP-адреса, зарегистрированного под этим кодом (необходимо предварительно зарегистрировать публичный IP сервера на open.law.go.kr → История заявок OpenAPI). Является личной идентификационной информацией, поэтому не записывайте его непосредственно в исходный код, а внедряйте в среде развертывания

2. Развертывание

2-A. Текущий метод работы — постоянная работа на серверном компьютере + Tailscale Funnel (с 2026-08)

После остановки сервера из-за исчерпания кредитов Railway (2026-08-08) был осуществлен переход на постоянную работу на собственном серверном компьютере. 14 инструментов (server_ext.py) работают по этому методу.

  1. Однократный запуск setup.ps1 в PowerShell от имени администратора на серверном компьютере — загружает исходный код с GitHub, устанавливает зависимости, регистрирует задачу nts-tax-mcp в Планировщике задач Windows (автоматический запуск с правами SYSTEM при загрузке) и немедленно запускает ее.

    Set-ExecutionPolicy -Scope Process Bypass -Force
    .\setup.ps1
  2. run_server.bat устанавливает PORT=8734 и запускает server_ext.py (лог: server.log). LAW_API_OC не записывается непосредственно в этот файл, а загружается из локального файла, находящегося в .gitignore (local_env.bat — одна строка set LAW_API_OC=ваш_код_организации). Если этого файла нет, 8 инструментов Министерства законодательства не будут работать, но 6 базовых будут работать нормально.

  3. Установите Tailscale, войдите в систему и откройте внешний доступ по фиксированному адресу через Funnel.

    tailscale funnel --bg 8734
  4. Фактический URL MCP-сервера (фиксированный): https://desktop-ika1349.tail81ecba.ts.net/mcp

При изменении порта необходимо одновременно изменить PORT в run_server.bat и целевой порт в tailscale funnel. Не перенаправляйте этот порт напрямую на маршрутизаторе, используйте только Tailscale Funnel.

2-B. Развертывание на Railway (устаревшее)

Поскольку Procfile по-прежнему запускает python server.py, при развертывании на Railway будут доступны только 6 базовых инструментов, а 8 инструментов Министерства законодательства (server_ext.py) не будут включены. При исчерпании кредитов сервер просто останавливается, поэтому в настоящее время этот метод не рекомендуется, но он все еще работает.

  1. Загрузите эту папку в репозиторий GitHub.

  2. В Railway выберите "New Project" → "Deploy from GitHub repo".

  3. Railway распознает Procfile и автоматически запустит python server.py. (Переменная окружения PORT будет автоматически внедрена Railway.)

  4. После завершения развертывания адрес, состоящий из домена, выданного Railway, с добавлением /mcp, станет фактическим URL MCP-сервера.

3. Регистрация в Claude в качестве коннектора

  1. Зайдите на claude.ai → Профиль → Настройки (Settings) → Коннекторы (Connectors)

  2. Нажмите "Добавить пользовательский коннектор (Add custom connector)"

  3. Имя: любое желаемое имя (текущее имя рабочего коннектора: Korea nts)

  4. URL: введите адрес .../mcp, полученный на шаге 2, и сохраните (текущий рабочий адрес: https://desktop-ika1349.tail81ecba.ts.net/mcp)

  5. Установите разрешения инструментов на "Всегда разрешать" (значение по умолчанию "Требуется одобрение" будет запрашивать одобрение каждый раз)

  6. Откройте совершенно новый диалог и проверьте, отображаются ли инструменты в списке (сразу после включения нового коннектора он может не отобразиться в уже открытых диалогах)

4. Примеры использования (в чате Claude)

  • "Найди в Центре налогового законодательства разъяснения по запросам и прецеденты апелляций, связанные с зонами регулирования"

  • "Проверь, есть ли недавние решения Налоговой палаты по непризнанию сделок с нерыночными условиями. Только после 2024 года."

  • "Покажи полный текст прецедента 조심-2023-서-9465" (прямой запрос по номеру дела)

  • "Отфильтруй только по налогу на прирост капитала и покажи снова" (фильтр по налогу)

  • "Найди прецеденты апелляций по местным налогам, связанные с повышенным налогом на приобретение" (местные налоги → olta_ruling_search)

  • "Проверь, есть ли решения Счетной палаты, связанные с датой налогообложения налога на имущество" (местные налоги → olta_ruling_search)

  • "Найди все прецеденты апелляций по государственным и местным налогам, связанные с зонами регулирования, без дубликатов" (→ nts_and_olta_precedent_search)

  • "Найди примеры толкования законов по ликвидационным суммам" (→ law_interpretation_search)

  • "Покажи историю Указа о применении Закона о подоходном налоге" (→ law_history_search)

  • "Покажи статью 17 Закона о налоге на добавленную стоимость, действовавшую на 15 июля 2008 года" (→ law_article_as_of)

  • "Найди основные общие правила Закона о налоге на прибыль организаций" (→ admin_rule_search)

  • "Проверь дату вступления в силу налогового соглашения между Кореей и Гонконгом" (→ treaty_search)

  • "Найди постановление о льготах по налогу на приобретение в Сеуле" (→ ordinance_search)

5. Независимая проверка состояния сервера (без Claude)

Это скрипт для быстрого определения, является ли проблема проблемой самого сервера или проблемой со стороны Claude, когда инструменты не обнаруживаются в чате Claude. Он отправляет запросы непосредственно на сервер по протоколу MCP, минуя Claude, и проверяет весь поток: initialize → tools/list → tools/call.

python test_mcp_client.py

Значение URL в скрипте по умолчанию оставлено как адрес старого сервера Railway (https://web-production-10fe2.up.railway.app/mcp), но Railway больше не работает из-за исчерпания кредитов (см. 2-A). Для проверки текущего работающего сервера обязательно укажите фактический адрес с помощью --url.

python test_mcp_client.py --url https://desktop-ika1349.tail81ecba.ts.net/mcp
python test_mcp_client.py --url http://127.0.0.1:8734/mcp

Если все эти скрипты выполняются успешно, но инструменты не отображаются в чате Claude, причина не в сервере, а в проблеме распознавания/кэширования коннектора со стороны Claude. В этом случае попробуйте следующее.

  • Проверьте в совершенно новом окне чата (сразу после включения коннектора он может не отображаться в старом окне)

  • Настройки → Коннекторы, удалите этот коннектор и зарегистрируйте заново

  • Если всё ещё не работает, обратитесь в support.claude.com (возможна задержка отражения или баг на стороне платформы Claude)

Справочник параметров инструментов

Параметр

Описание

keyword

поисковый запрос (обязательно)

collections

ограничение области поиска. Если опущено — все.form (формы), statute (законодательство), ruling (предварительные ответы, письменные запросы, ответы на запросы), precedent (судебные решения, проверки, прецеденты), old_ruling (старые материалы толкования законов), intl (международное налоговое разъяснение), hometax (консультационные случаи HomeTax)

page

номер страницы (начиная с 1)

view_count

количество результатов на коллекцию (по умолчанию 20)

date_from / date_to

период поиска (YYYYMMDD)

sort

relevance (по релевантности, по умолчанию) / date_desc (сначала новые) / date_asc (сначала старые)

tax_type_filter

оставить только те, у которых в названии налога содержится эта строка (например: "налог на доходы от прироста капитала")

include_full_text

если false, то текст опускается, возвращается только краткое содержание (summary)

nts_ruling_get_by_doc_no

Параметр

Описание

doc_no

номер дела/документа. Например: 조심-2023-서-9465, 서면-2019-법규재산-4276, 기획재정부 재산세제과-73

Параметр

Описание

keyword

поисковый запрос (обязательно)

categories

ограничение области поиска. Если опущено — все.court (судебная практика судов), moi_ruling (официальное толкование Министерства внутренних дел и безопасности), mole_ruling (толкование Министерства законодательства), tax_tribunal (решения Налогового трибунала), audit (решения Счётной палаты), constitutional (решения Конституционного суда), local_gov_ruling (ответы на запросы местных органов власти)

view_count

максимальное количество результатов на категорию (по умолчанию 20). Из-за структуры сайта можно получить только несколько предварительных просмотров на категорию

tax_type_filter

оставить только те, у которых в названии налога содержится эта строка (например: "налог на приобретение", "налог на имущество")

Параметр

Описание

keyword

поисковый запрос (обязательно)

view_count

количество результатов из каждого источника (по умолчанию 20)

tax_type_filter

фильтр по виду налога

Возвращаемое значение включает nts_precedent, olta_precedent, duplicates_removed (фактическое количество удалённых дубликатов).

Параметр

Описание

keyword

поисковый запрос (обязательно)

category

указать одну категорию (обязательно): tax_tribunal, audit, constitutional, court, mole_ruling, moi_ruling

page

номер страницы (начиная с 1, на странице фиксировано 10 записей)

view_count

количество возвращаемых результатов (максимум 10)

date_from / date_to

период поиска YYYYMMDD (фильтр на стороне сервера)

sort

relevance (по релевантности) / date_desc (сначала новые) — сортировка на стороне сервера

olta_get_detail (просмотр текста местных налогов)

Параметр

Описание

category

tax_tribunal (Налоговый трибунал) или constitutional (Конституционный суд)

doc_id

значение doc_id из результата поиска

Возвращает полный текст решения, включая ключевые моменты, ссылки на законы, краткое изложение дела, соображения и т.д.

Параметр

Описание

keyword

поисковый запрос (обязательно)

court

"대법원" (Верховный суд) или "하위법원" (нижестоящие суды) (пусто = все)

date_from / date_to

диапазон дат вынесения решения YYYYMMDD

display

количество результатов (по умолчанию 10)

page

номер страницы

court_case_detail (server_ext.py)

Параметр

Описание

case_serial

판례일련번호 (серийный номер дела) из результата court_case_search

max_chars

максимальная длина содержания дела (по умолчанию 8000)

Параметр

Описание

keyword

поисковый запрос (используется, если не указан serial)

display

количество результатов (по умолчанию 10)

serial

серийный номер толкования — если указан, возвращает полный текст запроса, ответа и обоснования

Параметр

Описание

law_name

название закона (например: "Закон о налоге на добавленную стоимость")

law_id

ID закона для фильтрации только основного закона (предотвращает смешивание с одноимёнными указами о применении и правилами, например, Закон о налоге на добавленную стоимость = 001571)

current_only

если true, искать только действующие законы (для проверки ID закона/MST)

law_article_as_of (статья на определённую дату, server_ext.py)

Параметр

Описание

law_name

название закона (например: "Указ о применении Закона о подоходном налоге")

as_of_date

дата на момент YYYYMMDD (например, дата ответа на письмо)

article_no

номер статьи — "162" или формат дополнительной статьи "104의3" (без заполнения нулями)

law_id

фильтр по ID закона (рекомендуется — предотвращает смешивание основного закона и указа о применении)

max_chars

максимальная длина исходного текста (по умолчанию 6000). Если статья длиннее, в ответе будет указана полная длина в поле "잘림"; при повторном вызове с большим значением возвращается полный текст

Параметр

Описание

keyword

поисковый запрос (например: "Основные правила Закона о налоге на прибыль организаций", "Правила обработки расследований", "Правила валютных операций")

serial

серийный номер — если указан, возвращает текст

display

количество результатов (по умолчанию 10)

article

номер статьи — формат "9-5" (статья 9-5), "23", "23의2". Возвращает только указанную статью. Практически обязателен для крупных уведомлений (например, Правила валютных операций)

max_chars

максимальная длина текста (по умолчанию 10000). Если текст обрезан, в ответе будет указание "잘림"

start_char

смещение начала текста — для продолжения чтения, если номер статьи неизвестен

Параметр

Описание

keyword

поисковый запрос (например: "Соглашение между Республикой Корея и Соединёнными Штатами Америки о налогах")

serial

серийный номер соглашения — если указан, возвращает текст

display

количество результатов (по умолчанию 10)

Параметр

Описание

keyword

поисковый запрос (например: "Освобождение от налога на приобретение")

region

фильтр по названию местного органа власти (например: "Сеул", "Йонсангу")

serial

серийный номер — если указан, возвращает текст

display

количество результатов (по умолчанию 20)

Известные ограничения (по состоянию на v5)

  • 8 инструментов law.go.kr доступны только при запуске через server_ext.py. При отдельном запуске server.py отображаются только базовые 6.

  • Белый список IP-адресов law.go.kr: при вызове с незарегистрированного IP-адреса все 8 инструментов возвращают ошибку "Ошибка аутентификации". Необходимо сначала зарегистрировать публичный IP-адрес сервера в open.law.go.kr → История заявок OpenAPI.

  • Парсинг XML law.go.kr: ответ обрабатывается лёгким парсером на основе регулярных выражений. При изменении структуры ответа API (например, изменение имени тега) парсинг может нарушиться.

  • law_article_as_of: автоматически выбирает версию с максимальной датой вступления в силу, не превышающей указанную дату, среди исторических версий. Если существует несколько законов с одинаковым названием (основной закон, указ о применении, правила), без указания law_id может быть выбрана непреднамеренная версия.

  • Фильтр по виду налога NTS: при точном названии налога (14 видов, включая налог на доходы от прироста капитала, см. таблицу кодов в DATA_SOURCES.md) применяется фильтр на стороне сервера, при других строках — постобработка на стороне клиента.

  • Фильтр по дате NTS: подтверждено (измерениями), что в API общего поиска нет параметра даты, поэтому date_from/date_to обрабатываются фильтром на стороне клиента. Более стабильно использовать вместе с сортировкой по новизне (sort=date_desc).

  • Запросы на пересмотр в Счётную палату (национальные налоги): не входят в область действия этого сервера. (Решения Счётной палаты по местным налогам покрываются olta_ruling_search / olta_collection_search).

  • nts_ruling_get_by_doc_no: отдельный API детального просмотра не подтверждён, поэтому реализован путём использования номера документа в качестве поискового запроса.

  • Парсинг HTML OLTA: olta.re.kr отвечает в формате HTML, поэтому парсится с помощью BeautifulSoup. При изменении структуры страницы сайта (имена классов p.se_title, ul.search_out и т.д.) парсинг может нарушиться.

  • olta_ruling_search (общий поиск) возвращает только 3 предварительных просмотра на категорию. Если нужно больше результатов, используйте olta_collection_search (10 записей на страницу, поддерживает пагинацию, фильтр по дате, сортировку).

  • Просмотр текста olta_get_detail поддерживается только для Налогового трибунала и Конституционного суда. Судебная практика не поддерживается из-за структуры URL, требующей двух параметров; для официальных толкований используется краткое содержание (summary).

  • Ответы на запросы местных органов власти: кодовая таблица внутри olta.re.kr существует, но на экране результатов общего поиска не отображается, поэтому в настоящее время поиск невозможен.

  • Удаление дубликатов: система нумерации дел Налогового трибунала по национальным и местным налогам различается, поэтому фактическое дублирование не происходит, что подтверждено измерениями; удаление дубликатов на основе нормализации в nts_and_olta_precedent_search является мерой предосторожности.

F
license - not found
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • F
    license
    -
    quality
    D
    maintenance
    Enables real-time search and analysis of Korean laws, legal precedents, and administrative rules through the National Law Information Center Open API, allowing AI agents to access official legal information for contract review, compliance, and legal research.
    71
  • F
    license
    -
    quality
    B
    maintenance
    Enables AI to search and retrieve South Korean legal information from the National Law Information Center. It allows users to look up specific laws, articles, and detailed legal provisions using natural language queries.
    127
  • A
    license
    A
    quality
    D
    maintenance
    Enables users to search and retrieve South Korean statutes, precedents, and administrative rules via the National Law Information Center API. It supports deep legal chain analysis, legislative history tracking, and legal terminology lookups through natural language.
    10
    4
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables searching and retrieving tax law data from the Korean National Tax Service database, including interpretations, rulings, forms, publications, and site menus via MCP tools.
    14
    1
    MIT

View all related MCP servers

Related MCP Connectors

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

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

  • Search company disclosures and financial statements from the Korean market. Retrieve stock profile…

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/taxwoong/nts-tax-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server