# Reported issues for houki-egov-mcp

Pod holds 18 of 30 GitHub reports that passed its relevance review. This can include external user reports, maintainer-confirmed bugs, and concrete feature gaps. Treat them as evidence to inspect, not a count of distinct defects.

Back to [houki-egov-mcp](/mcp/houki-egov-mcp).

## Most discussed

### 引数の検査の INVALID_ARGUMENT の detail が読み取りにくく、返さない code が語彙に残っている

引数の検査で返す `INVALID_ARGUMENT` の `detail` の形と、エラー code の語彙が、houki-nta-mcp や family の約束と揃っていません。呼び出し側（LLM や houki-research-skill）が、どの引数が悪かったかを機械的に読み取りにくくなっています。

### いまの状態（v0.15.1）

- **`tool` が付かない:** houki-nta-mcp は inputSchema の検査の `INVALID_ARGUMENT` に呼んだツールの名前を `tool` で付けるが、houki-egov-mcp は付けない
- **必須の引数が無いときの `path`:** `detail.issues[0].path` が空文字で、どの引数が無いかは `message`（`must have required property 'name'`）の中にしか無い
- **`message` の言語:** 型・enum の違反の `message` は英語（`must be string`、`must be equal to…

[Read the thread](https://github.com/shuji-bonji/houki-egov-mcp/issues/57) · 2026-09-27 · open · 1 comment

### limit・latest・depth の上限・整数を約束しておらず、get_law が範囲表記の article を黙って受け付ける

数値の引数に、上限・整数・0 以下の扱いが約束されていません。inputSchema の型は `number` だけで、説明に書いた上限をかけていない引数や、説明に無い形を受け付ける引数があります。`paragraph` の同じ問題は #48 で扱います。

### いまの状態（v0.15.1）

| ツール | 引数 | 起きること |
|---|---|---|
| `search_law` | `limit` | 説明は「最大: 50」だが、値をそのまま e-Gov に渡す。`keyword: "法", limit: 100` で 100 件返る。0・負の数・小数の扱いも決まっていない |
| `get_law_revisions` | `latest` | 0 や負の数なら全件を返し、`2.5` は切り捨てた 2 件になる。エラーにしない |
| `get_toc` | `depth` | `depth: 1.5` は `depth: 2` と同じ結果になる |
| `get_law` | `article` | `"534:535"` や…

[Read the thread](https://github.com/shuji-bonji/houki-egov-mcp/issues/54) · 2026-09-27 · open · 1 comment

### 施行令・施行規則の関連付け

### 背景

`kuro6061/e-gov-mcp` の `follow_law_chain` / `explain_law_article` / `find_related_laws` に相当する処理がありません。「この条が指す施行令はどれか」をサーバーが解決しないため、LLM が次の `search_law` を自分で組み立てています。

### houki-hub#8（法令グラフ）との関係 — 2026-09-14 に決定

対象が重なっていても、**MCP のツールとして実装します**。理由は次のとおりです。

- RAG は Claude のサービスに入っており、自分で組むなら API 経由になる
- GraphRAG も、エンティティと関係の抽出は Claude API に頼ることになる
- MCP が出すべきなのは、LLM の判断を挟まずに引ける参照関係

そのうえで層を分けます。

| 層 | 返すもの | 作り方 |
|---|---|---|
| **本 Issue（MCP）** | 法令 XML と法令名の規則から決定論的に引ける参照。同じ入力に同じ出力 |…

[Read the thread](https://github.com/shuji-bonji/houki-egov-mcp/issues/20) · 2026-09-14 · closed · 1 comment

### houki-egov-mcp、ブラウザから条文をそのまま引ける入口 — 同僚や受験生に送ればすぐ試せる

@shuji-bonji

MCP を作りながら、ユーザー側の入口を一緒に育てているソフトウェア開発者です。Qiita の設計ノートと houki-egov-mcp の README を読みました。

`search_law` / `get_law` / `get_law_revisions` の 7 ツール構成が良いと思いました。特に、略称解決（消法→消費税法）と `at` での経時参照を最初から分けた設計が、法令を素朴に LLM に投げると壊れる箇所をきちんと押さえています。

`docs/ERROR-CODES.md` の `SOURCE_*` 共通語彙と `next_actions` を family で揃える方針も筋が良いです。将来 nta / mhlw が並んだときに LLM 側の分岐が綺麗になります。

ひとつだけ気になったのが導入の段差です。条文を引きたい同僚・法学生・法務担当の多くは、Claude Desktop に `claude_desktop_config.json` を書く前に止まります。「LLM…

[Read the thread](https://github.com/shuji-bonji/houki-egov-mcp/issues/10) · 2026-05-25 · closed · external user · 1 comment

### 取得の進捗が、終わった時点で 100% にならない（SPEC-EGOV-CLI-BULK-DOWNLOAD-006 と実装の食い違い）

current の SPEC-EGOV-CLI-BULK-DOWNLOAD-006 は「取得が終わった時点の表示は 100%」と書いていますが、実装はそうなっていません。推定より小さい zip では、取得が終わったときの表示が 100% になりません。

### いまの状態（v0.15.1）

- 取得中の割合は「取得したバイト数 / 推定の総バイト数」（全件は約 290 MB、1 日分の差分は約 5 MB）。100% を超えないように止めるが、終わったときに 100% に切り上げない
- 2.2 KB の zip（テスト用）では、終わったときの表示が `(  0.0%)` になる
- 006 の既存のテスト（`src/services/bulk/zip-fetcher.test.ts`）は、進捗の通知が出ることと、推定より大きい zip で 100% を超えないことだけを確かめていて、「終わった時点は 100%」を確かめていない

### 決めること

- 実装を直して、取得が終わった時点で 100% を表示するか
- 仕様を直して、「終わった時点は 100%」を外すか

###…

[Read the thread](https://github.com/shuji-bonji/houki-egov-mcp/issues/75) · 2026-09-27 · open · 0 comments

### --status の件数の区切り文字が環境の言語設定で変わる

`--status` の件数の区切り文字が、実行する環境の言語設定で変わります。同じ DB でも、表示を読むスクリプトや利用者の環境によって `1,234,567` と `1.234.567` が混ざります。

### いまの状態（v0.15.1）

- `laws:` と `articles:` の件数を `toLocaleString()` で表示している（`src/cli/index.ts` の 334・335 行目）
- 既定の言語設定では `1,234,567`、`LANG=de_DE.UTF-8` では `1.234.567` になる

### 決めること

- 区切りを固定するか（`toLocaleString('en-US')`、または区切りなし）

### 完了条件

- 決めた表示が `specs/current/cli_status/spec.md` に書かれ、受入テストがある

出典: cli_status 1 の一部（差分 `20260928-untested-behaviors` で約束にしなかった部分）

[Read the thread](https://github.com/shuji-bonji/houki-egov-mcp/issues/74) · 2026-09-27 · open · 0 comments

### explain_law_type が toString・constructor で found: true を返し、info が無い

`explain_law_type` に `name: "toString"` や `"constructor"` を渡すと、`found: true` を返します。応答の JSON には `info` がありません。

### いまの状態（v0.15.1）

- 収録している種別の表を、オブジェクトのキーで引いている。そのため `toString`・`constructor`・`hasOwnProperty` など `Object.prototype` のプロパティの名前が「見つかった」扱いになる
- 応答は `found: true` だが、`info` は JSON にならない関数なので消え、利用者は種別の解説を受け取れない

### 決めること

- 不具合として直すか（`Object.hasOwn` や `Map` で引く）。直すなら `found: false` と候補の一覧を返す

### 完了条件

- `name: "toString"` / `"constructor"` で `found: false` になることが…

[Read the thread](https://github.com/shuji-bonji/houki-egov-mcp/issues/73) · 2026-09-27 · open · 0 comments

### 附則の別表・様式にある図の location が附則全体になり、見出しが付かない

附則の中の別表・様式にある図の置き場所（`location`）が、附則全体（`{ tag: "SupplProvision" }`）になり、見出し（例: 附則別表第一）が付きません。利用者は、どの別表の図かを `list_attachments` の応答から読み取れません。

### いまの状態（v0.15.1）

- e-Gov の XML は、附則の別表・様式を `SupplProvisionAppdxTable` / `SupplProvisionAppdxStyle` / `SupplProvisionAppdx` のタグで返す
- 図の置き場所を決める処理は、本則の `AppdxTable` / `AppdxStyle` / `AppdxFormat` / `AppdxFig` / `Appdx` しか知らない（`src` と `specs` のどこにも `SupplProvisionAppdx` の語が無い）
- 見出し `附則別表第一` を持つ `SupplProvisionAppdxTable` の中の図は、`{ tag: "SupplProvision",…

[Read the thread](https://github.com/shuji-bonji/houki-egov-mcp/issues/72) · 2026-09-27 · open · 0 comments

## Most recent

### verify_citations で同じ未知の law_id が並ぶと、2 件目以降の search_law の keyword が law_name にならない

`verify_citations` で、同じ（e-Gov が知らない）`law_id` の件が 1 回の呼び出しに並ぶと、2 件目以降の `next_actions` が 1 件目の判定を使い回します。`law_name` を書いた件でも、`search_law` の `keyword` が `law_id` になります。

### いまの状態（v0.15.1）

SPEC-EGOV-VERIFY-CITATIONS-027 は「e-Gov が知らない `law_id` の件の `example` は `{ keyword: <law_name> }`、`law_name` が無ければ `{ keyword: <law_id> }`」と書いています。1 件だけで渡すとこのとおりになります。

```json
{ "citations": [
  { "law_id": "999AC0000000999", "article": "1" },
  { "law_name": "所得税法", "law_id": "999AC0000000999", "article": "1" }
]…

[Read the thread](https://github.com/shuji-bonji/houki-egov-mcp/issues/70) · 2026-09-27 · open · 0 comments

### e-Gov に接続できないとき SOURCE_UNAVAILABLE を返さず、SOURCE_API_ERROR（fetch failed）になる

e-Gov に接続できないとき（名前解決の失敗・接続の拒否）に返すはずの `SOURCE_UNAVAILABLE` が、実際には返りません。README とエラー code の語彙は `SOURCE_UNAVAILABLE` を「e-Gov に届かない」ときの code としていますが、利用者（LLM）は代わりに `SOURCE_API_ERROR`（e-Gov がエラーを返した）を受け取り、ネットワークの問題と e-Gov 側の問題を見分けられません。

### いまの状態（v0.15.1）

- Node 22 の `fetch` は、名前解決の失敗や接続の拒否を、message が `fetch failed` の `TypeError` で投げる。`ENOTFOUND`・`ECONNREFUSED` などの原因は `err.cause` にだけ入る
- エラーを code に変える処理（`src/services/law-service.ts` の 133 行目付近）は `err.message` の中に…

[Read the thread](https://github.com/shuji-bonji/houki-egov-mcp/issues/69) · 2026-09-27 · open · 0 comments

### 添付・本文ファイルの保存で、同名の添付を黙って選び、法令履歴 ID の欄に法令 ID が入る

添付ファイルと法令本文ファイルの保存で、ファイル名の決め方に曖昧な点があります。名前の重なりで別のファイルを返したり、法令履歴 ID の欄に法令 ID が入ったりします。

### いまの状態（v0.15.1）

- **同じファイル名の添付（`get_attachment`）:** SPEC-EGOV-GET-ATTACHMENT-002 のファイル名だけでの照合は、同じファイル名が別のディレクトリの `src` に複数あっても、一覧で先にあるものを黙って返す
- **Content-Disposition が無いとき（`get_law_file`）:** `<law_id>.<file_type>` の名前で保存する。`saved.file_name` は `null` だが、`saved.law_revision_id` にはこの名前の拡張子より前、つまり法令 ID（例: `129AC0000000089`）が入り、保存先のディレクトリも法令 ID の名前になる。inputSchema と応答の型の説明は `law_revision_id` を法令履歴 ID…

[Read the thread](https://github.com/shuji-bonji/houki-egov-mcp/issues/66) · 2026-09-27 · open · 0 comments

### 目次の meta の at、補った項番号、続きの呼び出し例の max_chars が付かない

同じ種類の応答なのに、場合によってフィールドが付いたり付かなかったりします。呼び出し側（LLM）は、応答の形からは値の有無の理由を読み取れず、打ち切りの続きを取るときに条件が変わることもあります。

### いまの状態（v0.15.1）

| ツール | 場面 | 起きること |
|---|---|---|
| `get_law` | 目次（`format: "toc"`、または `article` 省略） | 条文の応答の `meta` には `at` が付くが、目次の `meta` には付かない（Markdown の `時点:` の行は付く） |
| `get_law` | `item` だけを指定し、項が 1 つの条の号を返したとき（SPEC-EGOV-GET-LAW-011） | json の `data.paragraph_num` が付かず、`data.node` は号。補った項番号（`1`）を返さない |
| `get_law_range` | 打ち切ったとき（SPEC-EGOV-GET-LAW-RANGE-008） |…

[Read the thread](https://github.com/shuji-bonji/houki-egov-mcp/issues/64) · 2026-09-27 · open · 0 comments

### explain_law_type が「通知」と一部の法令種別コードで期待どおりの解説を返さない

`explain_law_type` が、一部の種別名と法令種別コードで期待どおりの解説を返しません。`get_law` などの応答にある `law_type` をそのまま渡しても、解説が返らない種別があります。

### いまの状態（v0.15.1）

- **`通知`:** 収録している種別は 9 種のほかに `通知` があり（計 10 種）、`通達` の別名にも `通知` がある。名前の一致を別名より先に確かめるので、`name: "通知"` は `info.name: "通知"` を返し、`通達` の別名の `通知` は使われない
- **法令種別コード:** コードで引けるのは `Act`・`CabinetOrder`・`MinisterialOrdinance` だけ。`search_law` の `law_type` が受け付ける `Rule`・`ImperialOrdinance` と、e-Gov が返す `Constitution` は `found: false`。`規則` にはコードが結び付いていない

### 決めること

- `通知`…

[Read the thread](https://github.com/shuji-bonji/houki-egov-mcp/issues/62) · 2026-09-27 · open · 0 comments

### 新しい版の DB を古い版で開くと消え、MCP サーバーと --status が DB を作る

ローカル DB を作る・作り直す・消す場面の約束が、README と実際で違います。利用者が houki-egov-mcp を古い版に戻すと、約 290 MB の取り込みが消えることがあります。

### いまの状態（v0.15.1）

- **古い版のサーバーで新しい版の DB を開く:** 作り直しは DB の版がサーバーと「違う」ときに起き、DB の版がサーバーより新しいときも全テーブルを消す。取り込みをやり直すことになる
- **MCP サーバーが DB に書き込む:** README は「書き込みは CLI だけが行い、MCP server は読むだけ」と書くが、`search_fulltext` が DB を開くと、DB ファイルやディレクトリが無ければ作り、スキーマを作り、版が違えば作り直す
- **`--status` が DB を作る:** 状態を見るだけのコマンドだが、DB ファイル（とそのフォルダー）が無いときは作ってから件数 0 を表示し、ファイルが残る
- **`sync_state.schema_version` 列:** 既定値は 2…

[Read the thread](https://github.com/shuji-bonji/houki-egov-mcp/issues/60) · 2026-09-27 · open · 0 comments

### 段落だけの本則を取り込まず、作れない公布日に 0001-01-01 を入れる

全件取り込み・差分取り込みで、一部の法令の本文や公布日が DB に正しく入りません。本文が入らない法令は `search_fulltext` で本文から見つからず、公布日は実在しない日付になります。

### いまの状態（v0.15.1）

- **条を持たない法令:** 本則が条（`Article`）でなく段落（`Paragraph`）だけの法令（例: 改暦ノ布告）は、法令としては取り込むが条の本文を 1 つも作らない。テスト `Article がない場合でも articles=[] でパースできる (本文 Paragraph 直下)` はこの動きを確かめている
- **公布日:** 元号・年・月・日のどれかが XML に無いとき、または元号が明治・大正・昭和・平成・令和のどれでもないときは、公布日を `0001-01-01` にする

### 決めること

- 段落だけの本則も本文として取り込むか（条番号の無い本文を `search_fulltext` でどう返すか）
- 公布日が作れないときに空（`NULL`）にするか

### 完了条件

- 決めた規則が…

[Read the thread](https://github.com/shuji-bonji/houki-egov-mcp/issues/59) · 2026-09-27 · open · 0 comments

### 日次差分の last_sync_date の決め方と差分の無い日の扱いで、取り込んでいない日を最新と扱う

日次差分の取り込みで、`last_sync_date` の決め方と、差分の無い日の HTTP 500 の扱いが、`--sync` と `--bulk-download-by-date` で揃っていません。取り込んでいない日を「最新」と扱うことがあり、DB の法令が古いまま検索結果に出ます。

### いまの状態（v0.15.1）

- **`--bulk-download-by-date` の `last_sync_date`:** 指定した日ではなく実行した日にする。今日 `--bulk-download-by-date 20260801` を実行すると `last_sync_date` が今日になり、その後の `--sync` は今日からしか確かめないので、8 月 2 日から昨日までの差分を取り込まないまま「最新」と扱う
- **`last_sync_date` の日付:** 取り込みを始めた時刻を UTC の日時で持ち、その先頭 10 文字を `last_sync_date` にする。日本時間の 0 時から 9 時の間に実行すると前日の日付になる。`--sync`…

[Read the thread](https://github.com/shuji-bonji/houki-egov-mcp/issues/58) · 2026-09-27 · open · 0 comments

### search_law の domain が絞り込まず、total_count が総数でなく、0 件のときに次の手を返さない

`search_law` の `domain` は説明どおりに絞り込まず、`total_count` は名前と違う値を返し、0 件のときは次に何をすればよいかを返しません。利用者（LLM）は、絞り込んだつもりの結果や、総数と読める件数をそのまま使うおそれがあります。

### いまの状態（v0.15.1）

- **`domain`:** inputSchema の説明は「分野タグで絞り込み（略称辞書ベース）」だが、e-Gov の検索にも結果の選別にも使わず、応答の `query` にも入れない。`keyword: "労働基準", domain: "tax", law_type: "Act"` で `労働基準法`（労働分野）が返る
- **`search_fulltext` の `domain`:** 説明は「v0.5.0 では受け付けるが絞り込みは行わない」、応答の `filters.domain.note` は「v0.5.0 では未実効」と書く。今の版は v0.15.1
- **`total_count`:** `results` の件数と同じで、`limit`…

[Read the thread](https://github.com/shuji-bonji/houki-egov-mcp/issues/55) · 2026-09-27 · open · 0 comments

### 必須の文字列の引数に空文字を渡したときの code がツールごとに違う

必須の文字列の引数に空文字（または空白だけ）を渡したときの応答が、ツールごとに違います。inputSchema の検査は空文字を通すので、各ツールの処理がそれぞれ別の code を返しています。

### いまの状態（v0.15.1）

| ツール | 入力 | 結果 |
|---|---|---|
| `search_law` | `keyword: ""` | `INVALID_ARGUMENT`（SPEC-EGOV-SEARCH-LAW-001） |
| `get_law` | `law_name: ""` | `LAW_NOT_FOUND` |
| `resolve_abbreviation` | `abbr: ""` | エラーにせず `resolved: null` と、`example: { keyword: "" }` の `search_law` の案内。この案内どおりに呼ぶと `search_law` は `INVALID_ARGUMENT` を返す |
| `search_fulltext` | `keyword: ""`（空白だけを含む） | DB…

[Read the thread](https://github.com/shuji-bonji/houki-egov-mcp/issues/53) · 2026-09-27 · open · 0 comments

The remaining reports are on [the project's issue tracker](https://github.com/shuji-bonji/houki-egov-mcp/issues).
