Skip to content

houki-nta-mcp ​

国税庁(NTA)公式サイトの 基本通達・改正通達・事務運営指針・文書回答事例・タックスアンサー・質疑応答事例 を ローカル SQLite に取り込み、FTS5 で全文検索する MCP サーバーです。 法律本文(法・政令・省令)は houki-egov-mcp が担当します。

扱うコンテンツ ​

コンテンツ内容legal_status
基本通達 4 種消費税法基本通達・所得税基本通達・法人税基本通達・相続税法基本通達税務職員を拘束する行政内部の解釈指針。国民・裁判所は拘束しない
改正通達各年の改正通達と添付 PDF(新旧対照表など)同上
事務運営指針税務執行の運営方針同上
文書回答事例事前照会に対する国税庁・国税局の回答個別の事案への回答。一般的な法的拘束力はない
タックスアンサー一般向けの税務 Q&A参考情報
質疑応答事例国税庁が公表する解釈事例参考情報

すべての応答に legal_status が付きます。通達に書いてあることを「法律で決まっている」と言い換えないためです。 通達と解説資料がほかの種類の文書(法律・政令・裁決・判例など)と比べて誰を拘束するかは、文書の種類と拘束力 にまとめています。

基本通達と、解釈の対象になる法律 ​

通達は国民と裁判所を拘束しないので、根拠は法律の条文で確かめる必要があります。 基本通達 4 種が解釈している法律と、その政令・省令は次のとおりです。いずれも houki-egov-mcp の get_law に law_name として渡すと本文を引けます(2026-09-11 に search_law で 12 件とも見つかることを確認)。

基本通達法律政令省令
消費税法基本通達消費税法消費税法施行令消費税法施行規則
所得税基本通達所得税法所得税法施行令所得税法施行規則
法人税基本通達法人税法法人税法施行令法人税法施行規則
相続税法基本通達相続税法相続税法施行令相続税法施行規則

v0.11.0 から、この対応が応答に入ります(houki-nta-mcp#20)。

ツール付くフィールド中身
nta_get_tsutatsubase_lawsその通達の法律・政令・省令の配列。Markdown 応答では出典の後に「解釈の対象になる法律: …」の行が入ります
nta_search_tsutatsubase_laws_by_tsutatsu検索結果に現れた通達ごとの対応表。対応は通達単位なので、hit ごとではなく応答に 1 回だけ置きます

どちらの応答にも next_actions が付き、example に houki-egov-mcp の get_law に渡す法律名が入っています。検索では通達ごとに 1 件です。 通達の項と法律の条の対応は一律ではないため、応答にもこの表にも条番号は入りません。通達の本文にある「法第57条の2第4項」のような参照を読んで、get_law の article を指定してください。

ツール ​

引数の詳細と実測の呼び出し例はツールのページに、ツールが何をし、何を扱わないかは仕様書ページにあります。一覧はツールリファレンスにもあります。

ツールのページ一言仕様書ページ
nta_search_tsutatsu基本通達を全文検索します仕様
nta_get_tsutatsu基本通達の本文を取得します仕様
nta_search_kaisei_tsutatsu改正通達を検索します仕様
nta_get_kaisei_tsutatsu改正通達を取得します。添付 PDF は種別(新旧対照表・別紙・Q&A など)に分類して表で返します仕様
nta_search_jimu_unei事務運営指針を検索します仕様
nta_get_jimu_unei事務運営指針を取得します仕様
nta_search_bunshokaitou文書回答事例を検索します仕様
nta_get_bunshokaitou文書回答事例を取得します仕様
nta_search_tax_answerタックスアンサーを検索します仕様
nta_get_tax_answerタックスアンサーを取得します仕様
nta_search_qa質疑応答事例を検索します仕様
nta_get_qa質疑応答事例を取得します仕様
nta_inspect_pdf_meta文書に添付された PDF の一覧に、種別と読み方(表として取る / 本文として読む / 先頭を見て決める、紙面の組み方)を付けて返します。save: true で PDF を保存して絶対パスを返し、next_actions に pdf-reader-mcp の呼び出し例と、他の PDF 読み取りツール向けの 1 件を置きます。本文は読みません(v0.19.0)仕様
resolve_abbreviation略称の解決を診断します仕様

検索ツールは hasPdf で PDF 付きの文書だけに絞れ、応答に freshness(取り込みからの経過)が付きます。nta_search_qa は topic(shotoku・shohi などの税目)で絞り込めます(v0.13.0 から)。

引数は tools/list の inputSchema どおりに渡してください。v0.14.0 から、inputSchema に無い引数は INVALID_ARGUMENT になります。nta_search_tsutatsu の type と domain は、絞り込みに使われていなかったので v0.14.0 で削除しました。

文書回答事例の taxonomy は URL の税目フォルダ名です。国税局のページは本庁と違う名前を使うことがある(相続税は sozoku と souzoku、源泉所得税は gensen と gensenshotoku、譲渡所得・山林所得は joto-sanrin と joto_sanrin)ため、v0.14.0 からはどちらを指定しても両方を検索します。

キーワードが略称辞書に載っている場合の扱いは次のとおりです(v0.11.1 から)。

キーワード例検索のしかた
略称そのもの「消基通」「消法」元の語と正式名(消費税法基本通達・消費税法)の両方で検索します
通称「インボイス」「軽減税率」「適格請求書発行事業者」元の語で検索し、0 件のときだけ正式名(消費税法)で検索し直します。そのときは search_notes にその旨が入ります

通称で常に正式名まで広げると、「消費税法」という語が出てくるだけの文書が混ざり、キーワードを含む文書が limit から押し出されるためです(houki-nta-mcp#21)。

質疑応答事例の関係法令通達 ​

質疑応答事例は国税庁の参考資料で、誰も拘束しません。回答の根拠は、各ページの【関係法令通達】に挙がっている法律と通達で確かめます。 v0.12.0 から、nta_get_qa を format: "json" で呼ぶと、この欄を法令と通達に分けて返します(houki-nta-mcp#22)。

フィールド中身
related_laws法令の参照。law_name・article・paragraph・item(別表の場合は appendix)と、原文の raw
related_tsutatsu通達の参照。name・clause と、原文の raw
next_actionshouki-egov-mcp の get_law と nta_get_tsutatsu に渡す引数の例
notice / basisDateページ下部の国税庁の注記と、その基準日(例: 2025-08-01)

「所得税法第27条、第34条、第37条」のように法令名を省いて続く条番号は、直前の法令名を補って読みます。枝番号の号(「法人税法第2条第12号の8」)は、v0.14.0 から item: "12の8" の文字列で入り、next_actions の get_law にも渡ります(houki-egov-mcp v0.6.0 以上が必要です)。【関係法令通達】の原文は、これまでどおり relatedLaws に残ります。

次の参照は related_laws や related_tsutatsu には入りますが、next_actions は付きません。

参照理由
租税条約e-Gov の法令 API では引けないため
「旧」「改正前」の付いた条文どの時点の条文かが応答から決まらず、get_law の at に渡す日付を示せないため
条番号の無い法令get_law に渡す条を決められないため
基本通達 4 種以外の通達(租税特別措置法関係通達など)nta_get_tsutatsu が扱わないため

v0.12.0 で取り込んだ 1,834 件の【関係法令通達】を区切ると 5,059 個の参照になり、そのうち 94.2% を法令か通達として読み取れました。読み取れなかった参照は、relatedLaws の原文にだけ残ります。

v0.11.1 までに作った DB

ページ下部の注記は、v0.11.1 までは【関係法令通達】(その欄が無いページでは【回答要旨】)に混ざっていました。v0.11.1 までに作ったローカル DB では、「異なる課税関係が生ずる」のような注記の文言で、ほぼ全件の質疑応答事例がヒットします。houki-nta-mcp --bulk-download-qa --refresh で取り込み直してください。取り込み直すとほぼ全件の本文が変わるため、最後に「構造変質の疑い」の警告が出ますが、解析方法を変えたためで、国税庁のページが変わったわけではありません。

検索が 0 件のとき ​

文書系の検索 5 ツール(nta_search_qa・nta_search_tax_answer・nta_search_kaisei_tsutatsu・nta_search_jimu_unei・nta_search_bunshokaitou)は、0 件になった理由を分けて返します(v0.13.0 から。houki-nta-mcp#23)。

DB の状態応答
その種別の文書が DB に 1 件も無いエラー DOC_NOT_FOUND。「該当なし」という検索結果ではないことを示します。hint に MCP サーバーが開いている DB ファイルのパスと投入コマンドが入ります
税目の絞り込みの範囲に文書が無いresults: []。available_taxonomies に、DB にある税目の一覧が入ります
hasPdf の条件に合う文書が無いresults: []。hasPdf を外すよう案内します
文書はあるが、キーワードに合わないresults: []。hint に「該当なし」と検索した件数(例: 「DB の質疑応答事例 1,841 件に」)が入ります

LLM が results: [] を受け取ったときは「国税庁の資料にこの語を含む文書は無い」と読めますが、DOC_NOT_FOUND のときは検索そのものができていないので、そう答えてはいけません。 その種別を投入していない、--bulk-download-everything の途中でその種別だけ失敗した、bulk download を実行したシェルと MCP サーバーとで環境変数 HOUKI_NTA_DB_PATH / XDG_CACHE_HOME が違う、のいずれかです。

v0.12.0 までは、どの場合も「DB 投入済みか確認してください」という同じ hint だったため、文書が入っている DB でも投入をやり直すよう案内していました。 また、v0.12.0 までの nta_search_qa は domain を指定すると必ず 0 件でした。v0.13.0 からは domain: "tax" は絞り込まずに検索し、税目で絞るときは topic を使います。

docId が見つからないとき ​

取得系の 3 ツール(nta_get_kaisei_tsutatsu・nta_get_jimu_unei・nta_get_bunshokaitou)は DB だけを見ます。指定された docId が DB に無いとき、理由を 2 つに分けて返します(v0.14.1 から)。

DB の状態応答
その種別の文書が DB に 1 件も無い「ローカル DB に◯◯が 1 件も無いため、docId=… を取得できません」。hint に DB ファイルのパスと環境変数、next_actions に投入コマンド(action は cli_bulk_download)
文書はあるが、その docId が無い「◯◯ docId=… は見つかりません」。available_doc_ids(新しい順に 30 件。docId・title・issuedAt)と、検索ツールへの next_actions

v0.14.0 までは、どちらの場合も「DB に未投入です」と返して投入コマンドを案内していたため、docId を打ち間違えただけの利用者にも投入をやり直すよう勧めていました。検索が 0 件のときの分け方(上の節)と同じ考え方です。

LLM は next_actions[0].action を見て、cli_bulk_download なら投入を案内し、検索ツール(nta_search_*)なら available_doc_ids から選ぶか検索して docId を探し直します。

ローカル DB ​

国税庁は、通達や質疑応答事例を機械可読な形で配布していません。公開されているのは HTML のページだけです。 houki-nta-mcp のローカル DB は、そのページを 1 件ずつ取得し、章・節・条や文書の単位に構造化して保存したものです。 この DB が、国税庁の資料を構造化した唯一の形です。houki-egov-mcp と違い、その場で呼べる API はありません。

早見表 ​

項目内容
取得元国税庁サイトの HTML ページを 1 ページずつ。機械可読な配布データはありません
DB ファイル${XDG_CACHE_HOME:-~/.cache}/houki-nta-mcp/cache.db(--db-path=<path> か HOUKI_NTA_DB_PATH で変えられます)
テーブル基本通達は tsutatsu chapter section clause、ほかの 5 種別は document。全文検索の索引は clause_fts document_fts(FTS5 trigram)
鮮度の持ち方行ごとの fetched_at。応答の freshness は、その検索が見た範囲の最古・最新と経過日数です
更新の粒度節(基本通達)と文書(ほかの 5 種別)ごと。再実行では条件付き GET を使い、変わっていないページは取得しません
DB が要るツール14 のうち 9(検索 6 つと、改正通達・事務運営指針・文書回答事例の取得 3 つ)。nta_get_tsutatsu nta_get_qa nta_get_tax_answer は DB が無くても動きます
版が上がったとき起動時に自動で移行します。国税庁サイトへの再アクセスはありません(v0.15.0・v0.16.0・v0.17.0 の 3 回)

各項目の詳細は以下の各節にあります。

ローカル DB を作っていないとき ​

検索はできません。取得は 6 つとも DB を先に引きますが、DB に無かったときの動きが 2 通りに分かれます。

ツールローカル DB を作っていないとき
nta_search_tsutatsu nta_search_qa nta_search_tax_answer nta_search_bunshokaitou nta_search_jimu_unei nta_search_kaisei_tsutatsuその種別が DB に 1 件も無ければエラー DOC_NOT_FOUND を返します。「該当なし」ではありません
nta_get_tsutatsu nta_get_qa nta_get_tax_answer国税庁サイトから取得して DB に書き戻します。応答の source が "db" か "live" かで、どちらから返したか分かります
nta_get_kaisei_tsutatsu nta_get_jimu_unei nta_get_bunshokaitou nta_inspect_pdf_metaDOC_NOT_FOUND を返し、投入するコマンドを案内します(nta_inspect_pdf_meta は添付 PDF の一覧を DB の文書から読むため)
resolve_abbreviationDB を使いません

改正通達・事務運営指針・文書回答事例の 3 つが国税庁サイトへ取りに行かないのは、docId から個別ページの URL を組み立てるのに税目フォルダの世代差(sozoku と sozoku2 など)を解く必要があるためです。

v0.15.0 までは、nta_get_qa と nta_get_tax_answer が DB を引かずに毎回国税庁サイトから取得していました。v0.16.0 で nta_get_tsutatsu と同じ形に揃えています(houki-nta-mcp #29)。

v0.15.0 以前に作った DB のとき

質疑応答事例とタックスアンサーを DB から返すには、本文だけでなく段落や節の構造も保存しておく必要があります。この保存は v0.16.0 から始まったので、それ以前に作った DB では最初の 1 回だけ国税庁サイトから取得し、その結果を DB に入れます。2 回目からは DB から返ります。--bulk-download-qa と --bulk-download-tax-answer を回しても埋まります。

作り方 ​

DB を作る・最新にする・作り直す流れは次のとおりです。各コマンドの説明はこの後に続きます。

初めて入れたときは、通達 1 本だけを入れて動くことを確かめてください(v0.18.0)。

sh
npx -y @shuji-bonji/houki-nta-mcp@latest --quickstart

消費税法基本通達 1 本を約 3〜5 分で取り込みます。終わると、その通達に対して nta_search_tsutatsu と nta_get_tsutatsu が使えます。別の通達にしたいときは --quickstart --tsutatsu=所得税基本通達 のように指定します。--tsutatsu に渡せるのは、基本通達 4 種(消費税法基本通達・所得税基本通達・法人税基本通達・相続税法基本通達)の正式名だけです。略称(消基通 など)やほかの通達の名前を渡すと、取り込みを始めずに、使える値を表示してエラー(終了コード 2)で終わります(SPEC-NTA-CLI-BULK-DOWNLOAD-011)。

6 種別をまとめて取り込むときは次を実行します。国税庁サイトを 1 ページずつ取りに行くので約 100 分かかります。開始前に、種別ごとの件数と所要時間の目安を表示します。

sh
npx -y @shuji-bonji/houki-nta-mcp@latest --bulk-download-everything

必要な種別だけを先に入れることもできます。所要時間は --help の記載です。--help は「まず試す → 種別を足す → 全部入り → 保守」の順に並んでいます。

コマンド対象目安
--quickstart通達 1 本(既定: 消基通。--tsutatsu=<正式名> で変更。基本通達 4 種だけ)約 3〜5 分
--bulk-download-everything6 種別すべて。開始前に目安を表示約 100 分
--bulk-download-all基本通達 4 種(消基通・所基通・法基通・相基通)10〜15 分
--bulk-download--tsutatsu=<正式名> で指定した 1 つの通達(基本通達 4 種だけ)—
--bulk-download-kaisei改正通達(基本通達 4 種分の一覧)—
--bulk-download-jimu-unei事務運営指針—
--bulk-download-bunshokaitou文書回答事例全税目で 30 分超
--bulk-download-tax-answerタックスアンサー 約 850 件約 15 分
--bulk-download-qa質疑応答事例 9 税目・2,000 件超—

税目を絞って投入する ​

文書回答事例・タックスアンサー・質疑応答事例は件数が多いので、税目で絞ると短時間で終わります。渡せる値は次のとおりです。

フラグ使える値
--bunsho-taxonomy(文書回答事例)shotoku / gensen / joto-sanrin / sozoku / zoyo / hyoka / hojin / shohi / shozei / sonota(国税局の表記 souzoku / gensenshotoku / joto_sanrin も可)
--tax-answer-taxonomy(タックスアンサー)shotoku / gensen / joto / sozoku / hojin / shohi / inshi / osirase
--qa-topic(質疑応答事例)shotoku / gensen / joto / sozoku / hyoka / hojin / shohi / inshi / hotei
sh
# 消費税と所得税の文書回答事例だけ
npx -y @shuji-bonji/houki-nta-mcp@latest --bulk-download-bunshokaitou --bunsho-taxonomy=shohi,shotoku

# 消費税のタックスアンサーだけ
npx -y @shuji-bonji/houki-nta-mcp@latest --bulk-download-tax-answer --tax-answer-taxonomy=shohi

v0.14.2 から、一覧に無い値を渡すと、何も投入せずに使える値を表示して終了します(終了コード 1)。--help にも同じ一覧が出ます。v0.14.1 までは値を見ていなかったため、税目を打ち間違えても 0 件のまま正常終了していました(houki-nta-mcp#25)。

--bunsho-taxonomy の絞り込みは本庁の索引(/law/bunshokaito/01.htm)の節に対して行うので、sozoku と souzoku のどちらを渡しても同じ節の文書が入ります。その節には国税局のページへのリンクも並ぶため、DB には両方の表記が入ります。

元データが変わったときに何が起きるか ​

国税庁サイトのページは、書き換えられることも、索引から外れることもあります。 bulk download を実行し直すと、国税庁の索引と DB を突き合わせて、種別ごとに 4 つに分けて数えます。

索引から消えた文書を削除しないのは、国税庁サイトから外れても、過去の課税期間の判断では意味を持つ通達があるためです。

消えた文書は印を付けて残し、検索と取得の応答で現行の文書と区別できます(v0.17.0)。詳しくは国税庁の索引から消えた文書を参照してください。

「更新」が索引の件数の 50% を超えると、bulk download の最後に「構造変質の疑い」の警告が出ます。 国税庁がページの作りを一斉に変えたか、houki-nta-mcp の解析方法が変わったか、どちらかが起きたことを示します。 houki-nta-mcp 側で解析を変えた直後は、国税庁のページが変わっていなくてもこの警告が出ます。

取り直す ​

節ごとに fetched_at を持っているので、古いものだけを選んで取り直せます。まず対象を一覧で確かめ、それから実行します。

sh
# 30 日以上古い節を一覧する(この時点では何も取得しません)
npx -y @shuji-bonji/houki-nta-mcp@latest --refresh-stale=30

# 実際に取り直す
npx -y @shuji-bonji/houki-nta-mcp@latest --refresh-stale=30 --apply

--refresh は既存のデータを消します

全部を入れ直すときは --refresh を付けます。既存のデータを消してから取り直すので、最初の投入と同じだけ時間がかかります。

sh
npx -y @shuji-bonji/houki-nta-mcp@latest --bulk-download-everything --refresh

--refresh を付けずに再実行したときは、国税庁サイトが 304 Not Modified を返す節を飛ばすので短時間で終わります。 本文の解析だけをやり直したいとき(v0.10.0 以前の DB に算式画像のプレースホルダを入れる場合など)は --refresh を使います。

国税庁の索引から消えた文書 ​

bulk download を再実行したときに国税庁の索引から消えていた文書を、DB からは消しません。索引から外れても、過去の課税期間の判断では依然として意味を持つ通達があるためです。

代わりに、消えたことを最初に確認した日時を記録し、応答で現行の文書と区別できるようにしています(v0.17.0)。

応答付くもの
nta_search_*各件に index_status: "removed_from_index" と orphaned_at。search_notes に「N 件のうち M 件は索引から外れています」の 1 行
nta_get_*index_status と orphaned_at に加えて notice(現在の取扱いは最新の通達で確認する旨)

検索結果から除外はしません。過去の期間を調べたい利用者が引けなくなるためです。印は --bulk-download-* を実行したときに付け外しします。索引に戻っていれば外れ、税目フォルダの世代移行で URL が変わっただけの文書には付きません。

印が付いた文書の sourceUrl は 404 になることがあります。本文はローカル DB に残っているので、nta_get_* では読めます。

置き場所 ​

既定は ${XDG_CACHE_HOME:-~/.cache}/houki-nta-mcp/cache.db です。 --db-path=<path> か、環境変数 HOUKI_NTA_DB_PATH で変えられます。

bulk download を実行したシェルと MCP サーバーとで HOUKI_NTA_DB_PATH や XDG_CACHE_HOME が違うと、 投入したはずの種別が DOC_NOT_FOUND になります。検索の応答の hint には、MCP サーバーが開いている DB ファイルのパスが入ります。

パッケージを更新したとき ​

DB はパッケージの更新で消えません。保存の形が変わったときは、起動時に移行します。

版起きること
v0.15.0v0.14.2 以前に作った DB は、最初の起動時に一度だけ文字列を入れ直します(全角英字の正規化)。国税庁サイトへの再アクセスはありません
v0.16.0質疑応答事例とタックスアンサーの構造を保存する列が増えます。既存の行は空のままで、nta_get_qa / nta_get_tax_answer が引いたときか、次の --bulk-download-qa / --bulk-download-tax-answer で埋まります。移行そのものでは国税庁サイトへ行きません
v0.17.0索引から消えたことを記録する列が増えます。既存の行は「索引にある」状態で残ります。印が付くのは次の --bulk-download-* のときで、移行そのものでは国税庁サイトへ行きません

各版で何が変わったかは、リポジトリの CHANGELOG にあります。

国税庁サイトの変更への備え ​

国税庁サイトは URL の世代が変わることがあります(sozoku → sozoku2、hyoka → hyoka_new など)。 --health-check で取得先が生きているかを確かめ、--check-baseline-drift で menu.htm を正典に世代移行を事前に検知します。 存在しないページが 404 ではなく /error/404.htm に着地する場合も、本文として取り込まずに失敗として扱います。

PDF Agent Stack との組み合わせ ​

改正通達の新旧対照表は PDF で提供されます。houki-nta-mcp は PDF の本文を読みません。nta_inspect_pdf_meta が、PDF ごとの読み方(read_strategy: 表として取る / 本文として読む / 先頭を見て決める、layout_note: 紙面の組み方)と、save: true で保存したファイルの絶対パス(saved[].path)を返します。

読み手は決めていません。pdf-reader-mcp があれば、next_actions の呼び出し例(保存済みなら extract_tables に file_path、未保存なら read_url に url)をそのまま渡せます。無ければ、saved[].path か url を使っている PDF 読み取りツールに渡し、layout_note のとおりに読みます(v0.19.0。経緯は houki-nta-mcp #36 と docs/DECISIONS.md の 2026-09-21)。

利用範囲と通達の法的な位置づけは免責事項と利用範囲と、リポジトリの DISCLAIMER.md を参照してください。

houki-nta-mcp は family の中で最も長く開発しており、他の MCP サーバーの参照実装になっています (正規化を取り込み時と検索時の両方で通す、freshness と legal_status を必ず付ける、取得先の変更を検知する、など)。

本サイトの内容は調査の出発点であり、法的助言ではありません。個別の事案は資格を持つ専門家に相談してください。免責事項と利用範囲