Skip to content

houki-egov-mcp ​

日本の法令(憲法・法律・政令・省令・規則)を e-Gov 法令 API v2 経由で取得する MCP サーバーです。 条文をキーワード・略称・分野で検索し、特定の条・項・号を Markdown または JSON で取り出し、改正履歴を引けます。

ツール ​

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

ツールのページ一言仕様書ページ
search_law法令名でキーワード検索します。略称(「法人税法」「個情法」)は正式名に解決してから検索します仕様
get_law条・項・号の単位で本文を取得します。Markdown / JSON / 目次のみ、を選べます。枝番号の号は item: "8の2" のように文字列で指定します(v0.6.0 から)仕様
get_toc目次だけを取得します。長い法令で本文を読む前に構造を掴むためのものです仕様
get_law_range編・章・節・款・目のいずれか、または附則 1 本を範囲にして、その中の条を本文ごと取得します仕様
get_law_revisions改正履歴(公布日・施行日・状態)を取得します仕様
search_fulltext条文本文を横断して全文検索します。ローカル DB が必要で、無いときは search_law の結果を source: "api-fallback" として返します仕様
resolve_abbreviation略称が正式名と法令 ID にどう解決されるかを診断します仕様
explain_law_type法令の種別(憲法・法律・政令・省令・通達など)と、それぞれの拘束力を説明します仕様
get_related_laws法令名から施行令・施行規則(施行令からは親の法律)を、e-Gov に実在するものだけ law_id 付きで返します。名前の末尾に「施行令」「施行規則」を付けた候補だけを試します(v0.10.0 から)仕様
get_article_references条文本文が引いている他法令の条(law_id 付き)、同一法令内の条・項・号、「政令で定める」の委任先を取り出し、get_law の引数を next_actions に付けます。「前項」「同法」は解決しません(v0.10.0 から)仕様
verify_citationsLLM が組み立てた法令の引用の一覧を、1 回の呼び出しでまとめて実在確認します仕様
list_attachments法令に付いている添付ファイル(別表・様式・別記の図)の一覧を返します仕様
get_attachment添付ファイル 1 件か、その法令履歴の添付ファイルをまとめた zip の URL を返します。save: true のときはファイルを保存して絶対パスを返します仕様
get_law_file法令本文を 1 つのファイル(xml / json / html / rtf / docx)で取る URL を返します。save: true のときはファイルを保存して絶対パスを返します仕様

全文検索のためのローカル DB ​

search_fulltext は、e-Gov が配布する全法令の一括データを手元の SQLite(FTS5)に取り込み、そこを検索します。 この DB は、公式の配布データの写しと、その全文検索の索引です。原本は e-Gov 側にあります。

早見表 ​

項目内容
取得元e-Gov が配布する全法令の一括データ(zip 約 290 MB)を 1 本。ほかの 13 ツールは e-Gov 法令 API v2 をその場で呼びます
DB ファイル${XDG_CACHE_HOME:-~/.cache}/houki-egov-mcp/laws.db(HOUKI_EGOV_DB_PATH で変えられます。コマンドライン引数での指定はありません)
テーブルlaws articles revisions_meta sync_state。全文検索の索引は laws_fts articles_fts(FTS5 trigram)
鮮度の持ち方DB 全体で 1 つ(sync_state は 1 行)。--status で確かめられます
更新の粒度日ごとの差分(--sync、v0.8.0+)。最終同期日から今日までの日次差分 zip を順に取り込みます。全件の再実行でも版ごとに content_hash を比べ、変わった版だけ入れ直します
DB が要るツール14 のうち 1(search_fulltext)。DB が無いと法令名の一致で返り、source: "api-fallback" が付きます
版が上がったとき0.19.0 で DB の版を 3 にしました。0.18.x 以前に作った DB は --bulk-download-everything で作り直します。作り直した DB を 0.18.x 以前で開くと全テーブルが消えます(版をまたぐときの注意)

各項目の詳細は以下の各節にあります。DB を作る・最新にする・作り直す流れは次のとおりです。

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

search_fulltext は呼べて、応答も返ります。ただし、返ってくるものが条文の全文検索の結果ではなくなります。

ローカル DBsearch_fulltext が返すもの
ある条文の本文を横断した全文検索の結果。ヒットごとに条番号・snippet・score・freshness が付きます
無いsearch_law と同じ法令名の一致の結果。source: "api-fallback" が付き、next_actions に DB の作り方が入ります

ほかの 13 ツール(search_law・get_law・get_toc・get_law_range・get_law_revisions・resolve_abbreviation・explain_law_type・get_related_laws・get_article_references・verify_citations・list_attachments・get_attachment・get_law_file)は e-Gov 法令 API をその場で呼ぶので、DB の有無に関係なく同じように動きます。

作り方 ​

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

全法令の zip(約 290 MB)を 1 本取得して取り込みます。進み具合は標準エラー出力に出ます。 書き込むのはこの CLI だけで、MCP サーバーは読むだけなので、取り込み中に検索しても壊れません。

最新にする ​

sh
npx -y @shuji-bonji/houki-egov-mcp@latest --sync

sync_state の最終同期日から今日までの日次差分 zip(1 日分は数十 KB〜30 MB)を日付順に取り込みます(v0.8.0+)。 実測では、12 日ぶんの差分(341 件)を 2 分 50 秒で取り込めました(2026-09-19、全件取り込み後の DB に対して)。 差分が無い日(土日など)は飛ばし、途中で失敗しても成功した日までを記録するので、再実行すると続きから同期します。 最終同期から 90 日を超えて空いているときは、e-Gov の日次差分の公開範囲を超えるため、何もせずに --bulk-download-everything を促します。 --status の days_since_sync が 0 でないときに実行してください。

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

法令が改正されると、e-Gov の配布データにその法令の新しい版が入ります。 --sync はその日の差分 zip から新しい版を取り込み、同じ法令の施行日が前の版を PreviousEnforced にします。 --bulk-download-everything を実行し直す場合も、版ごとに content_hash を比べて、変わった版だけを入れ直します。 中身が同じ版でも、未施行だった版が施行済みとして届いたときは、版の状態だけを書き換えます(v0.19.1 から。下の「施行日の当日に状態が変わる版」)。

古い版の行は DB に残りますが、検索には出ません。 search_fulltext は current_revision_status = 'CurrentEnforced' OR remain_in_force = 1 で現行の版に絞るためです。 過去の版を見たいときは、get_law_revisions で改正履歴を引いてください。

施行日の当日に状態が変わる版 ​

e-Gov は、改正が公布された日の差分に、施行日ごとの版を未施行として入れます。施行日の当日の差分には、同じ版を同じ中身のまま、施行済みとしてもう一度入れます。 v0.19.1 は、この版の状態だけを UnEnforced から CurrentEnforced にし、同じ法令の施行日が前の版を PreviousEnforced にします。条の本文は入れ直しません。 状態を書き換えた版があると、取り込みの件数の後に 状態の更新: <件数> 件 (…) の行が出ます。

v0.19.0 はこの版を「中身が同じ」として飛ばしていたので、施行日を過ぎても版が未施行のまま残り、search_fulltext が改正前の条文を返し続けることがありました(houki-egov-mcp #107)。

v0.19.0 で 2026-10-04 以降に --sync した DB

v0.19.0 で 2026-10-04 以降に --sync した DB は、v0.19.1 に上げた後に次のコマンドを 1 回実行してください。未施行のまま残った版の状態を直します(条の本文は入れ直しません。全件の zip 約 290 MB を取得します)。

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

v0.19.1 の --sync や --status が [WARN] 施行日が last_sync_date … を出したときも同じです。 このコマンドが要る DB の正確な範囲は、リポジトリの docs/NOTES.md にあります。

同期の状態を見る ​

sh
npx -y @shuji-bonji/houki-egov-mcp@latest --status

DB のパス、laws と articles の件数、最後に同期した日付、経過日数、fresh / stale / outdated の判定を表示します。 まだ取り込んでいなければ、その旨と実行するコマンドが出ます。 鮮度は DB 全体で 1 つです(sync_state は 1 行しかありません)。しきい値は houki-hub family で共通で、ローカル DB(全文検索用)にまとめています。

置き場所 ​

既定は ${XDG_CACHE_HOME:-~/.cache}/houki-egov-mcp/laws.db です。 環境変数 HOUKI_EGOV_DB_PATH で変えられます。コマンドライン引数での指定はありません。

MCP サーバーと CLI で HOUKI_EGOV_DB_PATH や XDG_CACHE_HOME が違うと、別々のファイルを指すことになります。 取り込んだはずなのに search_fulltext の応答に source: "api-fallback" が付くときは、まずここを確かめてください。

plugin は環境変数を持たないので、既定の ~/.cache/houki-egov-mcp/laws.db を開きます。環境変数を付けずに実行した CLI は、plugin と同じこのファイルを作り、更新します。 起動のしかたごとに開くファイルと、別のファイルで作った DB の移し方は、ローカル DB(全文検索用)の「DB のファイルの決まり方」にまとめています。

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

DB はパッケージの更新で消えません。取り込み方が変わったときだけ、取り直しが要ります。

版すること
v0.5.0 / v0.5.1--bulk-download-everything を実行し直します。v0.5.1 より前に作った DB には、編(Part)を持つ法令(民法・会社法など)の本則が入っていません
v0.8.0取り直しは不要です。--sync で最終同期日からの差分を取り込めます
v0.19.0DB の版を 3 にしました。--bulk-download-everything で作り直します(取り込んだ中身は消えます)。作り直した後は 0.18.x 以前で開かないでください
v0.19.1DB の版は 3 のままです。v0.19.0 で 2026-10-04 以降に --sync した DB は、--bulk-download-everything を 1 回実行します(条の本文は入れ直しません。上の「施行日の当日に状態が変わる版」)

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

検索の書き方 ​

  • 「民法 不法行為」のように法令名と語を並べると、法令名で絞り込んでから本文を検索します
  • 「民法 第709条」「消費税法 第57条の2」のように法令名と条番号だけなら、検索せずにその条を直接返します
  • 2 文字の語(「株主」「責任」)は trigram の索引に乗らないため、ヒットした本文に含まれるかで補完します

知っておくとよいこと ​

  • 引数は tools/list の inputSchema どおりに渡してください。v0.6.0 から、inputSchema に無い引数は INVALID_ARGUMENT になり、detail.issues[].path にその引数名が入ります
  • 項が 1 つだけの条(「消費税法施行令第14条の3第1号」のように第1項を書かない条)は、paragraph を省いて item だけで号を引けます。項が複数ある条で paragraph を省くと INVALID_ARGUMENT です(v0.6.0 から。v0.5.4 までは item を黙って無視して条全体を返していました)
  • get_toc は附則の条を編・章の外に平坦に並べます(既知の課題)
  • 民法・消費税法のような大きな法令は応答が長くなります。get_toc で位置を確かめてから get_law で条を指定してください

デジタル庁公式の MCP との関係 ​

本サーバーは e-Gov 法令 API v2 のクライアントで、デジタル庁公式の MCP ではありません。 デジタル庁は 2025 年 12 月〜2026 年 3 月の「法令 × デジタル」ハッカソンで法令 API と MCP の試作を参加者向けに試行提供しました。 法令本文を返す公式 MCP が一般提供された場合は、本サーバーのコアをそちらに委譲する方針です。

詳しい設計と Phase ごとの進捗は、リポジトリの docs/ にあります。利用範囲は免責事項と利用範囲と、リポジトリの DISCLAIMER.md を参照してください。

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