building-standards-act-mcp
# building-standards-act-mcp
[](https://www.npmjs.com/package/building-standards-act-mcp)
[](https://github.com/Sora-bluesky/building-standards-act-mcp/actions/workflows/cross-platform-test.yml)
[](https://nodejs.org/)
[](https://opensource.org/licenses/MIT)
建築確認申請に必要な法令・告示を e-Gov 法令 API からリアルタイム取得する MCP サーバー。
AI の建築法規回答に含まれるハルシネーションを、条文原文との照合によって防ぐ。
## 特徴
- **法令取得** — e-Gov 法令 API v2 から条文を条単位(`elm` 指定)で取得。1 条あたり数 KB で済み、全文 1 MB 超を読まない
- **法令検索** — 法令名で建築関連法令を横断検索
- **条文本文検索** — e-Gov のキーワード検索 API で条文本文を全文検索(`search_articles`)
- **法令全文取得** — 法令全体のテキストを取得
- **告示取得** — 建築基準法が技術基準を委任している告示を国土交通省の告示データベース(PDF)から取得
- **検索ファースト** — e-Gov API 検索による動的な法令解決。プリセットに限らず、e-Gov 収録の全法令を取得可能
- **略称マップ** — 建築基準法・消防法・都市計画法ほか 116 法令の略称を登録済み。「建基法」「都計法」「消防法」等の略称で指定可能
- **キャッシュ** — 検索 30 分・法令データ 24 時間の TTL キャッシュ(永続化オプションあり)
- **API 耐障害性** — 自動リトライ(exponential backoff)+ サーキットブレーカー
- **運用可視化** — 構造化 JSON ログ + 使用量メトリクス(`get_metrics` ツール)
## Web で使う(Vercel デプロイ)
Vercel にデプロイすると、Claude.ai からすぐに使えます。環境変数の設定は不要です(e-Gov API は公開 API)。
公開インスタンス: `https://building-standards-act-mcp.vercel.app/api/mcp`(自分でデプロイしなくても、この URL をそのまま Custom Connector に登録できます)
[](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2FSora-bluesky%2Fbuilding-standards-act-mcp)
### Claude.ai でのセットアップ(Free/Pro/Max/Team/Enterprise)
> Custom Connectors は Free / Pro / Max / Team / Enterprise の各プランで利用できます(Free プランは 1 件まで)。ローカルで動かしたい場合は [npx(ローカル)でのセットアップ](#npx推奨) を参照してください。
1. 公開インスタンスを使う場合はこの手順を飛ばす。自分でホストする場合は上の「Deploy with Vercel」ボタンでデプロイ(ワンクリック)
2. [claude.ai](https://claude.ai) → Customize → Connectors
3. 「+ Add」→「Add custom connector」をクリック
4. URL に `https://building-standards-act-mcp.vercel.app/api/mcp`(自分でデプロイした場合はその URL)を入力し、認証は「No sign in」を選択
5. チャットで「+」→「Connectors」→ building-standards-act を有効化
6. 「建築基準法第20条を教えて」と質問
> 参考: [Get started with custom connectors using remote MCP](https://support.claude.com/en/articles/11175166-get-started-with-custom-connectors-using-remote-mcp)
### Vercel での実行時間
- Vercel Functions の実行時間は Hobby プランでも既定 300 秒です(Fluid compute)。本リポの `vercel.json` は `maxDuration` を 60 秒に設定しています
- `get_kokuji`(告示取得)は PDF ダウンロード + パースが重いため、60 秒を超える場合は `vercel.json` の `maxDuration` を引き上げてください
- `check_law_updates` の大規模グループ(9章: 53法令)は最大 5 並行で実行します(`BUILDING_LAW_CONCURRENCY` で調整可能)
- `BUILDING_LAW_REQUEST_TIMEOUT=8000` を設定して e-Gov API 呼び出しのタイムアウトを短縮できます
---
## ローカルで使う(stdio)
### npx(推奨)
インストール不要で実行できます。
```bash
npx -y building-standards-act-mcp@latest
```
`@latest` を付けると、npx のキャッシュに古い版が残っていても最新版で起動します。
### Claude Desktop
`claude_desktop_config.json` に以下を追加してください。
```json
{
"mcpServers": {
"building-standards-act": {
"command": "npx",
"args": ["-y", "building-standards-act-mcp@latest"]
}
}
}
```
### Claude Code
```bash
claude mcp add building-standards-act -- npx -y building-standards-act-mcp@latest
```
#### Windows + VS Code 拡張機能の場合
VS Code 拡張機能では `npx` 経由の起動が `Connection closed` エラーになる場合があります。その場合は、公開中の Vercel 版に HTTP で接続するのが確実です。
```bash
claude mcp add --transport http building-standards-act https://building-standards-act-mcp.vercel.app/api/mcp
```
プロジェクト単位で設定するなら、プロジェクトルートの `.mcp.json` に次を書きます。
```json
{
"mcpServers": {
"building-standards-act": {
"type": "http",
"url": "https://building-standards-act-mcp.vercel.app/api/mcp"
}
}
}
```
ローカルの stdio で動かしたい場合は、`npx` を `cmd /c` で包みます。
```bash
claude mcp add building-standards-act -- cmd /c npx -y building-standards-act-mcp@latest
```
> **注意**: グローバルインストールした `dist/index.js` のパスを `.mcp.json` に直接書く方法は使わないでください。パッケージの更新・削除やフォルダの移動で、エラーを出さずに接続できなくなります。
### ローカル(ソースから)
```bash
git clone https://github.com/Sora-bluesky/building-standards-act-mcp.git
cd building-standards-act-mcp
npm install
npm run build
```
```json
{
"mcpServers": {
"building-standards-act": {
"command": "node",
"args": ["/path/to/building-standards-act-mcp/dist/index.js"]
}
}
}
```
## MCP ツール
| ツール | 説明 |
| ------------------- | --------------------------------------------------------------------------------------------------------------- |
| `get_law` | 条番号を指定して条文を取得する。`format=text` は本文と参照一覧(`references`)を合わせて `max_chars`(最大 24,000、既定 20,000)で制限。長い条の項・表の行は `find` で探し、返った `matches` と `offset` を使う。続きは `next_offset` を指定(続きは `find` を外す) |
| `get_full_law` | 法令の全文を取得する。`max_chars`(最大 48,000、既定 30,000)で区切り、続きは `offset` で取る |
| `search_law` | 法令名(タイトル)で建築関連法令を検索する。略称マップと e-Gov API の両方を検索。条文本文の検索は `search_articles` |
| `search_articles` | 条文本文をキーワードで全文検索する(e-Gov `/keyword`)。半角スペース区切りで AND 検索。AND・OR・NOT は演算子ではなく検索語として扱われる。全角スペースは半角に直して送る。法令名で絞り込み可。条番号は `get_law` で確定する |
| `get_kokuji` | 建築基準法が技術基準を委任している告示の全文を取得する(省エネ告示は国交省 PDF から直接取得)。住宅局の DB 告示には改正一覧も表示。`max_chars`(最大 48,000、既定 30,000)で区切り、続きは `offset` で取る |
| `get_kokuji_amendments` | 告示番号または告示名から改正一覧だけを軽量に取得する(2018年1月1日以降公布分) |
| `check_law_updates` | 法令の改正状況を e-Gov API で確認する。`since`(既定は 12 か月前)より後の改正だけを「改正あり」にする |
| `get_laws_batch` | 複数条文を一括取得(最大20件)。`max_chars_per_item`(最大 20,000、既定 8,000)で切り詰め、`max_total_chars`(最大 24,000、既定 20,000)を超える後続本文は省略。上限を超える指定は入力エラー。長い条(例: 建築基準法施行規則 第1条の3)は `get_law` で個別に取得 |
| `verify_citation` | AIの回答に含まれる法令引用を検証する(条文存在確認・テキスト照合、最大10件) |
| `suggest_related` | 指定した条文の関連法令・委任先・同法令内参照を自動抽出して提案する |
| `analyze_article` | 条文の構造解析メタデータ(項数・号数・参照統計・プレビュー)をJSON形式で返す |
| `get_metrics` | サーバーの使用量メトリクスを返す(ツール呼び出し回数・APIリクエスト数・キャッシュヒット率) |
### パラメータ
#### `get_law`
| パラメータ | 説明 | 例 |
| ---------------- | ------------------------------------------------------- | ---------------------------- |
| `law_name` | 法令名(正式名称または略称) | `建築基準法`, `建基法` |
| `article_number` | 条文番号(附則・別表にも対応) | `第20条`, `附則`, `別表第一` |
| `format` | 出力形式(`text` または `structured`、省略時は `text`) | `structured` |
| `max_chars` | 本文と参照一覧(`references`)を合わせた最大文字数(1,000〜24,000、既定 20,000)。`format=text` のみ | `8000` |
| `offset` | 本文内の開始位置(既定 0)。`format=text` のみ。続きは `next_offset` を指定 | `8000` |
| `find` | この条の本文から探す語(1〜100文字)。空白を無視し、全角・半角を区別せずに検索。一致を含む行から表示。`format=text` のみ適用 | `非常用の昇降機` |
`offset` は見出し・参照・出典を含まない本文内の文字位置です。`get_laws_batch` の `next_offset` をそのまま指定できます。
`format=text` の上限は、`structuredContent` を含む応答全体が約5万字に収まる値です。`max_chars` の上限を超える指定は入力エラーになります。
長い条の中の項・表の行を探すときは `find` に語を渡し、`offset` を自分で推測しないでください。検索語は `search_articles` と同じ空白正規化を通した後、本文とともにコードポイントごとに NFKC 正規化し、すべての空白(全角スペースを含む)を除いて照合します。`matches` は本文全体での一致開始位置の先頭20件、`matches_total` は一致の総件数です。位置は正規化前の元本文の UTF-16 文字位置で返します。
`find` と `offset` を併用すると、`offset` 以上の最初の一致を選びます。たとえば `offset=matches[1]` で2件目へ移動できます。該当する一致が後ろにない場合は最初の一致に戻ります。返る `offset` は選択した一致を含む行の先頭です。一致の終端が行頭から `max_chars` の余裕を除いた範囲に収まらない場合は、一致位置から表示します。ページ末尾は従来どおり改行を優先するため、改行や大量の空白をまたぐ一致は複数ページに分かれることがあります。続きは `find` を外し、返った `next_offset` をそのまま渡してください。
一致がないときは「この条に『検索語』は見つかりませんでした。」と本文全体の文字数を返し、本文は返しません。`article.text` は空文字列、`matches` は空配列、`matches_total` は0、`next_offset` は `null` です。`format=structured` では `find`・`max_chars`・`offset` を適用しません。
参照一覧はページ内の本文に現れる参照に絞ったうえで、本文と参照のJSONの長さの合計が `max_chars` に収まる順序どおりの先頭部分だけを表示し、表示が0件なら `article` の `references` キーを省略します。参照を省略した場合は `references_total` と `references_truncated: true`、表示件数の案内を返し、関連法令の一覧は `suggest_related` でも確認できます。
#### `get_full_law`
| パラメータ | 説明 | 例 |
| ----------- | --------------------------------------------- | ---------------------------- |
| `law_name` | 法令名(正式名称または略称) | `建築基準法施行令`, `建基令` |
| `max_chars` | 1 回に返す最大文字数(1,000〜48,000、既定 30,000) | `30000` |
| `offset` | 続きを取るときの開始位置(末尾の案内に出る値) | `30000` |
#### `search_law`
| パラメータ | 説明 | 例 |
| ---------- | ---------------------- | ---------------------- |
| `keyword` | 法令名に含まれる語 | `建築`, `都市計画` |
#### `search_articles`
| パラメータ | 説明 | 例 |
| ----------- | ------------------------------------------------------------ | ---------------------- |
| `keyword` | 条文本文に含まれる語。半角スペース区切りで AND 検索。AND・OR・NOT は演算子ではなく検索語として扱われる。全角スペースは半角に直して送る。`*` `?` のワイルドカードが使える | `準耐火構造 外壁`, `壁量` |
| `law_title` | 法令名または略称で絞り込み(省略時は e-Gov の全法令) | `建築基準法` |
| `limit` | 返す該当文の数(既定 10、最大 50) | `20` |
| `offset` | 続きを取るときの開始位置(応答の `next_offset` を渡す) | `10` |
連続する空白は半角スペース1つにまとめ、前後の空白を除いて検索します。正規化後に検索語が空の場合は入力エラーを返し、検索結果が0件の場合は通信エラーと区別して「該当する条文はありませんでした。」と返します。
#### `get_kokuji`
住宅局の DB 告示には、国交省「建築基準法等に基づく告示の制定・改正について」から改正一覧を付けます。国交省の告示 DB には2019年3月以降の建築告示の改正が反映されていないため、本文を根拠にする前に新旧対照表 PDF を確認してください。対象が未確定の改正告示があれば件数を示します。
改正欄は毎ページに表示します。`offset` は従来どおり見出し等を含む本文の位置です。改正欄を含む表示テキストを `content` と `structuredContent.text` の両方に入れます。本文ページの上限を減らし、両方のテキストと構造化情報を合わせた応答全体を約50,000文字に収めます。構造化出力には取得元・告示番号・改正一覧・続きの位置も入れます。
| パラメータ | 説明 | 例 |
| ------------- | ------------------------------------- | ------------------------------ |
| `kokuji_name` | 告示名 | `耐火構造の構造方法を定める件` |
| `max_chars` | 1 回に返す最大文字数(1,000〜48,000、既定 30,000) | `30000` |
| `offset` | 続きを取るときの開始位置 | `30000` |
#### `get_kokuji_amendments`
本文を取らずに改正の有無だけを確認できます。`kokuji_number` と `kokuji_name` は、どちらか一つだけ指定してください。
| パラメータ | 説明 | 例 |
| ---------- | ---- | -- |
| `kokuji_number` | 年・発出省・番号を含む告示番号(最大100文字、略記可) | `平成12年建設省告示第1399号`、`平12建告1399` |
| `kokuji_name` | 告示名(最大200文字) | `耐火構造の構造方法を定める件` |
対象は平成30年1月1日以降に公布された告示(改正ページの平成29年度分から)です。公布日・施行日・新旧対照表等へのリンクを返します。最大30件を新しい順に表示し、省略件数・対象未確定件数も示します。取得失敗時や対象未確定の告示がある場合は、官報等でも確認してください。
#### `check_law_updates`
| パラメータ | 説明 | 例 |
| -------------- | ------------------------------------------ | ------------ |
| `law_name` | 法令名または略称(単体チェック) | `建築基準法` |
| `group` | 章グループ(バッチチェック、省略時は全章) | `1章` |
| `show_history` | 改正履歴の詳細を表示(`law_name` 指定時) | `true` |
| `since` | 基準日。これより後の改正だけを報告(省略時は 12 か月前) | `2026-01-01` |
#### `get_laws_batch`
| パラメータ | 説明 | 例 |
| ---------- | ---------------------------------------------------------------------- | --- |
| `requests` | 取得対象の配列。各要素に `law_name`, `article_number`, `format` を指定 | — |
| `max_chars_per_item` | 条文ごとの最大文字数(1,000〜20,000、既定 8,000)。構造化形式はJSONの長さを基準に項単位で切り詰め | `8000` |
| `max_total_chars` | 応答全体のJSONの最大文字数(10,000〜24,000、既定 20,000)。超過する後続本文は省略。上限を超える指定は入力エラー | `20000` |
上限は、`structuredContent` を含む応答全体が約5万字に収まる値です。
切り詰めたテキストの続きは、案内された `offset` を `get_law` に指定して取得します。本文を省略した結果は `omitted: true` と省略一覧で示します。取得の成功・失敗件数は本文の省略によって変わりません。
長い条(例: 建築基準法施行規則 第1条の3)は `get_law` で個別に取得してください。
#### `verify_citation`
| パラメータ | 説明 | 例 |
| ----------- | ------------------------------------------------------------------------------- | --- |
| `citations` | 検証対象の配列。各要素に `law_name`, `article_number`, `claimed_text`(省略可) | — |
#### `suggest_related`
| パラメータ | 説明 | 例 |
| ---------------- | ---------------------------- | ------------ |
| `law_name` | 法令名(正式名称または略称) | `建築基準法` |
| `article_number` | 条文番号 | `第20条` |
#### `analyze_article`
| パラメータ | 説明 | 例 |
| ---------------- | ---------------------------- | ------------ |
| `law_name` | 法令名(正式名称または略称) | `建築基準法` |
| `article_number` | 条文番号 | `第20条` |
#### `get_metrics`
パラメータなし。サーバー起動後の稼働時間・ツール呼び出し回数・API リクエスト数・キャッシュヒット率を返す。
## 使用例
### 条文取得
```
建築基準法第20条を取得して
→ get_law(law_name="建築基準法", article_number="20")
```
### 略称使用
```
建基法第6条の2を取得して
→ get_law(law_name="建基法", article_number="第6条の2")
```
### 法令検索
```
都市計画に関する法令を検索して
→ search_law(keyword="都市計画")
```
### 条文本文検索
```
建築基準法で「耐火構造」が出てくる条文を探して
→ search_articles(keyword="耐火構造", law_title="建築基準法")
→ 該当文と区分(本則 / 附則)が返るので、条番号は get_law で確定する
```
### 全文取得
```
建築基準法施行令の全文を取得して
→ get_full_law(law_name="建築基準法施行令")
```
### 告示取得
```
耐火構造の構造方法を定める件を取得して
→ get_kokuji(kokuji_name="耐火構造の構造方法を定める件")
```
### 附則取得
```
建築基準法の附則を取得して
→ get_law(law_name="建築基準法", article_number="附則")
建築基準法施行令の附則第1条を取得して
→ get_law(law_name="建築基準法施行令", article_number="附則第1条")
未施行の改正附則(現行データに無いときは改正履歴から未施行版を取る)
→ get_law(law_name="建築基準法施行令", article_number="附則(令和8年政令第284号)")
```
### 別表取得
```
建築基準法の別表第一を取得して
→ get_law(law_name="建築基準法", article_number="別表第一")
```
## ハルシネーション防止ワークフロー
AI が建築法規について回答する際、条文の引用ミスや存在しない条文の捏造(ハルシネーション)が発生することがあります。本ツールは **4 段階の防止メカニズム** でこれを解決します。
### 基本ワークフロー(自動実行)
```
ユーザーの質問
↓
1. AI が仮回答を作成
↓
2. get_law / get_kokuji で引用した条文・告示の原文を取得
↓
3. 原文と仮回答を照合 → 誤りがあれば修正
↓
4. 2〜3 を収束するまで繰り返す(最大 4 ラウンド)
↓
照合済みの条文番号・告示番号を引用元として明示した最終回答
```
このワークフローは MCP サーバーの [システムプロンプト](src/server.ts) に組み込まれており、AI が自動的に実行します。
### 追加の検証ツール
基本ワークフローに加えて、以下の専用ツールを使用することでさらに精度を高められます。
| ツール | 用途 | 使い方 |
| ----------------- | ----------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| `verify_citation` | AI の回答に含まれる **法令引用を自動検証** する | 回答テキストから条文番号・法令名を自動抽出し、e-Gov API から原文を取得して照合。不一致があれば指摘し、正しい条文を提示する(最大 10 件同時検証) |
| `suggest_related` | 指定条文の **関連法令を自動提案** する | 条文間の参照(委任先・同法令内参照)を解析し、見落としがちな関連規定を提示。施行令への委任や別の章への参照を漏れなく把握できる |
| `analyze_article` | 条文の **構造を解析** する | 項数・号数・参照先の統計情報をメタデータとして返す。複雑な条文の全体像を把握し、読み落としを防ぐ |
| `get_laws_batch` | **複数条文を一括取得** する | 関連する複数の条文をまとめて取得し、条文間の整合性を確認する(最大 20 件) |
### 使用例:引用検証
```
「建築基準法第20条で木造建築物の構造計算が必要な条件を教えて」
→ AI が回答を作成
→ verify_citation で回答内の引用を自動検証
→ 「第20条第1項第四号の引用が正確であることを確認しました」
または
→ 「第20条第1項第三号の記載に誤りがあります。正しくは…」
```
## 対応法令一覧(116 法令 + e-Gov 全法令)
> 以下の 116 法令は略称マップに登録済みです。略称マップに含まれない法令も、正式名称を指定すれば e-Gov API 検索で動的に取得できます。
### 総則(4 法令)
| 法令名 | 略称 |
| ------------------ | -------------------- |
| 建築基準法 | 建基法, 基準法 |
| 建築基準法施行令 | 建基令, 基準法施行令 |
| 建築基準法施行規則 | 建基規則 |
| 民法 | — |
### 手続関連規定(6 法令)
| 法令名 | 略称 |
| ---------------- | ------------ |
| 建築士法 | 士法 |
| 建築士法施行令 | 士法施行令 |
| 建築士法施行規則 | 士法施行規則 |
| 建設業法 | — |
| 建設業法施行令 | — |
| 建設業法施行規則 | — |
### 集団規定・街づくり(13 法令)
| 法令名 | 略称 |
| -------------------------------------------------- | ---------------------- |
| 都市計画法 | 都計法 |
| 都市計画法施行令 | 都計令 |
| 都市再開発法 | 再開発法 |
| 景観法 | — |
| 密集市街地における防災街区の整備の促進に関する法律 | 密集法 |
| 都市の低炭素化の促進に関する法律 | 低炭素法 |
| 屋外広告物法 | — |
| 文化財保護法 | — |
| 土地区画整理法 | 区画整理法 |
| 都市緑地法 | — |
| 生産緑地法 | — |
| 国土利用計画法 | 国土利用計画法, 国土法 |
| 都市計画法施行規則 | 都計規則 |
### 防火・耐火規定(4 法令)
| 法令名 | 略称 |
| ------------------------ | ---------- |
| 消防法 | — |
| 消防法施行令 | 消防令 |
| 消防法施行規則 | 消防規則 |
| 危険物の規制に関する規則 | 危険物規則 |
### 構造規定(7 法令)
| 法令名 | 略称 |
| ------------------------------------------ | ---------------------- |
| 地震防災対策特別措置法 | 地震防災特措法 |
| 津波防災地域づくりに関する法律 | 津波防災法 |
| 特定都市河川浸水被害対策法 | 特定都市河川法 |
| 住宅地区改良法 | — |
| 建築物における衛生的環境の確保に関する法律 | 建築物衛生法, ビル管法 |
| 建築物の耐震改修の促進に関する法律施行令 | 耐震改修促進法施行令 |
| 建築物の耐震改修の促進に関する法律施行規則 | 耐震改修促進法施行規則 |
### 建築材料(3 法令)
| 法令名 | 略称 |
| ---------------- | ---------------------- |
| 産業標準化法 | JIS法, 産業標準化法 |
| 製造物責任法 | PL法, 製造物責任法 |
| 石綿障害予防規則 | 石綿則, アスベスト規則 |
### 設備関連規定(5 法令)
| 法令名 | 略称 |
| -------------------------- | ---------------- |
| 浄化槽法 | — |
| 電気工事士法 | — |
| 電気用品安全法 | 電安法 |
| 浄化槽法施行令 | — |
| 環境省関係浄化槽法施行規則 | 浄化槽法施行規則 |
### その他(5 法令)
| 法令名 | 略称 |
| ---------------------------------------------- | ------------------ |
| 特定住宅瑕疵担保責任の履行の確保等に関する法律 | 住宅瑕疵担保履行法 |
| 不動産登記法 | 不登法 |
| 借地借家法 | — |
| 不動産の鑑定評価に関する法律 | 不動産鑑定法 |
| 住宅宿泊事業法 | 民泊新法 |
### 建築基準関係規定・建築関連法令(52 法令)
<details>
<summary>法令一覧を表示</summary>
| 法令名 | 略称 |
| ------------------------------------------------------------ | -------------------- |
| 旅館業法 | — |
| 食品衛生法 | — |
| 風俗営業等の規制及び業務の適正化等に関する法律 | 風営法, 風適法 |
| 興行場法 | — |
| 公衆浴場法 | — |
| 医療法 | — |
| 児童福祉法 | — |
| 社会福祉法 | — |
| 老人福祉法 | — |
| 学校教育法 | — |
| 駐車場法 | — |
| 火薬類取締法 | — |
| 高圧ガス保安法 | — |
| 液化石油ガスの保安の確保及び取引の適正化に関する法律 | 液石法, LPガス法 |
| ガス事業法 | — |
| 電気事業法 | — |
| 宅地造成及び特定盛土等規制法 | 盛土規制法, 宅造法 |
| 宅地建物取引業法 | 宅建業法 |
| 道路法 | — |
| 土地収用法 | — |
| 農地法 | — |
| 森林法 | — |
| 河川法 | — |
| 港湾法 | — |
| 地すべり等防止法 | — |
| 急傾斜地の崩壊による災害の防止に関する法律 | 急傾斜地法 |
| 土砂災害警戒区域等における土砂災害防止対策の推進に関する法律 | 土砂災害防止法 |
| 危険物の規制に関する政令 | 危険物政令 |
| 水道法 | — |
| 下水道法 | — |
| 廃棄物の処理及び清掃に関する法律 | 廃棄物処理法, 廃掃法 |
| 土壌汚染対策法 | — |
| 労働安全衛生法 | 安衛法, 労安法 |
| 建設工事に係る資材の再資源化等に関する法律 | 建設リサイクル法 |
| 大気汚染防止法 | — |
| 水質汚濁防止法 | — |
| 騒音規制法 | — |
| 振動規制法 | — |
| 悪臭防止法 | — |
| 高齢者、障害者等の移動等の円滑化の促進に関する法律 | バリアフリー法 |
| 高齢者、障害者等の移動等の円滑化の促進に関する法律施行令 | バリアフリー法施行令 |
| 道路交通法 | 道交法 |
| 都市公園法 | — |
| 自然公園法 | — |
| 古都における歴史的風土の保存に関する特別措置法 | 古都保存法 |
| 空家等対策の推進に関する特別措置法 | 空家対策特措法 |
| 介護保険法 | — |
| 障害者の日常生活及び社会生活を総合的に支援するための法律 | 障害者総合支援法 |
| 墓地、埋葬等に関する法律 | 墓地埋葬法 |
| 高齢者の居住の安定確保に関する法律 | 高齢者住まい法 |
| 労働安全衛生法施行令 | 安衛令 |
| 宅地造成及び特定盛土等規制法施行令 | 盛土規制法施行令 |
</details>
### 省エネ・住宅関連法(14 法令)
| 法令名 | 略称 |
| ------------------------------------------------------------------ | ---------------------- |
| 建築物のエネルギー消費性能の向上等に関する法律 | 建築物省エネ法 |
| 建築物のエネルギー消費性能の向上等に関する法律施行令 | 建築物省エネ法施行令 |
| 建築物エネルギー消費性能基準等を定める省令 | 省エネ基準省令 |
| エネルギーの使用の合理化及び非化石エネルギーへの転換等に関する法律 | 省エネ法 |
| 住宅の品質確保の促進等に関する法律 | 品確法, 住宅品質確保法 |
| 長期優良住宅の普及の促進に関する法律 | 長期優良住宅法 |
| マンションの管理の適正化の推進に関する法律 | マンション管理適正化法 |
| マンションの建替え等の円滑化に関する法律 | マンション建替え法 |
| 建物の区分所有等に関する法律 | 区分所有法 |
| 住宅の品質確保の促進等に関する法律施行令 | 品確法施行令 |
| 住宅の品質確保の促進等に関する法律施行規則 | 品確法施行規則 |
| 長期優良住宅の普及の促進に関する法律施行令 | 長期優良住宅法施行令 |
| 長期優良住宅の普及の促進に関する法律施行規則 | 長期優良住宅法施行規則 |
| 建築物のエネルギー消費性能の向上等に関する法律施行規則 | 建築物省エネ法施行規則 |
### 既存建築物関連(3 法令)
| 法令名 | 略称 |
| ------------------------------------------ | ---------------- |
| 建築物の耐震改修の促進に関する法律 | 耐震改修促進法 |
| 被災市街地復興特別措置法 | 被災市街地復興法 |
| 被災区分所有建物の再建等に関する特別措置法 | 被災マンション法 |
## 告示の取得
e-Gov API は告示を収録していないため、`get_kokuji` は国土交通省の告示・通達データベース(Excel → PDF)から正式名称で動的に取得します。見つからない場合は e-Gov API のキーワード検索にフォールバックします。
ハードコードされたプリセットは持たず、常に最新の告示データベースから取得するため、改正後も陳腐化しません。
```
耐火構造の構造方法を定める件を取得して
→ get_kokuji(kokuji_name="耐火構造の構造方法を定める件")
木造建築物の軸組の設置の基準を定める件を取得して
→ get_kokuji(kokuji_name="木造建築物の軸組の設置の基準を定める件")
```
## 法令解決の仕組み
- 法令名(正式名称または略称)を受け取ると、e-Gov API のキーワード検索で `law_id` を動的に解決します
- 略称マップに登録済みの法令は、略称から正式名称に展開した上で検索します
- 略称マップに含まれない法令も、正式名称を指定すれば取得可能です
- `check_law_updates` ツールで法令の改正状況を確認できます(e-Gov API のリビジョン履歴を参照)
> **注意**: 自治体条例(都道府県・市区町村の条例)は e-Gov API の収録対象外のため取得できません。対象は国の法律・政令・省令・告示のみです。
> 例: 東京都建築安全条例、横浜市建築基準条例などは取得不可
## 環境変数
| 変数 | 説明 | デフォルト |
| ------------------------------ | ------------------------------------------------- | -------------------------------------- |
| `BUILDING_LAW_CACHE` | キャッシュモード(`memory` / `file`) | `memory` |
| `BUILDING_LAW_CACHE_DIR` | ファイルキャッシュの保存先ディレクトリ | `~/.cache/building-standards-act-mcp/` |
| `BUILDING_LAW_LOG_LEVEL` | ログレベル(`debug` / `info` / `warn` / `error`) | `info` |
| `BUILDING_LAW_REQUEST_TIMEOUT` | API リクエストタイムアウト(ミリ秒) | `30000` |
| `BUILDING_LAW_RATE_LIMIT_MS` | API 呼び出し間隔(ミリ秒) | `200` |
| `BUILDING_LAW_CONCURRENCY` | 最大並行 API 呼び出し数 | `5` |
### 永続キャッシュの有効化
```json
{
"mcpServers": {
"building-standards-act": {
"command": "npx",
"args": ["-y", "building-standards-act-mcp@latest"],
"env": {
"BUILDING_LAW_CACHE": "file"
}
}
}
}
```
## 技術仕様
| 項目 | 値 |
| ---------------------------- | -------------------------------- |
| e-Gov API ベース URL | `https://laws.e-gov.go.jp/api/2` |
| MLIT 告示データベース | `https://www.mlit.go.jp/notice/` |
| 検索キャッシュ TTL | 30 分 |
| 法令データキャッシュ TTL | 24 時間 |
| MLIT Excel キャッシュ TTL | 6 時間 |
| 告示 PDF テキストキャッシュ | 24 時間 |
| リビジョン履歴キャッシュ TTL | 1 時間 |
| リクエストタイムアウト | 30 秒(環境変数で変更可能) |
| API 並行呼び出し | 最大 5 並行(200ms 間隔) |
| Vercel デプロイ | 対応(MCP-over-HTTP + REST API) |
| Vercel 関数タイムアウト | 60 秒(maxDuration) |
| Node.js | >= 22.12.0 |
## セキュリティ
- **読み取り専用**: 本サーバーは法令テキストの取得のみを行い、書き込み・変更・削除操作は一切ありません
- **公開データのみ**: e-Gov 法令 API および国土交通省告示データベースから公開情報を取得します。API キーや認証情報は不要です
- **入力バリデーション**: 全ツールの入力パラメータに文字数上限を設定しています(OWASP MCP Top 10 MCP05 対応)
- **SSRF 対策**: PDF 取得先を政府ドメイン(`www.mlit.go.jp`)に限定しています
- **キャッシュ制限**: インメモリキャッシュにエントリ数上限と TTL 自動失効を設定し、メモリ枯渇を防止しています
- **引用検証**: `verify_citation` ツールで AI が生成した法令引用を条文原文と照合できます
## データソース
- 法令: [e-Gov 法令検索](https://laws.e-gov.go.jp/)(デジタル庁)
- 告示: [国土交通省 告示・通達データベース](https://www.mlit.go.jp/notice/)(国土交通省)
## 免責事項
本 MCP サーバーは、e-Gov 法令検索および国土交通省告示・通達データベースから取得した情報を提供しますが、掲載情報の正確性・完全性を保証するものではありません。
本ツールの利用に伴って発生した不利益や問題について、開発者は一切の責任を負いません。正確な条文の確認には、必ず[官報](https://kanpou.npb.go.jp/)または法令集の原本を参照してください。
> 国土交通省は掲載されている情報の正確性については万全を期すよう努力しておりますが、本ページのデータの利用に伴って発生した不利益や問題について、責任を負うものではありません。
> — [国土交通省 告示・通達データベース](https://www.mlit.go.jp/notice/)
## 謝辞
本プロジェクトは [tax-law-mcp](https://github.com/kentaroajisaka/tax-law-mcp)(MIT License, Copyright (c) 2026 Kentaro Ajisaka)のアーキテクチャおよびコードを参考に開発しました。
## ライセンス
MIT
TDQS
Scored across 12 tools
Each tool targets a distinct resource and action: article retrieval, full-law retrieval, law-title search, article-text search, kokuji retrieval, amendment listing, update checks, batch retrieval, citation verification, structural analysis, related-reference suggestion, and server metrics. Descriptions explicitly clarify potentially overlapping pairs such as search_law vs. search_articles and get_law vs. get_full_law.
All 12 tools use lowercase snake_case with predictable verb-led patterns (get_, search_, check_, verify_, analyze_, suggest_), and no mixed conventions are present. Minor variations like get_full_law, get_laws_batch, and get_kokuji_amendments remain readable and consistent with the overall scheme.
12 tools is well-scoped for a legal-research MCP covering retrieval, search, update checking, verification, and analysis. The count stays within a reasonable range and each tool has a plausible role, even though get_metrics is ancillary.
The surface covers article/full-law retrieval, title and full-text search, kokuji retrieval and amendments, update history, batch retrieval, citation verification, and article analysis. Minor gaps remain: no tool to list available laws/aliases, no keyword search over kokuji contents, and citation verification is capped at 10 items, but core legal workflows are supported.