building-standards-act-mcp
An MCP server that fetches, searches, and verifies Japanese building laws and public notices from e-Gov and MLIT in real time.
Retrieve specific law articles by law name (full or abbreviated) and article number; supports text and structured JSON output (
get_law).Retrieve the full text of a law (
get_full_law).Search building-related laws by title keyword and registered aliases (
search_law).Fetch technical public notices (kokuji) from the MLIT PDF database with e-Gov fallback (
get_kokuji).Check law amendment/update status, optionally with revision history (
check_law_updates).Batch retrieve up to 20 law articles (
get_laws_batch).Verify AI-generated legal citations against original article text (
verify_citation).Suggest related laws, delegated provisions, and internal references for an article (
suggest_related).Analyze article structure metadata such as paragraph/item counts and reference statistics (
analyze_article).Report server usage metrics including tool calls, API requests, cache hit rate, and uptime (
get_metrics).
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@building-standards-act-mcp建築基準法第20条を教えて"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
building-standards-act-mcp
建築確認申請に必要な法令・告示を 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ツール)
Related MCP server: e-Gov Law MCP Server
Web で使う(Vercel デプロイ)
Vercel にデプロイすると、Claude.ai からすぐに使えます。環境変数の設定は不要です(e-Gov API は公開 API)。
公開インスタンス: https://building-standards-act-mcp.vercel.app/api/mcp(自分でデプロイしなくても、この URL をそのまま Custom Connector に登録できます)
Claude.ai でのセットアップ(Free/Pro/Max/Team/Enterprise)
Custom Connectors は Free / Pro / Max / Team / Enterprise の各プランで利用できます(Free プランは 1 件まで)。ローカルで動かしたい場合は npx(ローカル)でのセットアップ を参照してください。
公開インスタンスを使う場合はこの手順を飛ばす。自分でホストする場合は上の「Deploy with Vercel」ボタンでデプロイ(ワンクリック)
claude.ai → Customize → Connectors
「+ Add」→「Add custom connector」をクリック
URL に
https://building-standards-act-mcp.vercel.app/api/mcp(自分でデプロイした場合はその URL)を入力し、認証は「No sign in」を選択チャットで「+」→「Connectors」→ building-standards-act を有効化
「建築基準法第20条を教えて」と質問
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(推奨)
インストール不要で実行できます。
npx -y building-standards-act-mcp@latest@latest を付けると、npx のキャッシュに古い版が残っていても最新版で起動します。
Claude Desktop
claude_desktop_config.json に以下を追加してください。
{
"mcpServers": {
"building-standards-act": {
"command": "npx",
"args": ["-y", "building-standards-act-mcp@latest"]
}
}
}Claude Code
claude mcp add building-standards-act -- npx -y building-standards-act-mcp@latestWindows + VS Code 拡張機能の場合
VS Code 拡張機能では npx 経由の起動が Connection closed エラーになる場合があります。その場合は、公開中の Vercel 版に HTTP で接続するのが確実です。
claude mcp add --transport http building-standards-act https://building-standards-act-mcp.vercel.app/api/mcpプロジェクト単位で設定するなら、プロジェクトルートの .mcp.json に次を書きます。
{
"mcpServers": {
"building-standards-act": {
"type": "http",
"url": "https://building-standards-act-mcp.vercel.app/api/mcp"
}
}
}ローカルの stdio で動かしたい場合は、npx を cmd /c で包みます。
claude mcp add building-standards-act -- cmd /c npx -y building-standards-act-mcp@latest注意: グローバルインストールした
dist/index.jsのパスを.mcp.jsonに直接書く方法は使わないでください。パッケージの更新・削除やフォルダの移動で、エラーを出さずに接続できなくなります。
ローカル(ソースから)
git clone https://github.com/Sora-bluesky/building-standards-act-mcp.git
cd building-standards-act-mcp
npm install
npm run build{
"mcpServers": {
"building-standards-act": {
"command": "node",
"args": ["/path/to/building-standards-act-mcp/dist/index.js"]
}
}
}MCP ツール
ツール | 説明 |
| 条番号を指定して条文を取得する。 |
| 法令の全文を取得する。 |
| 法令名(タイトル)で建築関連法令を検索する。略称マップと e-Gov API の両方を検索。条文本文の検索は |
| 条文本文をキーワードで全文検索する(e-Gov |
| 建築基準法が技術基準を委任している告示の全文を取得する(省エネ告示は国交省 PDF から直接取得)。住宅局の DB 告示には改正一覧も表示。 |
| 告示番号または告示名から改正一覧だけを軽量に取得する(2018年1月1日以降公布分) |
| 法令の改正状況を e-Gov API で確認する。 |
| 複数条文を一括取得(最大20件)。 |
| AIの回答に含まれる法令引用を検証する(条文存在確認・テキスト照合、最大10件) |
| 指定した条文の関連法令・委任先・同法令内参照を自動抽出して提案する |
| 条文の構造解析メタデータ(項数・号数・参照統計・プレビュー)をJSON形式で返す |
| サーバーの使用量メトリクスを返す(ツール呼び出し回数・APIリクエスト数・キャッシュヒット率) |
パラメータ
get_law
パラメータ | 説明 | 例 |
| 法令名(正式名称または略称) |
|
| 条文番号(附則・別表にも対応) |
|
| 出力形式( |
|
| 本文と参照一覧( |
|
| 本文内の開始位置(既定 0)。 |
|
| この条の本文から探す語(1〜100文字)。空白を無視し、全角・半角を区別せずに検索。一致を含む行から表示。 |
|
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
パラメータ | 説明 | 例 |
| 法令名(正式名称または略称) |
|
| 1 回に返す最大文字数(1,000〜48,000、既定 30,000) |
|
| 続きを取るときの開始位置(末尾の案内に出る値) |
|
search_law
パラメータ | 説明 | 例 |
| 法令名に含まれる語 |
|
search_articles
パラメータ | 説明 | 例 |
| 条文本文に含まれる語。半角スペース区切りで AND 検索。AND・OR・NOT は演算子ではなく検索語として扱われる。全角スペースは半角に直して送る。 |
|
| 法令名または略称で絞り込み(省略時は e-Gov の全法令) |
|
| 返す該当文の数(既定 10、最大 50) |
|
| 続きを取るときの開始位置(応答の |
|
連続する空白は半角スペース1つにまとめ、前後の空白を除いて検索します。正規化後に検索語が空の場合は入力エラーを返し、検索結果が0件の場合は通信エラーと区別して「該当する条文はありませんでした。」と返します。
get_kokuji
住宅局の DB 告示には、国交省「建築基準法等に基づく告示の制定・改正について」から改正一覧を付けます。国交省の告示 DB には2019年3月以降の建築告示の改正が反映されていないため、本文を根拠にする前に新旧対照表 PDF を確認してください。対象が未確定の改正告示があれば件数を示します。
改正欄は毎ページに表示します。offset は従来どおり見出し等を含む本文の位置です。改正欄を含む表示テキストを content と structuredContent.text の両方に入れます。本文ページの上限を減らし、両方のテキストと構造化情報を合わせた応答全体を約50,000文字に収めます。構造化出力には取得元・告示番号・改正一覧・続きの位置も入れます。
パラメータ | 説明 | 例 |
| 告示名 |
|
| 1 回に返す最大文字数(1,000〜48,000、既定 30,000) |
|
| 続きを取るときの開始位置 |
|
get_kokuji_amendments
本文を取らずに改正の有無だけを確認できます。kokuji_number と kokuji_name は、どちらか一つだけ指定してください。
パラメータ | 説明 | 例 |
| 年・発出省・番号を含む告示番号(最大100文字、略記可) |
|
| 告示名(最大200文字) |
|
対象は平成30年1月1日以降に公布された告示(改正ページの平成29年度分から)です。公布日・施行日・新旧対照表等へのリンクを返します。最大30件を新しい順に表示し、省略件数・対象未確定件数も示します。取得失敗時や対象未確定の告示がある場合は、官報等でも確認してください。
check_law_updates
パラメータ | 説明 | 例 |
| 法令名または略称(単体チェック) |
|
| 章グループ(バッチチェック、省略時は全章) |
|
| 改正履歴の詳細を表示( |
|
| 基準日。これより後の改正だけを報告(省略時は 12 か月前) |
|
get_laws_batch
パラメータ | 説明 | 例 |
| 取得対象の配列。各要素に | — |
| 条文ごとの最大文字数(1,000〜20,000、既定 8,000)。構造化形式はJSONの長さを基準に項単位で切り詰め |
|
| 応答全体のJSONの最大文字数(10,000〜24,000、既定 20,000)。超過する後続本文は省略。上限を超える指定は入力エラー |
|
上限は、structuredContent を含む応答全体が約5万字に収まる値です。
切り詰めたテキストの続きは、案内された offset を get_law に指定して取得します。本文を省略した結果は omitted: true と省略一覧で示します。取得の成功・失敗件数は本文の省略によって変わりません。
長い条(例: 建築基準法施行規則 第1条の3)は get_law で個別に取得してください。
verify_citation
パラメータ | 説明 | 例 |
| 検証対象の配列。各要素に | — |
suggest_related
パラメータ | 説明 | 例 |
| 法令名(正式名称または略称) |
|
| 条文番号 |
|
analyze_article
パラメータ | 説明 | 例 |
| 法令名(正式名称または略称) |
|
| 条文番号 |
|
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 サーバーの システムプロンプト に組み込まれており、AI が自動的に実行します。
追加の検証ツール
基本ワークフローに加えて、以下の専用ツールを使用することでさらに精度を高められます。
ツール | 用途 | 使い方 |
| AI の回答に含まれる 法令引用を自動検証 する | 回答テキストから条文番号・法令名を自動抽出し、e-Gov API から原文を取得して照合。不一致があれば指摘し、正しい条文を提示する(最大 10 件同時検証) |
| 指定条文の 関連法令を自動提案 する | 条文間の参照(委任先・同法令内参照)を解析し、見落としがちな関連規定を提示。施行令への委任や別の章への参照を漏れなく把握できる |
| 条文の 構造を解析 する | 項数・号数・参照先の統計情報をメタデータとして返す。複雑な条文の全体像を把握し、読み落としを防ぐ |
| 複数条文を一括取得 する | 関連する複数の条文をまとめて取得し、条文間の整合性を確認する(最大 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 法令)
法令名 | 略称 |
旅館業法 | — |
食品衛生法 | — |
風俗営業等の規制及び業務の適正化等に関する法律 | 風営法, 風適法 |
興行場法 | — |
公衆浴場法 | — |
医療法 | — |
児童福祉法 | — |
社会福祉法 | — |
老人福祉法 | — |
学校教育法 | — |
駐車場法 | — |
火薬類取締法 | — |
高圧ガス保安法 | — |
液化石油ガスの保安の確保及び取引の適正化に関する法律 | 液石法, LPガス法 |
ガス事業法 | — |
電気事業法 | — |
宅地造成及び特定盛土等規制法 | 盛土規制法, 宅造法 |
宅地建物取引業法 | 宅建業法 |
道路法 | — |
土地収用法 | — |
農地法 | — |
森林法 | — |
河川法 | — |
港湾法 | — |
地すべり等防止法 | — |
急傾斜地の崩壊による災害の防止に関する法律 | 急傾斜地法 |
土砂災害警戒区域等における土砂災害防止対策の推進に関する法律 | 土砂災害防止法 |
危険物の規制に関する政令 | 危険物政令 |
水道法 | — |
下水道法 | — |
廃棄物の処理及び清掃に関する法律 | 廃棄物処理法, 廃掃法 |
土壌汚染対策法 | — |
労働安全衛生法 | 安衛法, 労安法 |
建設工事に係る資材の再資源化等に関する法律 | 建設リサイクル法 |
大気汚染防止法 | — |
水質汚濁防止法 | — |
騒音規制法 | — |
振動規制法 | — |
悪臭防止法 | — |
高齢者、障害者等の移動等の円滑化の促進に関する法律 | バリアフリー法 |
高齢者、障害者等の移動等の円滑化の促進に関する法律施行令 | バリアフリー法施行令 |
道路交通法 | 道交法 |
都市公園法 | — |
自然公園法 | — |
古都における歴史的風土の保存に関する特別措置法 | 古都保存法 |
空家等対策の推進に関する特別措置法 | 空家対策特措法 |
介護保険法 | — |
障害者の日常生活及び社会生活を総合的に支援するための法律 | 障害者総合支援法 |
墓地、埋葬等に関する法律 | 墓地埋葬法 |
高齢者の居住の安定確保に関する法律 | 高齢者住まい法 |
労働安全衛生法施行令 | 安衛令 |
宅地造成及び特定盛土等規制法施行令 | 盛土規制法施行令 |
省エネ・住宅関連法(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 の収録対象外のため取得できません。対象は国の法律・政令・省令・告示のみです。 例: 東京都建築安全条例、横浜市建築基準条例などは取得不可
環境変数
変数 | 説明 | デフォルト |
| キャッシュモード( |
|
| ファイルキャッシュの保存先ディレクトリ |
|
| ログレベル( |
|
| API リクエストタイムアウト(ミリ秒) |
|
| API 呼び出し間隔(ミリ秒) |
|
| 最大並行 API 呼び出し数 |
|
永続キャッシュの有効化
{
"mcpServers": {
"building-standards-act": {
"command": "npx",
"args": ["-y", "building-standards-act-mcp@latest"],
"env": {
"BUILDING_LAW_CACHE": "file"
}
}
}
}技術仕様
項目 | 値 |
e-Gov API ベース URL |
|
MLIT 告示データベース |
|
検索キャッシュ 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 法令検索(デジタル庁)
告示: 国土交通省 告示・通達データベース(国土交通省)
免責事項
本 MCP サーバーは、e-Gov 法令検索および国土交通省告示・通達データベースから取得した情報を提供しますが、掲載情報の正確性・完全性を保証するものではありません。
本ツールの利用に伴って発生した不利益や問題について、開発者は一切の責任を負いません。正確な条文の確認には、必ず官報または法令集の原本を参照してください。
国土交通省は掲載されている情報の正確性については万全を期すよう努力しておりますが、本ページのデータの利用に伴って発生した不利益や問題について、責任を負うものではありません。 — 国土交通省 告示・通達データベース
謝辞
本プロジェクトは tax-law-mcp(MIT License, Copyright (c) 2026 Kentaro Ajisaka)のアーキテクチャおよびコードを参考に開発しました。
ライセンス
MIT
Available Tools
12 toolsanalyze_article条文構造解析ARead-onlyIdempotent
条文の構造を解析し、項数・号数・参照統計・プレビューなどのメタデータをJSON形式で返す。AIが要約・解説を生成する際の素材データとして活用。
| Name | Required | Description | Default |
|---|---|---|---|
| law_name | Yes | 法令名(正式名称または略称。例: 建築基準法、建基法) | |
| article_number | Yes | 条文番号(例: 第20条、20) |
Output Schema
| Name | Required | Description |
|---|---|---|
| caption | Yes | |
| law_num | Yes | |
| law_name | Yes | |
| structure | Yes | |
| article_num | Yes | |
| article_title | Yes | |
| structured_data | Yes | |
| reference_summary | Yes | |
| paragraph_summaries | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety and repeatability profile is covered. The description adds that output is JSON metadata rather than article text, which is useful, but with an output schema present the enumerated return fields add little beyond structured data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with the action and output shape, followed by the usage context. Nothing is redundant, though the second sentence is fairly generic guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema, rich annotations, and fully documented parameters, the description only needs to frame purpose and usage, which it does. It could be stronger by distinguishing itself from the many sibling retrieval tools, but nothing essential to correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and both parameters (law_name, article_number) are documented in the schema with format examples. The description contributes no additional parameter meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: it analyzes the structure of a legal article and returns metadata (paragraph counts, item counts, reference statistics, preview). This clearly differs from siblings that fetch raw text (get_law, search_articles), though the description never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an implied usage context — 'use as source material when an AI generates summaries or explanations' — which tells the agent this is a pre-processing step rather than a text-fetching tool. However, it names no alternatives and gives no when-not-to-use condition, so the routing signal remains inferential.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_law_updates改正状況確認BRead-onlyIdempotent
法令の改正状況をe-Gov APIで確認する。法令名指定で単体チェック、グループ指定でバッチチェック、show_historyで改正履歴表示が可能。
| Name | Required | Description | Default |
|---|---|---|---|
| group | No | 検証対象の章グループ(例: 1章)。省略時は全プリセットをチェック。 | |
| since | No | 基準日(YYYY-MM-DD)。この日より後に公布された改正だけを『改正あり』として報告する。省略時は今日の 12 か月前 | |
| law_name | No | 法令名または略称(例: 建築基準法、建基法)。単体チェックに使用。 | |
| show_history | No | true で改正履歴の詳細を表示。law_name 指定時のみ有効。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, destructiveHint=false, so the safety profile is covered. The description adds that the check is performed against the external e-Gov API, but it does not disclose rate limits, error behavior, or what output is produced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with the core purpose front-loaded and the mode distinctions following. No filler, though it is very terse for a four-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should ideally hint at the return shape (e.g., what a '改正あり' result contains), but it does not. Annotations cover the safety profile and the schema covers parameters, leaving output format as the notable gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (group, since, law_name, show_history) are already documented in the schema. The description restates the law_name/group/show_history usage but adds no syntax, format, or constraint detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (確認する) and resource (法令の改正状況), plus the mechanism (e-Gov API). It is clearly distinguishable from read-oriented siblings like get_law or search_law, though it does not explicitly name how it differs from the amendment-related sibling get_kokuji_amendments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description maps the three parameters to three usage modes (law_name=単体チェック, group=バッチチェック, show_history=履歴表示), which is useful implied guidance. However, it offers no explicit when-to-use versus siblings or any when-not/exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_full_law法令全文取得ARead-onlyIdempotent
法令の全文を取得する。条番号を指定せず法令全体のテキストを返す。
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | 取得開始位置(0から始まる文字位置)。続きの取得時は案内された offset を指定。 | |
| law_name | Yes | 法令名(正式名称、略称のいずれか。例: 建築基準法施行令、建基令) | |
| max_chars | No | 1回に取得する最大文字数(1,000〜48,000)。省略時は30,000文字。 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds that the entire law text is returned rather than a subset, which is useful return-scope context, but it says nothing about pagination/truncation behavior (covered only in the schema) or any rate/permission constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero waste; the core action is front-loaded and the scope clarification follows immediately. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, idempotent retrieval tool with full schema coverage and no output schema, the description is largely sufficient: it states what is returned and at what granularity. It stops short of describing the offset-based continuation flow, but that is adequately handled by the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so law_name, offset, and max_chars are fully documented in the schema. The description adds no parameter-level meaning beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('法令の全文を取得する') and clarifies scope ('条番号を指定せず法令全体のテキストを返す'), which implicitly separates it from article-level siblings. However, it never names or contrasts with the closely related 'get_law' sibling, so an agent cannot fully disambiguate between the two from the description alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase '条番号を指定せず' implies this tool is for whole-law retrieval as opposed to article-specific tools, but no alternative (e.g., get_law, search_articles) is named and no explicit when-to-use condition is given. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_kokuji告示取得ARead-onlyIdempotent
告示名または告示番号(例: 平成28年国土交通省告示第696号、平28国交告696)から、建築基準法が技術基準を委任している告示の全文を取得する。国土交通省の告示データベース(PDF)から取得し、告示名で見つからない場合はe-Gov APIで検索を試みる。番号が国交省 DB にない場合は、その旨を返す。
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | 取得開始位置(0から始まる文字位置)。続きの取得時は案内された offset を指定。 | |
| max_chars | No | 1回に取得する本文の最大文字数(1,000〜48,000)。省略時は30,000文字。本文を content と structuredContent.text の両方に含めるため、改正欄と構造化情報も合わせた応答全体が約50,000文字に収まるよう本文ページを減らす。 | |
| kokuji_name | Yes | 告示名または告示番号(例: 耐火構造の構造方法を定める件、平成28年国土交通省告示第696号、平28国交告696)。番号が国交省 DB にない場合は、その旨を返す。 |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | Yes | |
| found | Yes | |
| title | Yes | |
| offset | Yes | |
| source | Yes | |
| db_notice | Yes | |
| amendments | Yes | |
| next_offset | Yes | |
| total_chars | Yes | |
| current_title | Yes | |
| kokuji_number | Yes | |
| housing_bureau | Yes | |
| document_number | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld/non-destructive, so the safety profile is covered. The description adds genuinely useful behavior beyond that: the primary data source (MLIT PDF database), the e-Gov fallback, and the explicit not-found message when a number is absent from the MLIT DB.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose and input format, then source and fallback. Slightly redundant in restating the not-found behavior that the kokuji_name schema field already carries, but otherwise tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return-value explanation is unnecessary, and the description covers source, fallback, and error case adequately. Pagination via offset/max_chars is left to the schema, which is acceptable given full coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema already documents offset, max_chars and kokuji_name with the same examples used in the description. The description adds no new parameter meaning (syntax, formatting, constraints) beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (全文を取得) and resource (建築基準法が技術基準を委任している告示), and names the input forms precisely. It is clearly distinguishable from siblings like get_law, get_full_law and search_law, which operate on laws rather than delegated technical notifications.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear context for use (retrieving full text of delegated technical standards) plus accepted input formats and a documented fallback path (e-Gov API when not found by name). It does not explicitly state when to prefer get_law or search_law over this tool, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_kokuji_amendments告示の改正一覧ARead-onlyIdempotent
告示番号または告示名から改正一覧だけを取得する。本文を取得する get_kokuji より軽量。国交省の改正ページに掲載された2018年1月1日以降公布分を対象とする。kokuji_number と kokuji_name はどちらか一つだけ指定する。
| Name | Required | Description | Default |
|---|---|---|---|
| kokuji_name | No | 告示名(例: 耐火構造の構造方法を定める件) | |
| kokuji_number | No | 告示番号(例: 平成12年建設省告示第1399号、平12建告1399) |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | Yes | |
| title | Yes | |
| amendments | Yes | |
| kokuji_number | Yes | |
| housing_bureau | Yes | |
| document_number | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and open-world, so the safety profile is covered. The description adds genuinely useful scope information the annotations cannot convey: results are limited to amendments published on/after 2018-01-01 and only those listed on the MLIT (国交省) amendment pages. Pagination/return behavior is left to the output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the core action, then the sibling comparison, then the data-scope caveat, then the parameter rule. No filler; every sentence carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations covering safety and an output schema covering return shape, the description supplies exactly the remaining pieces an agent needs: what is returned, the data coverage window, the source, and the parameter selection rule.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both params are optional, but the description adds a constraint the schema cannot express: exactly one of the two identifiers must be supplied. That mutual-exclusivity rule is real added meaning beyond the structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('改正一覧だけを取得する') and immediately distinguishes itself from the sibling get_kokuji by noting it is the lighter-weight option that omits the body text. An agent can tell the two apart without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the alternative (get_kokuji) and the trade-off (lighter, no body text), and states the selection constraint that exactly one of kokuji_number / kokuji_name must be given. It does not spell out an explicit 'when not to use' case beyond the sibling contrast, so a 4 rather than 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_law条文取得ARead-onlyIdempotent
条番号を指定して法令の条文を取得する。附則・別表にも対応。略称・正式名称のいずれでも指定可能。format=structured で条→項→号の階層構造をJSON形式で取得可能。format=text の上限は、structuredContent を含む応答全体が約5万字に収まる値。長い条の中の項・表の行は find で探し、offset を推測しない。
| Name | Required | Description | Default |
|---|---|---|---|
| find | No | この条の本文から探す語。指定すると最初の一致を含む行から本文を返し、一致位置の一覧を matches に入れる。空白は無視し、全角・半角の違いは区別しない。長い条の中の項・表の行を探すときに使い、offset を推測しない。format=text のみ適用。続きは find を外して next_offset を指定。 | |
| format | No | 出力形式。text: 従来のテキスト形式、structured: 条→項→号の階層を持つJSON構造化形式 | text |
| offset | No | 本文の取得開始位置(0から始まる文字位置)。続きは案内された offset を指定。format=text のみ適用。 | |
| law_name | Yes | 法令名(正式名称、略称のいずれか。例: 建築基準法、建基法) | |
| max_chars | No | 本文と参照一覧(references)を合わせた最大文字数(1,000〜24,000)。省略時は20,000文字。format=text のみ適用。 | |
| article_number | Yes | 条文番号(例: 第20条、20、第6条の2、附則、附則第3条、別表第一) |
Output Schema
| Name | Required | Description |
|---|---|---|
| find | No | |
| note | No | |
| format | Yes | |
| offset | No | |
| source | Yes | |
| article | Yes | |
| law_num | Yes | |
| matches | No | |
| revision | No | |
| law_title | Yes | |
| truncated | No | |
| next_offset | No | |
| total_chars | No | |
| matches_total | No | |
| revision_note | No | |
| references_total | No | |
| references_truncated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, openWorld, non-destructive). The description adds genuinely useful behavior: the ~50,000-character cap on the whole response including structuredContent, the structured JSON hierarchy, and the find/matches continuation pattern. It does not describe auth or rate limits, but adds real context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four dense sentences, purpose front-loaded, each carrying distinct information (scope, format options, size limit, find/offset rule). No filler, though the limit sentence is a bit convoluted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-shape explanation is unnecessary and the description rightly focuses on format choice, size cap, and pagination via find/offset. Covers what an agent needs to call it correctly, with the only gap being tool-level alternatives.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the per-parameter descriptions are already rich (find semantics, offset, max_chars range, enum for format). The description restates format=text vs structured and the find/offset workflow but adds little syntax or meaning beyond the schema. Baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource: retrieve a law's provisions by article number, with explicit coverage of 附則・別表 and acceptance of abbreviations or official names. This implicitly separates it from get_full_law (whole law) by keying on a single article, but no sibling is named explicitly, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives good intra-tool guidance (use find for paragraphs/table rows in long articles, don't guess offset; format=structured for hierarchical JSON), but there is no statement of when to choose this tool over search_articles, search_law, or get_full_law. Usage across siblings is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_laws_batch条文一括取得ARead-onlyIdempotent
複数の法令・条文を一括取得する。各条文をe-Govから個別に条単位取得する。最大20件。上限は、structuredContent を含む応答全体が約5万字に収まる値。長い条(例: 建築基準法施行規則 第1条の3)は get_law で個別に取得。
| Name | Required | Description | Default |
|---|---|---|---|
| requests | Yes | 取得対象の条文リスト(最大20件) | |
| max_total_chars | No | 応答全体のJSONの最大文字数(10,000〜24,000)。省略時は20,000文字。超過分の本文は省略。 | |
| max_chars_per_item | No | 条文ごとの最大文字数(1,000〜20,000)。省略時は8,000文字。 |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| total | Yes | |
| failed | Yes | |
| omitted | No | |
| results | Yes | |
| success | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/openWorld and non-destructive, so the safety profile is covered. The description adds real value beyond them: the 20-item batch cap, the ~50,000-character whole-response ceiling tied to structuredContent, and per-article e-Gov retrieval. It does not describe pagination or partial-failure behavior across the batch.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four compact sentences with the purpose front-loaded, followed by limits and the alternative routing. Dense but every sentence carries information; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. The description covers scope, batch cap, character constraints, and the alternative for oversized items, which is sufficient for a batch-read tool; only cross-batch error/partial-result semantics are unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3, but the description adds rationale beyond the schema by explaining that the char limit exists to keep the whole response (including structuredContent) under ~50,000 characters. Minor tension between the stated ~50k total and the schema's 24,000 max_total_chars is not resolved.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (複数の法令・条文を一括取得) and clarifies the retrieval mechanism (each article fetched individually from e-Gov per article). It names the sibling get_law for the long-article case, letting an agent distinguish batch vs. single-article retrieval without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear batch context plus an explicit routing rule: long articles (with a concrete example, 建築基準法施行規則 第1条の3) should use get_law instead. It does not address when to prefer this over get_full_law or search_articles, so no explicit exclusions for other siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_metrics使用量メトリクスARead-onlyIdempotent
サーバーの使用量メトリクスを返す(ツール呼び出し回数・APIリクエスト数・キャッシュヒット率・稼働時間)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| api | Yes | |
| cache | Yes | |
| tools | Yes | |
| uptime_seconds | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds value by naming the metric categories returned, but says nothing about freshness, aggregation window, or scoping. With annotations carrying the safety burden, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the resource first and the payload enumerated in parentheses. Every element earns its place and nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value structure need not be described, and the description still previews the metric categories. Annotations cover the safety profile. The only gap is the absence of any usage context, which is minor for a zero-parameter read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, which is the baseline-4 case. The description correctly implies no input is needed, and there is nothing further to document.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (返す) plus resource (使用量メトリクス), with an explicit enumeration of what is returned (tool call counts, API requests, cache hit rate, uptime). It is unmistakably distinct from the law-lookup siblings, though it never names or contrasts them, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no mention of prerequisites or timing (e.g. for monitoring or diagnostics), and no reference to any alternative tool. The agent must infer the use case entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_articles条文本文検索ARead-onlyIdempotent
条文本文をキーワードで検索する。半角スペース区切りで AND 検索。AND・OR・NOT は演算子ではなく検索語として扱われる。全角スペースは半角に直して送る。*・? のワイルドカードに対応。法令名・略称で絞り込み可能。検索結果は節名と抜粋のみで条番号は返らないため、正確な条文は get_law で確認してください。
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | 取得する文の数(最大50) | |
| offset | No | 検索開始位置(文単位) | |
| keyword | Yes | 本文の検索語。半角スペース区切りで AND 検索。AND・OR・NOT は演算子ではなく検索語として扱われる。全角スペースは半角に直して送る。*・? のワイルドカードが使用可能 | |
| law_title | No | 法令名または略称で絞り込み |
Output Schema
| Name | Required | Description |
|---|---|---|
| hits | Yes | |
| keyword | Yes | |
| law_title | No | |
| next_offset | Yes | |
| total_count | Yes | |
| sentence_count | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), and the description adds genuinely useful behavioral detail: AND/OR/NOT are treated as literal search terms, wildcards are supported, full-width spaces are normalized, and results contain only section names and excerpts. That last point about missing article numbers is exactly the kind of non-obvious behavior an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded, followed by query syntax and then the key caveat about missing article numbers. It is dense and mostly earns its sentences, though the syntax rules restate what the schema already says.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, yet the description still usefully warns that results lack article numbers and points to get_law. Coverage of syntax, filtering, and the key limitation is sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters are documented in the schema. The description's syntax notes (space-delimited AND, wildcard support) duplicate the keyword parameter's schema description verbatim and add no new semantics, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('条文本文をキーワードで検索する') and clarifies the scope of results (節名と抜粋のみ, no article numbers). It distinguishes itself from get_law for accurate article text, but never contrasts with the sibling search_law, so the differentiation is only partial.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly routes the agent to get_law when exact article text is needed, since search results omit article numbers, and it explains the accepted query syntax. It gives no guidance on when to prefer search_law or suggest_related, so the routing is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_law法令名検索ARead-onlyIdempotent
キーワードで建築関連法令を横断検索する。登録済みエイリアスとe-Gov APIの両方を検索する。注意: 検索対象は法令名(タイトル)のみ。条文本文のキーワード検索には search_articles を使用してください。
| Name | Required | Description | Default |
|---|---|---|---|
| keyword | Yes | 検索キーワード(例: 耐火構造、避難階段、建築確認) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld). The description adds genuinely useful context beyond them: the search spans both locally registered aliases and an external e-Gov API, which implies a network dependency and possible variability in results. It stops short of describing latency, rate limits, or result count behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action followed by source coverage and then the caveat/alternative. Every sentence carries distinct information with no repetition of the tool name or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter read tool with annotations covering safety and openWorld, the description covers purpose, scope, and the sibling routing decision. The only omission is what the result looks like (law titles/IDs to feed into get_law), which matters mildly for chaining but is not required to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the parameter itself is documented. The description nonetheless adds a semantic constraint the schema does not encode: the keyword is matched against law titles, not article text, which materially shapes what strings are worth passing. That is real value over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('キーワードで建築関連法令を横断検索する') and immediately names the scope (law titles only) plus the source coverage (registered aliases and the e-Gov API). It clearly distinguishes itself from search_articles, which operates on article bodies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the exclusion ('検索対象は法令名(タイトル)のみ') and routes the agent to the correct sibling for the other case ('条文本文のキーワード検索には search_articles を使用してください'). The when/when-not decision is fully specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_citation引用検証ARead-onlyIdempotent
AIの回答に含まれる法令引用を検証する。条文の存在確認、テキスト照合による正確性チェックが可能。最大10件。
| Name | Required | Description | Default |
|---|---|---|---|
| citations | Yes | 検証対象の引用リスト(最大10件) |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | Yes | |
| total | Yes | |
| results | Yes | |
| mismatch | Yes | |
| verified | Yes | |
| not_found | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds genuinely new behavioral context beyond that: the batch ceiling of 10 items and the fact that accuracy checking is done via text matching (as opposed to mere existence lookup). It does not discuss failure behavior for unverifiable citations, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short clauses, no filler, and the core action is front-loaded before the capability details and the limit. Every sentence carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description needn't explain return values, and it covers purpose, both verification modes, and the batch limit for a single-parameter tool. Slightly incomplete on what happens when a citation cannot be verified, but nothing critical to correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single 'citations' parameter, including per-field descriptions and the omission semantics of claimed_text, so the baseline is 3. The description's only added datum is the repeated 10-item limit, which the schema already enforces via maxItems.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource (verify legal citations contained in AI answers) and enumerates the two verification modes: existence confirmation and text-matching accuracy. This clearly separates it from siblings like get_law or search_articles, which retrieve rather than verify. It falls short of 5 only because it never names an alternative sibling to route against.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the phrase 'AIの回答に含まれる法令引用' — the tool is for checking citations produced by a model — but there is no explicit when-to-use/when-not guidance and no named alternative for adjacent tasks. An agent can infer the context but must guess at the boundary with analyze_article or get_law.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
12 tool updates
v1.11.2- Changed
analyze_article2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "definitions": { + "__schema0": { + "additionalProperties": false, + "properties": { + "subitem_num": { + "type": "string" + }, + "subitem_sentence": { + "type": "string" + }, + "subitem_title": { + "type": "string" + }, + "subitems": { + "items": { + "$ref": "#/definitions/__schema0" + }, + "type": "array" + } + }, + "required": [ + "subitem_num", + "subitem_title", + "subitem_sentence", + "subitems" + ], + "type": "object" + } + }, + "properties": { + "article_num": { + "type": "string" + }, + "article_title": { + "type": "string" + }, + "caption": { + "type": "string" + }, + "law_name": { + "type": "string" + }, + "law_num": { + "type": "string" + }, + "paragraph_summaries": { + "items": { + "additionalProperties": false, + "properties": { + "item_count": { + "type": "number" + }, + "paragraph_num": { + "type": "string" + }, + "preview": { + "type": "string" + } + }, + "required": [ + "paragraph_num", + "preview", + "item_count" + ], + "type": "object" + }, + "type": "array" + }, + "reference_summary": { + "additionalProperties": false, + "properties": { + "cross_law": { + "type": "number" + }, + "delegation": { + "type": "number" + }, + "referenced_laws": { + "items": { + "type": "string" + }, + "type": "array" + }, + "relative": { + "type": "number" + }, + "same_law": { + "type": "number" + }, + "total": { + "type": "number" + } + }, + "required": [ + "total", + "cross_law", + "same_law", + "relative", + "delegation", + "referenced_laws" + ], + "type": "object" + }, + "structure": { + "additionalProperties": false, + "properties": { + "item_count": { + "type": "number" + }, + "paragraph_count": { + "type": "number" + }, + "subitem_count": { + "type": "number" + }, + "total_characters": { + "type": "number" + } + }, + "required": [ + "paragraph_count", + "item_count", + "subitem_count", + "total_characters" + ], + "type": "object" + }, + "structured_data": { + "additionalProperties": false, + "properties": { + "article_caption": { + "type": "string" + }, + "article_num": { + "type": "string" + }, + "article_title": { + "type": "string" + }, + "paragraphs": { + "items": { + "additionalProperties": false, + "properties": { + "items": { + "items": { + "additionalProperties": false, + "properties": { + "item_num": { + "type": "string" + }, + "item_sentence": { + "type": "string" + }, + "item_title": { + "type": "string" + }, + "subitems": { + "items": { + "$ref": "#/definitions/__schema0" + }, + "type": "array" + } + }, + "required": [ + "item_num", + "item_title", + "item_sentence", + "subitems" + ], + "type": "object" + }, + "type": "array" + }, + "paragraph_num": { + "type": "string" + }, + "paragraph_sentence": { + "type": "string" + } + }, + "required": [ + "paragraph_num", + "paragraph_sentence", + "items" + ], + "type": "object" + }, + "type": "array" + }, + "references": { + "items": { + "additionalProperties": false, + "properties": { + "raw_text": { + "type": "string" + }, + "ref_type": { + "enum": [ + "same_law", + "cross_law", + "relative", + "delegation", + "unknown" + ], + "type": "string" + }, + "target_article": { + "type": "string" + }, + "target_item": { + "type": "string" + }, + "target_law": { + "type": "string" + }, + "target_paragraph": { + "type": "string" + } + }, + "required": [ + "raw_text", + "ref_type" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "article_num", + "article_caption", + "article_title", + "paragraphs" + ], + "type": "object" + } + }, + "required": [ + "law_name", + "law_num", + "article_num", + "article_title", + "caption", + "structure", + "paragraph_summaries", + "reference_summary", + "structured_data" + ], + "type": "object" +}
- Changed
check_law_updates2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / sinceAdded value: +{ + "description": "基準日(YYYY-MM-DD)。この日より後に公布された改正だけを『改正あり』として報告する。省略時は今日の 12 か月前", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string" +}
- Changed
get_full_law3 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / max_charsAdded value: +{ + "default": 30000, + "description": "1回に取得する最大文字数(1,000〜48,000)。省略時は30,000文字。", + "maximum": 48000, + "minimum": 1000, + "type": "integer" +} - added
Input schema / properties / offsetAdded value: +{ + "default": 0, + "description": "取得開始位置(0から始まる文字位置)。続きの取得時は案内された offset を指定。", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +}
- Changed
get_kokuji5 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - changed
Input schema / properties / kokuji_name / descriptionPrevious value: -"告示名(例: 耐火構造の構造方法を定める件、不燃材料を定める件)"New value: +"告示名または告示番号(例: 耐火構造の構造方法を定める件、平成28年国土交通省告示第696号、平28国交告696)。番号が国交省 DB にない場合は、その旨を返す。" - added
Input schema / properties / max_charsAdded value: +{ + "default": 30000, + "description": "1回に取得する本文の最大文字数(1,000〜48,000)。省略時は30,000文字。本文を content と structuredContent.text の両方に含めるため、改正欄と構造化情報も合わせた応答全体が約50,000文字に収まるよう本文ページを減らす。", + "maximum": 48000, + "minimum": 1000, + "type": "integer" +} - added
Input schema / properties / offsetAdded value: +{ + "default": 0, + "description": "取得開始位置(0から始まる文字位置)。続きの取得時は案内された offset を指定。", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +} - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "amendments": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "coverage": { + "type": "string" + }, + "items": { + "items": { + "additionalProperties": false, + "properties": { + "documents": { + "items": { + "additionalProperties": false, + "properties": { + "label": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "label", + "url" + ], + "type": "object" + }, + "type": "array" + }, + "effective_note": { + "type": [ + "string", + "null" + ] + }, + "effective_on": { + "type": [ + "string", + "null" + ] + }, + "matched_by": { + "enum": [ + "pdf", + "page", + "title" + ], + "type": "string" + }, + "number": { + "type": "string" + }, + "promulgated_on": { + "type": [ + "string", + "null" + ] + }, + "title": { + "type": "string" + } + }, + "required": [ + "number", + "title", + "promulgated_on", + "effective_on", + "effective_note", + "documents", + "matched_by" + ], + "type": "object" + }, + "type": "array" + }, + "omitted_count": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + }, + "source_url": { + "type": "string" + }, + "status": { + "enum": [ + "ok", + "unavailable" + ], + "type": "string" + }, + "unresolved_count": { + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "status", + "source_url", + "coverage", + "items", + "omitted_count", + "unresolved_count" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "current_title": { + "type": [ + "string", + "null" + ] + }, + "db_notice": { + "type": [ + "string", + "null" + ] + }, + "document_number": { + "type": [ + "string", + "null" + ] + }, + "found": { + "type": "boolean" + }, + "housing_bureau": { + "type": "boolean" + }, + "kokuji_number": { + "type": [ + "string", + "null" + ] + }, + "next_offset": { + "type": [ + "number", + "null" + ] + }, + "offset": { + "type": "number" + }, + "source": { + "enum": [ + "mlit_db", + "mlit_pdf", + "egov", + "not_found" + ], + "type": "string" + }, + "text": { + "type": "string" + }, + "title": { + "type": [ + "string", + "null" + ] + }, + "total_chars": { + "type": "number" + } + }, + "required": [ + "text", + "found", + "title", + "current_title", + "document_number", + "kokuji_number", + "source", + "housing_bureau", + "db_notice", + "amendments", + "offset", + "next_offset", + "total_chars" + ], + "type": "object" +}
- Added
get_kokuji_amendments - Changed
get_law5 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / findAdded value: +{ + "description": "この条の本文から探す語。指定すると最初の一致を含む行から本文を返し、一致位置の一覧を matches に入れる。空白は無視し、全角・半角の違いは区別しない。長い条の中の項・表の行を探すときに使い、offset を推測しない。format=text のみ適用。続きは find を外して next_offset を指定。", + "maxLength": 100, + "minLength": 1, + "type": "string" +} - added
Input schema / properties / max_charsAdded value: +{ + "default": 20000, + "description": "本文と参照一覧(references)を合わせた最大文字数(1,000〜24,000)。省略時は20,000文字。format=text のみ適用。", + "maximum": 24000, + "minimum": 1000, + "type": "integer" +} - added
Input schema / properties / offsetAdded value: +{ + "default": 0, + "description": "本文の取得開始位置(0から始まる文字位置)。続きは案内された offset を指定。format=text のみ適用。", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +} - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "definitions": { + "__schema0": { + "additionalProperties": false, + "properties": { + "subitem_num": { + "type": "string" + }, + "subitem_sentence": { + "type": "string" + }, + "subitem_title": { + "type": "string" + }, + "subitems": { + "items": { + "$ref": "#/definitions/__schema0" + }, + "type": "array" + } + }, + "required": [ + "subitem_num", + "subitem_title", + "subitem_sentence", + "subitems" + ], + "type": "object" + } + }, + "properties": { + "article": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "article_caption": { + "type": "string" + }, + "article_num": { + "type": "string" + }, + "article_title": { + "type": "string" + }, + "references": { + "items": { + "additionalProperties": false, + "properties": { + "raw_text": { + "type": "string" + }, + "ref_type": { + "enum": [ + "same_law", + "cross_law", + "relative", + "delegation", + "unknown" + ], + "type": "string" + }, + "target_article": { + "type": "string" + }, + "target_item": { + "type": "string" + }, + "target_law": { + "type": "string" + }, + "target_paragraph": { + "type": "string" + } + }, + "required": [ + "raw_text", + "ref_type" + ], + "type": "object" + }, + "type": "array" + }, + "text": { + "type": "string" + } + }, + "required": [ + "article_num", + "article_caption", + "article_title", + "text" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "article_caption": { + "type": "string" + }, + "article_num": { + "type": "string" + }, + "article_title": { + "type": "string" + }, + "paragraphs": { + "items": { + "additionalProperties": false, + "properties": { + "items": { + "items": { + "additionalProperties": false, + "properties": { + "item_num": { + "type": "string" + }, + "item_sentence": { + "type": "string" + }, + "item_title": { + "type": "string" + }, + "subitems": { + "items": { + "$ref": "#/definitions/__schema0" + }, + "type": "array" + } + }, + "required": [ + "item_num", + "item_title", + "item_sentence", + "subitems" + ], + "type": "object" + }, + "type": "array" + }, + "paragraph_num": { + "type": "string" + }, + "paragraph_sentence": { + "type": "string" + } + }, + "required": [ + "paragraph_num", + "paragraph_sentence", + "items" + ], + "type": "object" + }, + "type": "array" + }, + "references": { + "items": { + "additionalProperties": false, + "properties": { + "raw_text": { + "type": "string" + }, + "ref_type": { + "enum": [ + "same_law", + "cross_law", + "relative", + "delegation", + "unknown" + ], + "type": "string" + }, + "target_article": { + "type": "string" + }, + "target_item": { + "type": "string" + }, + "target_law": { + "type": "string" + }, + "target_paragraph": { + "type": "string" + } + }, + "required": [ + "raw_text", + "ref_type" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "article_num", + "article_caption", + "article_title", + "paragraphs" + ], + "type": "object" + } + ] + }, + "find": { + "type": "string" + }, + "format": { + "enum": [ + "text", + "structured" + ], + "type": "string" + }, + "law_num": { + "type": "string" + }, + "law_title": { + "type": "string" + }, + "matches": { + "items": { + "type": "number" + }, + "type": "array" + }, + "matches_total": { + "type": "number" + }, + "next_offset": { + "type": [ + "number", + "null" + ] + }, + "note": { + "type": "string" + }, + "offset": { + "type": "number" + }, + "references_total": { + "type": "number" + }, + "references_truncated": { + "type": "boolean" + }, + "revision": { + "additionalProperties": false, + "properties": { + "amendment_enforcement_date": { + "type": "string" + }, + "current_revision_status": { + "type": "string" + }, + "law_revision_id": { + "type": "string" + } + }, + "required": [ + "law_revision_id", + "amendment_enforcement_date", + "current_revision_status" + ], + "type": "object" + }, + "revision_note": { + "type": "string" + }, + "source": { + "const": "e-Gov法令検索", + "type": "string" + }, + "total_chars": { + "type": "number" + }, + "truncated": { + "type": "boolean" + } + }, + "required": [ + "law_title", + "law_num", + "source", + "format", + "article" + ], + "type": "object" +}
- Changed
get_laws_batch5 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / max_chars_per_itemAdded value: +{ + "default": 8000, + "description": "条文ごとの最大文字数(1,000〜20,000)。省略時は8,000文字。", + "maximum": 20000, + "minimum": 1000, + "type": "integer" +} - added
Input schema / properties / max_total_charsAdded value: +{ + "default": 20000, + "description": "応答全体のJSONの最大文字数(10,000〜24,000)。省略時は20,000文字。超過分の本文は省略。", + "maximum": 24000, + "minimum": 10000, + "type": "integer" +} - removed
Input schema / properties / requests / items / additionalPropertiesRemoved value: -false - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "definitions": { + "__schema0": { + "additionalProperties": false, + "properties": { + "subitem_num": { + "type": "string" + }, + "subitem_sentence": { + "type": "string" + }, + "subitem_title": { + "type": "string" + }, + "subitems": { + "items": { + "$ref": "#/definitions/__schema0" + }, + "type": "array" + } + }, + "required": [ + "subitem_num", + "subitem_title", + "subitem_sentence", + "subitems" + ], + "type": "object" + } + }, + "properties": { + "failed": { + "type": "number" + }, + "note": { + "type": "string" + }, + "omitted": { + "items": { + "additionalProperties": false, + "properties": { + "article_number": { + "type": "string" + }, + "law_name": { + "type": "string" + } + }, + "required": [ + "law_name", + "article_number" + ], + "type": "object" + }, + "type": "array" + }, + "results": { + "items": { + "additionalProperties": false, + "properties": { + "article_number": { + "type": "string" + }, + "error_message": { + "type": "string" + }, + "law_name": { + "type": "string" + }, + "next_offset": { + "type": [ + "number", + "null" + ] + }, + "note": { + "type": "string" + }, + "omitted": { + "type": "boolean" + }, + "revision_note": { + "type": "string" + }, + "status": { + "enum": [ + "success", + "law_not_found", + "article_not_found", + "error" + ], + "type": "string" + }, + "structured": { + "additionalProperties": false, + "properties": { + "article_caption": { + "type": "string" + }, + "article_num": { + "type": "string" + }, + "article_title": { + "type": "string" + }, + "paragraphs": { + "items": { + "additionalProperties": false, + "properties": { + "items": { + "items": { + "additionalProperties": false, + "properties": { + "item_num": { + "type": "string" + }, + "item_sentence": { + "type": "string" + }, + "item_title": { + "type": "string" + }, + "subitems": { + "items": { + "$ref": "#/definitions/__schema0" + }, + "type": "array" + } + }, + "required": [ + "item_num", + "item_title", + "item_sentence", + "subitems" + ], + "type": "object" + }, + "type": "array" + }, + "paragraph_num": { + "type": "string" + }, + "paragraph_sentence": { + "type": "string" + } + }, + "required": [ + "paragraph_num", + "paragraph_sentence", + "items" + ], + "type": "object" + }, + "type": "array" + }, + "references": { + "items": { + "additionalProperties": false, + "properties": { + "raw_text": { + "type": "string" + }, + "ref_type": { + "enum": [ + "same_law", + "cross_law", + "relative", + "delegation", + "unknown" + ], + "type": "string" + }, + "target_article": { + "type": "string" + }, + "target_item": { + "type": "string" + }, + "target_law": { + "type": "string" + }, + "target_paragraph": { + "type": "string" + } + }, + "required": [ + "raw_text", + "ref_type" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "article_num", + "article_caption", + "article_title", + "paragraphs" + ], + "type": "object" + }, + "text": { + "type": "string" + }, + "total_chars": { + "type": "number" + }, + "truncated": { + "type": "boolean" + } + }, + "required": [ + "law_name", + "article_number", + "status" + ], + "type": "object" + }, + "type": "array" + }, + "success": { + "type": "number" + }, + "total": { + "type": "number" + } + }, + "required": [ + "total", + "success", + "failed", + "results" + ], + "type": "object" +}
- Changed
get_metrics2 fields changed- removed
Input schema / $schemaRemoved value: -"http://json-schema.org/draft-07/schema#" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "api": { + "additionalProperties": { + "additionalProperties": false, + "properties": { + "avg_ms": { + "type": "number" + }, + "error_rate": { + "type": "string" + }, + "errors": { + "type": "number" + }, + "requests": { + "type": "number" + } + }, + "required": [ + "requests", + "avg_ms", + "errors", + "error_rate" + ], + "type": "object" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "cache": { + "additionalProperties": { + "additionalProperties": false, + "properties": { + "hit_rate": { + "type": "string" + }, + "hits": { + "type": "number" + }, + "misses": { + "type": "number" + } + }, + "required": [ + "hits", + "misses", + "hit_rate" + ], + "type": "object" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "tools": { + "additionalProperties": { + "additionalProperties": false, + "properties": { + "avg_ms": { + "type": "number" + }, + "calls": { + "type": "number" + }, + "errors": { + "type": "number" + } + }, + "required": [ + "calls", + "avg_ms", + "errors" + ], + "type": "object" + }, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "uptime_seconds": { + "type": "number" + } + }, + "required": [ + "uptime_seconds", + "tools", + "api", + "cache" + ], + "type": "object" +}
- Added
search_articles - Changed
search_law1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
suggest_related1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
verify_citation3 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - removed
Input schema / properties / citations / items / additionalPropertiesRemoved value: -false - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "error": { + "type": "number" + }, + "mismatch": { + "type": "number" + }, + "not_found": { + "type": "number" + }, + "results": { + "items": { + "additionalProperties": false, + "properties": { + "actual_text": { + "type": "string" + }, + "article_number": { + "type": "string" + }, + "error_message": { + "type": "string" + }, + "law_name": { + "type": "string" + }, + "match_score": { + "type": "number" + }, + "mismatch_detail": { + "type": "string" + }, + "status": { + "enum": [ + "verified", + "mismatch", + "article_not_found", + "law_not_found", + "error" + ], + "type": "string" + } + }, + "required": [ + "law_name", + "article_number", + "status" + ], + "type": "object" + }, + "type": "array" + }, + "total": { + "type": "number" + }, + "verified": { + "type": "number" + } + }, + "required": [ + "total", + "verified", + "mismatch", + "not_found", + "error", + "results" + ], + "type": "object" +}
10 tool updates
v1.7.0- First observed
analyze_article - First observed
check_law_updates - First observed
get_full_law - First observed
get_kokuji - First observed
get_law - First observed
get_laws_batch - First observed
get_metrics - First observed
search_law - First observed
suggest_related - First observed
verify_citation
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.
Maintenance
Related MCP Connectors
Japan Law MCP — Japanese national laws & ordinances via the e-Gov Law API.
Raw Japanese regulatory data for AI agents: pension, gazette, gBizINFO. x402-metered (USDC).
Curated Korean AEC expertise for AI agents: KDS·KCS·KS, building law, practice, and the reasoning.
Find Japanese subsidies, check eligibility with guideline citations, and fill official forms.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables searching and retrieving Japanese legal information from the e-Gov Law API, including law searches by keyword, detailed law data retrieval, and revision history tracking.3967 npm49MIT
- AlicenseAqualityDmaintenanceEnables intelligent search and retrieval of Japanese legal statutes through the e-Gov API. Supports smart lookup of laws and articles with abbreviation recognition, batch processing, and multi-tier caching for high-performance legal research.815MIT
- AlicenseAqualityAmaintenanceEnables LLMs to search and retrieve Japanese laws from the e-Gov API v2, including keyword search, article fetching, table of contents, and revision history.739 npm2MIT
- AlicenseNot gradedqualityBmaintenanceEnables querying Japanese national laws and ordinances via the e-Gov Law API, allowing AI agents to access legal data through natural language questions.181 npmMIT