Skip to content

全体構成と責務

3 層の分担

共有ライブラリ層 — houki-abbreviations

全 MCP が import する辞書です。「消基通」を「消費税法基本通達」に、「法人税法」を法令 ID 340AC0000000034 に解決します。 どの MCP がそのエントリを扱うかを示す source_mcp_hint を持ち、 管轄外の略称を渡された MCP は、本文を取りに行かずに「houki-nta-mcp に聞いてください」という案内を返します。

全角・半角のゆらぎ(「第1条」と「第1条」)を吸収する正規化も、この層に一本化しています。 データベースへの取り込み時と検索時に同じ関数を通すので、片方だけ揃わないことがありません。

MCP 層 — 一次資料を取りに行く

各 MCP サーバーは独立した npm パッケージで、単独で動きます。 houki-egov-mcp だけを入れて条文を引くこともできますし、houki-nta-mcp だけで通達を引くこともできます。

MCP 層が決めることと決めないことを分けています。

決めること決めないこと
取得元 URL、法令番号、条・項・号、通達番号質問者の事案にその条文が当てはまるか
取得日時と鮮度(freshness複数の法令のどれを優先するか
通達の法的な位置づけ(legal_status業法上の注意喚起をするかどうか
引数の検証結果(INVALID_ARGUMENT

Skill 層 — houki-research

LLM が読む手順書です。次の 4 つの正典を持ちます。

  • 横断の手順: 「まず略称を解決し、法令本文は houki-egov-mcp、通達は houki-nta-mcp、両方引いたら法令を上位に置く」という順序
  • citation の書式: 法令は「法令名(法令番号)第 N 条第 M 項」、通達は「通達名 N-M」、いずれも取得元 URL を添える
  • error contract: 全 MCP が返すエラーコードの語彙(UNKNOWN_TOOL / INVALID_ARGUMENT / INTERNAL_ERROR / ARTICLE_NOT_FOUND など)と、それぞれで LLM が取るべき行動
  • 業法独占規定: 質問が「個別事案への当てはめ」に踏み込みそうなときの注意喚起文と、資格者への案内

法令と通達を区別する

houki-hub が一貫して守っている区別が 1 つあります。

国民・裁判所を拘束するか取得元応答での印
法律・政令・省令するe-Gov 法令 API(houki-egov-mcp)law_type
通達・Q&A・タックスアンサーしない(行政内部の解釈指針。最高裁昭和 43 年 12 月 24 日判決)国税庁サイト(houki-nta-mcp)legal_status

houki-nta-mcp は通達を返すたびに legal_status を付けます。LLM が「通達にこう書いてある」を「法律でこう決まっている」と言い換えないようにするためです。

この 2 つは「基準」の内部の階層です。1 つの層に潰すと、「通達に書いてあるから可」という判定が作れてしまいます。

判定はコードが、説明は LLM が

引数の検証、鮮度の判定、通達の位置づけの付与は、すべて MCP サーバーのコードが決定論的に行います。 LLM は結果を受け取り、出典を添えて説明する側に置きます。 この分担は PDF Agent Stack と同じです。

4 つ目の行き先 — 系の外に置く

判定の置き場所は「コード / 判定不能 / LLM」の 3 つではありません。houki-hub には 4 つ目があります。

行き先いつ選ぶか
コード基準が事前に書ける引数の検証、鮮度の判定、legal_status の付与
判定不能として返す基準が書けない、または測れなかった一次情報を取得できなかったとき
LLM選びません
系の外(人間の専門家)基準は書けるが、系が判定してはいけない当てはめ

当てはめの基準は、条文と通達に書いてあります。書けないから外しているのではありません。外す理由は弁護士法 72 条・税理士法 52 条・社労士法 27 条です。基準が整備されれば将来は系が判定してよくなる、というものではありません。

何を返し、何を返さないかは 免責事項と利用範囲 にあります。

各部品の技術構成(2026-09-07 時点)

houki-egov-mcphouki-nta-mcphouki-abbreviations
MCP SDK@modelcontextprotocol/server v2同左
Node22 以上22 以上20 以上
ローカル DBSQLite FTS5(bulk 取り込み後)SQLite FTS5
lint / formatBiomeBiomeESLint + Prettier
エラー応答family contract(isError: true + code同左

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