get_law_file
INFO
houki-egov-mcp v0.21.0 の tools/list と specs/current/get_law_file/spec.md から自動生成しました(仕様 ID 23 件・2026-10-12)。手で編集しないでください。再生成は node scripts/generate-reference.mjs です。
法令本文を 1 つのファイル(xml / json / html / rtf / docx)で取る道を返す。既定では認証なしで開ける URL だけを返し、save: true のときだけファイルを取得してサーバー側の保存先(既定は XDG_CACHE_HOME か ~/.cache の下の houki-egov-mcp/files/。環境変数 HOUKI_EGOV_FILES_DIR で変更)に書いて絶対パスを返す。条文を読むだけなら get_law / get_law_range のほうが小さく済む(民法の xml は 1.6 MB、docx は 182 KB)。人が Word や ブラウザーで開く版が要るとき(docx / html / rtf)と、法令 XML をそのまま処理したいとき(xml / json)のためのツール。
利用者と得られる結果
このツールの利用者と、利用者が渡すもの・得られる結果を示します。
- MCP クライアント(Claude などの LLM、または CLI から呼ぶ人)。
law_nameとfile_typeを渡して、法令本文 1 つ分のファイル(xml / json / html / rtf / docx)を取る URL を受け取る。save: trueを付けたときは、サーバーが保存したファイルの絶対パスと、そのファイルの法令履歴 ID を受け取る - MCP サーバーを起動する人。環境変数
HOUKI_EGOV_FILES_DIRで保存先のディレクトリを決める
引数
呼び出すときに渡す値です。動いているサーバーの tools/list から写しています。
| 引数 | 型 | 必須 | 既定値 | 説明 |
|---|---|---|---|---|
law_name | string (minLength 1) | 必須 | 法令名または略称。例: "民法", "消法" | |
file_type | "xml" | "json" | "html" | "rtf" | "docx" | 必須 | ファイル種別。xml = 法令標準 XML、json = e-Gov の JSON、html、rtf、docx(Word) | |
at | string | 任意 | 時点指定。YYYY-MM-DD 形式。その時点以前で最新の履歴の本文ファイルになる(e-Gov の asof) | |
save | boolean | 任意 | false | true でファイルを取得してディスクに保存し、応答の saved.path に絶対パスを返す(デフォルト: false)。保存すると e-Gov のファイル名から法令履歴 ID(saved.law_revision_id)が分かる |
条文を読むなら get_law / get_law_range
xml / json は法令全体で、民法は 1.6 MB あります。条文を読むだけなら get_law(1 条)か get_law_range(章・節)のほうが小さく済みます。このツールは、人が Word やブラウザーで開く版(docx / html / rtf)が要るときと、法令標準 XML をそのまま処理したいときのものです。
呼び出し例
実際に呼び出したときの引数と応答です。版と日付は実測したときのものです。
呼び出し例 — 「民法の全文を Word で」(URL だけ)
- 実測: v0.20.0(2026-10-05)
- 確かめた版: v0.20.1(2026-10-10)
- ローカル DB: 不要
引数
{ "law_name": "民法", "file_type": "docx" }返る JSON
{
"meta": {
"law_id": "129AC0000000089",
"title": "民法",
"law_num": "明治二十九年法律第八十九号",
"retrieved_at": "2026-10-04T20:20:03.161Z",
"url": "https://laws.e-gov.go.jp/law/129AC0000000089",
"at": null
},
"file_type": "docx",
"content_type": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
"url": "https://laws.e-gov.go.jp/api/2/law_file/docx/129AC0000000089", // 認証なしで開ける
"note": "民法 の本文を docx で取る URL です。認証なしで開けます(現時点で最新の履歴)。ファイルをディスクに置くには save: true を付けてください(~/.cache/houki-egov-mcp/files 以下に保存します)。"
}save を付けないと e-Gov には法令名の解決(/laws)しか問い合わせません。at を付けると URL に ?asof=YYYY-MM-DD が付き、その時点以前で最新の履歴の本文になります。
呼び出し例 — 「2020 年 4 月 1 日時点の国旗国歌法を HTML で保存」
- 実測: v0.20.0(2026-10-05)
- 確かめた版: v0.20.1(2026-10-10)
- ローカル DB: 不要
引数
{ "law_name": "国旗及び国歌に関する法律", "file_type": "html", "at": "2020-04-01", "save": true }返る JSON(抜粋)
{
"meta": { "law_id": "411AC0000000127", "title": "国旗及び国歌に関する法律", "at": "2020-04-01", "…": "…" },
"file_type": "html",
"content_type": "text/html",
"url": "https://laws.e-gov.go.jp/api/2/law_file/html/411AC0000000127?asof=2020-04-01",
"saved": {
"path": "~/.cache/houki-egov-mcp/files/411AC0000000127_19990813_000000000000000/411AC0000000127_19990813_000000000000000.html",
"bytes": 38537,
"file_name": "411AC0000000127_19990813_000000000000000.html", // e-Gov の Content-Disposition のまま
"law_revision_id": "411AC0000000127_19990813_000000000000000" // ファイル名から分かる「どの履歴の本文か」
},
"note": "411AC0000000127_19990813_000000000000000.html(37.6 KB)を … に保存しました。"
}保存すると e-Gov のファイル名から法令履歴 ID が取れます(URL だけのときは分かりません)。実測では民法の docx が 182 KB、消費税法の rtf が 1.8 MB でした。1 ファイル 50 MB(52,428,800 バイト)を超えるときは保存せず、FILE_TOO_LARGE(retryable: false、detail.bytes に大きさ)を返します。Content-Length で分かるときは本文を読みません(v0.16.0 から。v0.15.x では INVALID_ARGUMENT でした)。
扱わないこと
このツールが意図して扱わないことです。
- ファイルの中身(バイト列や base64)を応答に入れること
- 保存先のパスやファイル名を引数で決めること(決めるのはサーバーを起動する人の環境変数だけ)
- 条・項を選んで一部だけのファイルを取ること(ファイルは法令全体。一部を読むのは
get_law/get_law_range) saveなしで、その URL がどの法令履歴の本文を返すかを知らせること(saved.law_revision_idは保存したときだけ)- 添付ファイル(別表・様式の図)を取ること(
list_attachments/get_attachment)
処理の流れ
仕様書の「処理の流れ」の節を、図も含めてそのまま写しています。図が大きいので畳んでいます。
処理の流れの図(仕様書の写し)
呼び出しを受けてから応答を返すまでに、何をどの順で確かめるかを示します。図の中の番号は「できること」の仕様 ID の末尾 3 桁です。
仕様項目の一覧
このツールの仕様項目 23 件の見出しです。仕様項目は受入テストと 1 対 1 で対応していて、条件と例は仕様書ページで読めます。
仕様項目の見出し(23 件)
| 仕様 ID | 仕様項目 |
|---|---|
| 001 | save を付けないときは、ファイルを取らずに URL を返す |
| 002 | 時点(at)は URL の asof になる |
| 003 | save: true でファイルを取得し、法令履歴 ID の名前で保存する。法令履歴 ID が分からないときは null を返す |
| 004 | Content-Disposition のファイル名の読み方。filename* があればそれを使う |
| 005 | 保存するファイル名にはディレクトリの部分を残さない |
| 006 | xml では条文を読む get_law を案内する |
| 007 | file_type は 5 種のどれかでなければならない |
| 008 | save なしでは、e-Gov への問い合わせは法令名の解決だけ |
| 009 | json でも get_law を案内し、html・rtf では案内しない |
| 010 | save なしの note は、どの時点の履歴かと保存先のディレクトリを書く |
| 011 | 保存したときの note |
| 012 | 特定できない法令と管轄外の資料はエラーにする |
| 013 | file_type の検査は、法令の特定より先に行う |
| 014 | ファイルの取得に失敗したときの code |
| 015 | 429・5xx・ネットワークの失敗は取り直してから返す |
| 016 | 環境変数が無いときの保存先 |
| 017 | 同じファイルを保存すると上書きする |
| 018 | law_name が空文字・空白だけのときは略称辞書と e-Gov に問い合わせずに INVALID_ARGUMENT を返す |
| 019 | at は YYYY-MM-DD の形だけを受け付け、形に合わない値と暦に無い日付は INVALID_ARGUMENT |
| 020 | 法令名の検索が通信の失敗で終わったときは LAW_NOT_FOUND ではなく SOURCE_* を返す |
| 021 | 上限(50 MB)を超えるファイルは FILE_TOO_LARGE で断り、Content-Length で分かるときは本文を読まない |
| 022 | law_name の全角英数字・ダッシュ類・全角空白は半角に揃えてから略称辞書と照合する |
| 023 | 法令名が完全一致しないときは、URL を返さず候補を付けた LAW_NOT_FOUND を返す |
関連ページ
このページの元になった文書と、あわせて読むページです。