building-standards-act-mcp 1.9.2 → 1.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -11
- package/dist/lib/text-find.d.ts +5 -0
- package/dist/lib/text-find.js +31 -0
- package/dist/lib/text-find.js.map +1 -0
- package/dist/lib/tool-helpers.d.ts +4 -1
- package/dist/lib/tool-helpers.js +4 -1
- package/dist/lib/tool-helpers.js.map +1 -1
- package/dist/lib/version.d.ts +1 -1
- package/dist/lib/version.js +1 -1
- package/dist/lib/version.js.map +1 -1
- package/dist/server.js +4 -4
- package/dist/tools/get-full-law.js +5 -5
- package/dist/tools/get-full-law.js.map +1 -1
- package/dist/tools/get-kokuji.js +5 -5
- package/dist/tools/get-kokuji.js.map +1 -1
- package/dist/tools/get-law.js +46 -10
- package/dist/tools/get-law.js.map +1 -1
- package/dist/tools/get-laws-batch.js +8 -6
- package/dist/tools/get-laws-batch.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -138,13 +138,13 @@ npm run build
|
|
|
138
138
|
|
|
139
139
|
| ツール | 説明 |
|
|
140
140
|
| ------------------- | --------------------------------------------------------------------------------------------------------------- |
|
|
141
|
-
| `get_law` | 条番号を指定して条文を取得する。`format=text` は本文と参照一覧(`references`)を合わせて `max_chars
|
|
142
|
-
| `get_full_law` | 法令の全文を取得する。`max_chars
|
|
141
|
+
| `get_law` | 条番号を指定して条文を取得する。`format=text` は本文と参照一覧(`references`)を合わせて `max_chars`(最大 24,000、既定 20,000)で制限。長い条の項・表の行は `find` で探し、返った `matches` と `offset` を使う。続きは `next_offset` を指定(続きは `find` を外す) |
|
|
142
|
+
| `get_full_law` | 法令の全文を取得する。`max_chars`(最大 48,000、既定 30,000)で区切り、続きは `offset` で取る |
|
|
143
143
|
| `search_law` | 法令名(タイトル)で建築関連法令を検索する。略称マップと e-Gov API の両方を検索。条文本文の検索は `search_articles` |
|
|
144
144
|
| `search_articles` | 条文本文をキーワードで全文検索する(e-Gov `/keyword`)。半角スペース区切りで AND 検索。AND・OR・NOT は演算子ではなく検索語として扱われる。全角スペースは半角に直して送る。法令名で絞り込み可。条番号は `get_law` で確定する |
|
|
145
|
-
| `get_kokuji` | 建築基準法が技術基準を委任している告示の全文を取得する(省エネ告示は国交省 PDF
|
|
145
|
+
| `get_kokuji` | 建築基準法が技術基準を委任している告示の全文を取得する(省エネ告示は国交省 PDF から直接取得)。`max_chars`(最大 48,000、既定 30,000)で区切り、続きは `offset` で取る |
|
|
146
146
|
| `check_law_updates` | 法令の改正状況を e-Gov API で確認する。`since`(既定は 12 か月前)より後の改正だけを「改正あり」にする |
|
|
147
|
-
| `get_laws_batch` | 複数条文を一括取得(最大20件)。`max_chars_per_item`(最大
|
|
147
|
+
| `get_laws_batch` | 複数条文を一括取得(最大20件)。`max_chars_per_item`(最大 20,000、既定 8,000)で切り詰め、`max_total_chars`(最大 24,000、既定 20,000)を超える後続本文は省略。上限を超える指定は入力エラー。長い条(例: 建築基準法施行規則 第1条の3)は `get_law` で個別に取得 |
|
|
148
148
|
| `verify_citation` | AIの回答に含まれる法令引用を検証する(条文存在確認・テキスト照合、最大10件) |
|
|
149
149
|
| `suggest_related` | 指定した条文の関連法令・委任先・同法令内参照を自動抽出して提案する |
|
|
150
150
|
| `analyze_article` | 条文の構造解析メタデータ(項数・号数・参照統計・プレビュー)をJSON形式で返す |
|
|
@@ -159,11 +159,20 @@ npm run build
|
|
|
159
159
|
| `law_name` | 法令名(正式名称または略称) | `建築基準法`, `建基法` |
|
|
160
160
|
| `article_number` | 条文番号(附則・別表にも対応) | `第20条`, `附則`, `別表第一` |
|
|
161
161
|
| `format` | 出力形式(`text` または `structured`、省略時は `text`) | `structured` |
|
|
162
|
-
| `max_chars` | 本文と参照一覧(`references`)を合わせた最大文字数(1,000〜
|
|
162
|
+
| `max_chars` | 本文と参照一覧(`references`)を合わせた最大文字数(1,000〜24,000、既定 20,000)。`format=text` のみ | `8000` |
|
|
163
163
|
| `offset` | 本文内の開始位置(既定 0)。`format=text` のみ。続きは `next_offset` を指定 | `8000` |
|
|
164
|
+
| `find` | この条の本文から探す語(1〜100文字)。空白を無視し、全角・半角を区別せずに検索。一致を含む行から表示。`format=text` のみ適用 | `非常用の昇降機` |
|
|
164
165
|
|
|
165
166
|
`offset` は見出し・参照・出典を含まない本文内の文字位置です。`get_laws_batch` の `next_offset` をそのまま指定できます。
|
|
166
167
|
|
|
168
|
+
`format=text` の上限は、`structuredContent` を含む応答全体が約5万字に収まる値です。`max_chars` の上限を超える指定は入力エラーになります。
|
|
169
|
+
|
|
170
|
+
長い条の中の項・表の行を探すときは `find` に語を渡し、`offset` を自分で推測しないでください。検索語は `search_articles` と同じ空白正規化を通した後、本文とともにコードポイントごとに NFKC 正規化し、すべての空白(全角スペースを含む)を除いて照合します。`matches` は本文全体での一致開始位置の先頭20件、`matches_total` は一致の総件数です。位置は正規化前の元本文の UTF-16 文字位置で返します。
|
|
171
|
+
|
|
172
|
+
`find` と `offset` を併用すると、`offset` 以上の最初の一致を選びます。たとえば `offset=matches[1]` で2件目へ移動できます。該当する一致が後ろにない場合は最初の一致に戻ります。返る `offset` は選択した一致を含む行の先頭です。一致の終端が行頭から `max_chars` の余裕を除いた範囲に収まらない場合は、一致位置から表示します。ページ末尾は従来どおり改行を優先するため、改行や大量の空白をまたぐ一致は複数ページに分かれることがあります。続きは `find` を外し、返った `next_offset` をそのまま渡してください。
|
|
173
|
+
|
|
174
|
+
一致がないときは「この条に『検索語』は見つかりませんでした。」と本文全体の文字数を返し、本文は返しません。`article.text` は空文字列、`matches` は空配列、`matches_total` は0、`next_offset` は `null` です。`format=structured` では `find`・`max_chars`・`offset` を適用しません。
|
|
175
|
+
|
|
167
176
|
参照一覧はページ内の本文に現れる参照に絞ったうえで、本文と参照のJSONの長さの合計が `max_chars` に収まる順序どおりの先頭部分だけを表示し、表示が0件なら `article` の `references` キーを省略します。参照を省略した場合は `references_total` と `references_truncated: true`、表示件数の案内を返し、関連法令の一覧は `suggest_related` でも確認できます。
|
|
168
177
|
|
|
169
178
|
#### `get_full_law`
|
|
@@ -171,8 +180,8 @@ npm run build
|
|
|
171
180
|
| パラメータ | 説明 | 例 |
|
|
172
181
|
| ----------- | --------------------------------------------- | ---------------------------- |
|
|
173
182
|
| `law_name` | 法令名(正式名称または略称) | `建築基準法施行令`, `建基令` |
|
|
174
|
-
| `max_chars` | 1
|
|
175
|
-
| `offset` | 続きを取るときの開始位置(末尾の案内に出る値) | `
|
|
183
|
+
| `max_chars` | 1 回に返す最大文字数(1,000〜48,000、既定 30,000) | `30000` |
|
|
184
|
+
| `offset` | 続きを取るときの開始位置(末尾の案内に出る値) | `30000` |
|
|
176
185
|
|
|
177
186
|
#### `search_law`
|
|
178
187
|
|
|
@@ -196,8 +205,8 @@ npm run build
|
|
|
196
205
|
| パラメータ | 説明 | 例 |
|
|
197
206
|
| ------------- | ------------------------------------- | ------------------------------ |
|
|
198
207
|
| `kokuji_name` | 告示名 | `耐火構造の構造方法を定める件` |
|
|
199
|
-
| `max_chars` | 1
|
|
200
|
-
| `offset` | 続きを取るときの開始位置 | `
|
|
208
|
+
| `max_chars` | 1 回に返す最大文字数(1,000〜48,000、既定 30,000) | `30000` |
|
|
209
|
+
| `offset` | 続きを取るときの開始位置 | `30000` |
|
|
201
210
|
|
|
202
211
|
#### `check_law_updates`
|
|
203
212
|
|
|
@@ -213,8 +222,10 @@ npm run build
|
|
|
213
222
|
| パラメータ | 説明 | 例 |
|
|
214
223
|
| ---------- | ---------------------------------------------------------------------- | --- |
|
|
215
224
|
| `requests` | 取得対象の配列。各要素に `law_name`, `article_number`, `format` を指定 | — |
|
|
216
|
-
| `max_chars_per_item` | 条文ごとの最大文字数(1,000〜
|
|
217
|
-
| `max_total_chars` | 応答全体のJSONの最大文字数(10,000〜
|
|
225
|
+
| `max_chars_per_item` | 条文ごとの最大文字数(1,000〜20,000、既定 8,000)。構造化形式はJSONの長さを基準に項単位で切り詰め | `8000` |
|
|
226
|
+
| `max_total_chars` | 応答全体のJSONの最大文字数(10,000〜24,000、既定 20,000)。超過する後続本文は省略。上限を超える指定は入力エラー | `20000` |
|
|
227
|
+
|
|
228
|
+
上限は、`structuredContent` を含む応答全体が約5万字に収まる値です。
|
|
218
229
|
|
|
219
230
|
切り詰めたテキストの続きは、案内された `offset` を `get_law` に指定して取得します。本文を省略した結果は `omitted: true` と省略一覧で示します。取得の成功・失敗件数は本文の省略によって変わりません。
|
|
220
231
|
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { normalizeKeyword } from "./egov-client.js";
|
|
2
|
+
function normalizeCharacter(character) {
|
|
3
|
+
return character.normalize("NFKC").replace(/\s/g, "");
|
|
4
|
+
}
|
|
5
|
+
/** Find normalized matches in the original text's UTF-16 coordinates. */
|
|
6
|
+
export function findAllMatches(text, query) {
|
|
7
|
+
const needle = Array.from(normalizeKeyword(query), normalizeCharacter).join("");
|
|
8
|
+
if (needle.length === 0)
|
|
9
|
+
return [];
|
|
10
|
+
let normalized = "";
|
|
11
|
+
const starts = [];
|
|
12
|
+
const ends = [];
|
|
13
|
+
let offset = 0;
|
|
14
|
+
for (const character of text) {
|
|
15
|
+
const value = normalizeCharacter(character);
|
|
16
|
+
normalized += value;
|
|
17
|
+
for (let i = 0; i < value.length; i++) {
|
|
18
|
+
starts.push(offset);
|
|
19
|
+
ends.push(offset + character.length);
|
|
20
|
+
}
|
|
21
|
+
offset += character.length;
|
|
22
|
+
}
|
|
23
|
+
const matches = [];
|
|
24
|
+
let position = normalized.indexOf(needle);
|
|
25
|
+
while (position !== -1) {
|
|
26
|
+
matches.push({ start: starts[position], end: ends[position + needle.length - 1] });
|
|
27
|
+
position = normalized.indexOf(needle, position + needle.length);
|
|
28
|
+
}
|
|
29
|
+
return matches;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=text-find.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-find.js","sourceRoot":"","sources":["../../src/lib/text-find.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,SAAS,kBAAkB,CAAC,SAAiB;IAC3C,OAAO,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AACxD,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,KAAa;IACxD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,kBAAkB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEnC,IAAI,UAAU,GAAG,EAAE,CAAC;IACpB,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,SAAS,IAAI,IAAI,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAC5C,UAAU,IAAI,KAAK,CAAC;QACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;QACvC,CAAC;QACD,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC;IAC7B,CAAC;IAED,MAAM,OAAO,GAAqC,EAAE,CAAC;IACrD,IAAI,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1C,OAAO,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QACnF,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -3,7 +3,10 @@
|
|
|
3
3
|
* - Error sanitization (Measure 5: hide internal details from client)
|
|
4
4
|
* - Audit logging (Measure 6: log tool invocations and results)
|
|
5
5
|
*/
|
|
6
|
-
export declare const
|
|
6
|
+
export declare const ARTICLE_DEFAULT_MAX_CHARS = 20000;
|
|
7
|
+
export declare const ARTICLE_MAX_CHARS_LIMIT = 24000;
|
|
8
|
+
export declare const TEXT_DEFAULT_MAX_CHARS = 30000;
|
|
9
|
+
export declare const TEXT_MAX_CHARS_LIMIT = 48000;
|
|
7
10
|
/** Paginate UTF-16 text without cutting a surrogate pair. */
|
|
8
11
|
export declare function paginateText(text: string, offset: number, maxChars: number): {
|
|
9
12
|
text: string;
|
package/dist/lib/tool-helpers.js
CHANGED
|
@@ -7,7 +7,10 @@ import { logger } from "./logger.js";
|
|
|
7
7
|
import { recordToolCall } from "./metrics.js";
|
|
8
8
|
import { LawNotFoundError, ArticleNotFoundError, KokujiNotFoundError, } from "./errors.js";
|
|
9
9
|
import { EgovApiError } from "./errors.js";
|
|
10
|
-
export const
|
|
10
|
+
export const ARTICLE_DEFAULT_MAX_CHARS = 20_000;
|
|
11
|
+
export const ARTICLE_MAX_CHARS_LIMIT = 24_000;
|
|
12
|
+
export const TEXT_DEFAULT_MAX_CHARS = 30_000;
|
|
13
|
+
export const TEXT_MAX_CHARS_LIMIT = 48_000;
|
|
11
14
|
function paginate(text, offset, maxChars, atLineBoundary) {
|
|
12
15
|
const total_chars = text.length;
|
|
13
16
|
if (offset >= total_chars && total_chars > 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-helpers.js","sourceRoot":"","sources":["../../src/lib/tool-helpers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"tool-helpers.js","sourceRoot":"","sources":["../../src/lib/tool-helpers.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/** Must match package.json `version`; a unit test enforces this. */
|
|
2
|
-
export declare const SERVER_VERSION = "1.
|
|
2
|
+
export declare const SERVER_VERSION = "1.10.1";
|
package/dist/lib/version.js
CHANGED
package/dist/lib/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/lib/version.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,MAAM,CAAC,MAAM,cAAc,GAAG,
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/lib/version.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,MAAM,CAAC,MAAM,cAAc,GAAG,QAAQ,CAAC"}
|
package/dist/server.js
CHANGED
|
@@ -15,16 +15,16 @@ const SERVER_NAME = "building-standards-act-mcp";
|
|
|
15
15
|
const INSTRUCTIONS = `あなたは建築確認申請の法規照合アシスタントです。
|
|
16
16
|
|
|
17
17
|
## 利用可能なツール
|
|
18
|
-
- get_law: 条番号を指定して条文を取得(例: 建築基準法 第20条、附則、別表第一)。format=text は本文と参照一覧(references)を合わせて max_chars
|
|
18
|
+
- get_law: 条番号を指定して条文を取得(例: 建築基準法 第20条、附則、別表第一)。format=text は本文と参照一覧(references)を合わせて max_chars(1,000〜24,000、既定20,000)で制限し、本文の続きは offset で取得。参照の省略時は references_total と references_truncated で通知。長い条の中の項・表の行を探すときは find に語を渡し、返った matches と offset を使う。offset を自分で推測しない。続きを読むときは find を外し、next_offset をそのまま渡す。
|
|
19
19
|
- 別表: 「別表第一」「別表第二」等で数値基準を含む別表を取得可能
|
|
20
20
|
- 改正附則: 「附則(令和○年政令第○号)」で特定改正の経過措置を取得可能。法令番号は check_law_updates で確認
|
|
21
|
-
- get_full_law: 法令全文を取得(例:
|
|
21
|
+
- get_full_law: 法令全文を取得(例: 建築基準法施行令)。max_chars(1,000〜48,000、既定30,000)で区切り、続きは offset で取得
|
|
22
22
|
- search_law: 法令名(タイトル)を検索する。条文本文の検索には search_articles を使う
|
|
23
23
|
- search_articles: 条文本文を検索する。半角スペース区切りで AND 検索。AND・OR・NOT は演算子ではなく検索語として扱われる。全角スペースは半角に直して送る。keyword 必須、law_title で法令名・略称による絞り込みが可能。条番号は返らないので get_law で確定する
|
|
24
|
-
- get_kokuji: 告示の全文を国土交通省の告示データベース(PDF)から動的に取得する。正式名称またはキーワードで指定可能(例: 耐火構造の構造方法を定める件)。
|
|
24
|
+
- get_kokuji: 告示の全文を国土交通省の告示データベース(PDF)から動的に取得する。正式名称またはキーワードで指定可能(例: 耐火構造の構造方法を定める件)。max_chars(1,000〜48,000、既定30,000)で区切り、続きは offset で取得。
|
|
25
25
|
※ 国交省データベースに未収録の告示は取得できません。取得失敗時は類似告示を提案します
|
|
26
26
|
- check_law_updates: 法令の改正状況を確認する(法令名指定で単体チェック、グループ指定でバッチチェック、show_historyで改正履歴表示)
|
|
27
|
-
- get_laws_batch: 複数の法令・条文を一括取得する(最大20件、e-Govから条単位取得)。max_chars_per_item(1,000〜
|
|
27
|
+
- get_laws_batch: 複数の法令・条文を一括取得する(最大20件、e-Govから条単位取得)。max_chars_per_item(1,000〜20,000、既定8,000)と max_total_chars(10,000〜24,000、既定20,000)で応答量を制限。上限を超える指定は入力エラー。長い条(例: 建築基準法施行規則 第1条の3)は get_law で個別に取得
|
|
28
28
|
- verify_citation: AIの回答に含まれる法令引用を検証する(条文存在確認・テキスト照合、最大10件)
|
|
29
29
|
- suggest_related: 指定した条文の関連法令・委任先・同法令内参照を自動抽出して提案する
|
|
30
30
|
- analyze_article: 条文の構造解析メタデータ(項数・号数・参照統計・プレビュー)をJSON形式で返す
|
|
@@ -3,7 +3,7 @@ import { resolveLawId } from "../lib/law-resolver.js";
|
|
|
3
3
|
import { getLawData } from "../lib/egov-client.js";
|
|
4
4
|
import { parseFullLaw } from "../lib/egov-parser.js";
|
|
5
5
|
import { LawNotFoundError } from "../lib/errors.js";
|
|
6
|
-
import {
|
|
6
|
+
import { TEXT_DEFAULT_MAX_CHARS, TEXT_MAX_CHARS_LIMIT, paginateText, TOOL_ANNOTATIONS, wrapToolHandler, } from "../lib/tool-helpers.js";
|
|
7
7
|
const schema = {
|
|
8
8
|
law_name: z
|
|
9
9
|
.string()
|
|
@@ -13,9 +13,9 @@ const schema = {
|
|
|
13
13
|
.number()
|
|
14
14
|
.int()
|
|
15
15
|
.min(1_000)
|
|
16
|
-
.max(
|
|
17
|
-
.default(
|
|
18
|
-
.describe("1回に取得する最大文字数(1,000〜
|
|
16
|
+
.max(TEXT_MAX_CHARS_LIMIT)
|
|
17
|
+
.default(TEXT_DEFAULT_MAX_CHARS)
|
|
18
|
+
.describe("1回に取得する最大文字数(1,000〜48,000)。省略時は30,000文字。"),
|
|
19
19
|
offset: z
|
|
20
20
|
.number()
|
|
21
21
|
.int()
|
|
@@ -29,7 +29,7 @@ export function registerGetFullLawTool(server) {
|
|
|
29
29
|
description: "法令の全文を取得する。条番号を指定せず法令全体のテキストを返す。",
|
|
30
30
|
inputSchema: schema,
|
|
31
31
|
annotations: TOOL_ANNOTATIONS,
|
|
32
|
-
}, wrapToolHandler("get_full_law", async ({ law_name, max_chars =
|
|
32
|
+
}, wrapToolHandler("get_full_law", async ({ law_name, max_chars = TEXT_DEFAULT_MAX_CHARS, offset = 0, }) => {
|
|
33
33
|
const resolved = await resolveLawId(law_name);
|
|
34
34
|
if (!resolved) {
|
|
35
35
|
throw new LawNotFoundError(law_name);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-full-law.js","sourceRoot":"","sources":["../../src/tools/get-full-law.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"get-full-law.js","sourceRoot":"","sources":["../../src/tools/get-full-law.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,YAAY,EACZ,gBAAgB,EAChB,eAAe,GAChB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,MAAM,GAAG;IACb,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,GAAG,CAAC,GAAG,CAAC;SACR,QAAQ,CACP,mCAAmC,CACpC;IACH,SAAS,EAAE,CAAC;SACT,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,KAAK,CAAC;SACV,GAAG,CAAC,oBAAoB,CAAC;SACzB,OAAO,CAAC,sBAAsB,CAAC;SAC/B,QAAQ,CAAC,0CAA0C,CAAC;IACvD,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,OAAO,CAAC,CAAC,CAAC;SACV,QAAQ,CAAC,6CAA6C,CAAC;CAC3D,CAAC;AAEF,MAAM,UAAU,sBAAsB,CAAC,MAAiB;IACtD,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,kCAAkC;QAC/C,WAAW,EAAE,MAAM;QACnB,WAAW,EAAE,gBAAgB;KAC9B,EACD,eAAe,CAAC,cAAc,EAAE,KAAK,EAAE,EACrC,QAAQ,EAAE,SAAS,GAAG,sBAAsB,EAAE,MAAM,GAAG,CAAC,GACzD,EAAE,EAAE;QACH,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAErD,MAAM,KAAK,GAAG;YACZ,IAAI,QAAQ,CAAC,KAAK,KAAK;YACvB,SAAS,QAAQ,CAAC,OAAO,EAAE;YAC3B,EAAE;YACF,QAAQ;YACR,EAAE;YACF,eAAe;SAChB,CAAC;QACF,IAAI,QAAQ,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;YACtC,KAAK,CAAC,IAAI,CACR,4CAA4C,CAC7C,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE9B,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC;SACvF,CAAC;IACJ,CAAC,CAAC,CACH,CAAC;AACJ,CAAC"}
|
package/dist/tools/get-kokuji.js
CHANGED
|
@@ -6,7 +6,7 @@ import { extractPdfText } from "../lib/pdf-extractor.js";
|
|
|
6
6
|
import { extractLatestAmendment } from "../lib/kokuji-amendment.js";
|
|
7
7
|
import { searchLaws, getLawData } from "../lib/egov-client.js";
|
|
8
8
|
import { parseFullLaw } from "../lib/egov-parser.js";
|
|
9
|
-
import {
|
|
9
|
+
import { TEXT_DEFAULT_MAX_CHARS, TEXT_MAX_CHARS_LIMIT, paginateText, TOOL_ANNOTATIONS, wrapToolHandler, } from "../lib/tool-helpers.js";
|
|
10
10
|
const registry = new KokujiRegistry();
|
|
11
11
|
const schema = {
|
|
12
12
|
kokuji_name: z
|
|
@@ -17,9 +17,9 @@ const schema = {
|
|
|
17
17
|
.number()
|
|
18
18
|
.int()
|
|
19
19
|
.min(1_000)
|
|
20
|
-
.max(
|
|
21
|
-
.default(
|
|
22
|
-
.describe("1回に取得する最大文字数(1,000〜
|
|
20
|
+
.max(TEXT_MAX_CHARS_LIMIT)
|
|
21
|
+
.default(TEXT_DEFAULT_MAX_CHARS)
|
|
22
|
+
.describe("1回に取得する最大文字数(1,000〜48,000)。省略時は30,000文字。"),
|
|
23
23
|
offset: z
|
|
24
24
|
.number()
|
|
25
25
|
.int()
|
|
@@ -104,7 +104,7 @@ export function registerGetKokujiTool(server) {
|
|
|
104
104
|
description: "建築基準法が技術基準を委任している告示の全文を取得する。国土交通省の告示データベース(PDF)から取得し、見つからない場合はe-Gov APIで検索を試みる。",
|
|
105
105
|
inputSchema: schema,
|
|
106
106
|
annotations: TOOL_ANNOTATIONS,
|
|
107
|
-
}, wrapToolHandler("get_kokuji", async ({ kokuji_name, max_chars =
|
|
107
|
+
}, wrapToolHandler("get_kokuji", async ({ kokuji_name, max_chars = TEXT_DEFAULT_MAX_CHARS, offset = 0, }) => {
|
|
108
108
|
const textResult = (text) => ({
|
|
109
109
|
content: [{ type: "text", text: paginateText(text, offset, max_chars).text }],
|
|
110
110
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-kokuji.js","sourceRoot":"","sources":["../../src/tools/get-kokuji.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAoB,MAAM,uBAAuB,CAAC;AAClG,OAAO,EAAE,cAAc,EAAsB,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"get-kokuji.js","sourceRoot":"","sources":["../../src/tools/get-kokuji.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/get-law.js
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { resolveLawId } from "../lib/law-resolver.js";
|
|
3
3
|
import { fetchParsedArticle } from "../lib/article-fetcher.js";
|
|
4
|
+
import { findAllMatches } from "../lib/text-find.js";
|
|
4
5
|
import { LawNotFoundError, ArticleNotFoundError } from "../lib/errors.js";
|
|
5
|
-
import {
|
|
6
|
+
import { ARTICLE_DEFAULT_MAX_CHARS, ARTICLE_MAX_CHARS_LIMIT, paginateAtLineBoundary, TOOL_ANNOTATIONS, wrapToolHandler, } from "../lib/tool-helpers.js";
|
|
6
7
|
import { parsedArticleSchema, structuredArticleSchema, } from "../lib/article-schemas.js";
|
|
8
|
+
const MAX_LISTED_MATCHES = 20;
|
|
9
|
+
const FIND_LINE_MARGIN = 100;
|
|
7
10
|
const schema = {
|
|
8
11
|
law_name: z
|
|
9
12
|
.string()
|
|
@@ -21,15 +24,21 @@ const schema = {
|
|
|
21
24
|
.number()
|
|
22
25
|
.int()
|
|
23
26
|
.min(1_000)
|
|
24
|
-
.max(
|
|
25
|
-
.default(
|
|
26
|
-
.describe("本文と参照一覧(references)を合わせた最大文字数(1,000〜
|
|
27
|
+
.max(ARTICLE_MAX_CHARS_LIMIT)
|
|
28
|
+
.default(ARTICLE_DEFAULT_MAX_CHARS)
|
|
29
|
+
.describe("本文と参照一覧(references)を合わせた最大文字数(1,000〜24,000)。省略時は20,000文字。format=text のみ適用。"),
|
|
27
30
|
offset: z
|
|
28
31
|
.number()
|
|
29
32
|
.int()
|
|
30
33
|
.min(0)
|
|
31
34
|
.default(0)
|
|
32
35
|
.describe("本文の取得開始位置(0から始まる文字位置)。続きは案内された offset を指定。format=text のみ適用。"),
|
|
36
|
+
find: z
|
|
37
|
+
.string()
|
|
38
|
+
.min(1)
|
|
39
|
+
.max(100)
|
|
40
|
+
.optional()
|
|
41
|
+
.describe("この条の本文から探す語。指定すると最初の一致を含む行から本文を返し、一致位置の一覧を matches に入れる。空白は無視し、全角・半角の違いは区別しない。長い条の中の項・表の行を探すときに使い、offset を推測しない。format=text のみ適用。続きは find を外して next_offset を指定。"),
|
|
33
42
|
};
|
|
34
43
|
const outputSchema = {
|
|
35
44
|
law_title: z.string(),
|
|
@@ -41,6 +50,9 @@ const outputSchema = {
|
|
|
41
50
|
offset: z.number().optional(),
|
|
42
51
|
next_offset: z.number().nullable().optional(),
|
|
43
52
|
truncated: z.boolean().optional(),
|
|
53
|
+
find: z.string().optional(),
|
|
54
|
+
matches: z.array(z.number()).optional(),
|
|
55
|
+
matches_total: z.number().optional(),
|
|
44
56
|
references_total: z.number().optional(),
|
|
45
57
|
references_truncated: z.boolean().optional(),
|
|
46
58
|
note: z.string().optional(),
|
|
@@ -54,11 +66,11 @@ const outputSchema = {
|
|
|
54
66
|
export function registerGetLawTool(server) {
|
|
55
67
|
server.registerTool("get_law", {
|
|
56
68
|
title: "条文取得",
|
|
57
|
-
description: "条番号を指定して法令の条文を取得する。附則・別表にも対応。略称・正式名称のいずれでも指定可能。format=structured で条→項→号の階層構造をJSON形式で取得可能。",
|
|
69
|
+
description: "条番号を指定して法令の条文を取得する。附則・別表にも対応。略称・正式名称のいずれでも指定可能。format=structured で条→項→号の階層構造をJSON形式で取得可能。format=text の上限は、structuredContent を含む応答全体が約5万字に収まる値。長い条の中の項・表の行は find で探し、offset を推測しない。",
|
|
58
70
|
inputSchema: schema,
|
|
59
71
|
annotations: TOOL_ANNOTATIONS,
|
|
60
72
|
outputSchema,
|
|
61
|
-
}, wrapToolHandler("get_law", async ({ law_name, article_number, format, max_chars =
|
|
73
|
+
}, wrapToolHandler("get_law", async ({ law_name, article_number, format, max_chars = ARTICLE_DEFAULT_MAX_CHARS, offset = 0, find, }) => {
|
|
62
74
|
const resolved = await resolveLawId(law_name);
|
|
63
75
|
if (!resolved) {
|
|
64
76
|
throw new LawNotFoundError(law_name);
|
|
@@ -99,8 +111,23 @@ export function registerGetLawTool(server) {
|
|
|
99
111
|
throw new ArticleNotFoundError(article_number, resolved.title);
|
|
100
112
|
}
|
|
101
113
|
const { references: articleReferences, ...articleWithoutReferences } = article;
|
|
102
|
-
const
|
|
103
|
-
const
|
|
114
|
+
const matches = find === undefined ? undefined : findAllMatches(article.text, find);
|
|
115
|
+
const match = matches?.find((item) => item.start >= offset) ?? matches?.[0];
|
|
116
|
+
const noMatch = matches?.length === 0;
|
|
117
|
+
let pageStart = offset;
|
|
118
|
+
if (match) {
|
|
119
|
+
const lineStart = article.text.lastIndexOf("\n", match.start - 1) + 1;
|
|
120
|
+
pageStart = match.end - lineStart > max_chars - FIND_LINE_MARGIN ? match.start : lineStart;
|
|
121
|
+
}
|
|
122
|
+
const page = noMatch
|
|
123
|
+
? { text: "", total_chars: article.text.length, offset, next_offset: null }
|
|
124
|
+
: paginateAtLineBoundary(article.text, pageStart, max_chars);
|
|
125
|
+
const findInfo = matches === undefined ? {} : {
|
|
126
|
+
find,
|
|
127
|
+
matches: matches.slice(0, MAX_LISTED_MATCHES).map((item) => item.start),
|
|
128
|
+
matches_total: matches.length,
|
|
129
|
+
};
|
|
130
|
+
const pageReferences = noMatch ? undefined : page.offset > 0 || page.next_offset !== null
|
|
104
131
|
? articleReferences?.filter((ref) => page.text.includes(ref.raw_text))
|
|
105
132
|
: articleReferences;
|
|
106
133
|
let references = pageReferences;
|
|
@@ -118,14 +145,22 @@ export function registerGetLawTool(server) {
|
|
|
118
145
|
}
|
|
119
146
|
const referencesTotal = pageReferences?.length ?? 0;
|
|
120
147
|
const referencesTruncated = (references?.length ?? 0) < referencesTotal;
|
|
121
|
-
const lines = [
|
|
148
|
+
const lines = noMatch ? [
|
|
149
|
+
`【${resolved.title}】${article.article_title}`,
|
|
150
|
+
`この条に『${find}』は見つかりませんでした。(本文全体 ${page.total_chars} 文字。空白を無視し、全角・半角を区別せずに探しました)`,
|
|
151
|
+
] : [
|
|
122
152
|
`【${resolved.title}】${article.article_title}`,
|
|
123
153
|
article.article_caption ? article.article_caption : "",
|
|
124
154
|
"",
|
|
155
|
+
...(matches === undefined ? [] : [
|
|
156
|
+
`(『${find}』の一致 ${matches.length} 件。offset=${page.offset} から表示。一致位置: ${findInfo.matches?.join(", ")})`,
|
|
157
|
+
]),
|
|
125
158
|
page.text,
|
|
126
159
|
].filter((line) => line !== undefined);
|
|
127
160
|
if (page.next_offset !== null) {
|
|
128
|
-
lines.push(
|
|
161
|
+
lines.push(find === undefined
|
|
162
|
+
? `(続きがあります。offset=${page.next_offset} を指定して続きを取得してください。本文全体 ${page.total_chars} 文字)`
|
|
163
|
+
: `(続きがあります。find を外し offset=${page.next_offset} を指定して続きを取得してください。本文全体 ${page.total_chars} 文字)`);
|
|
129
164
|
}
|
|
130
165
|
if (references && references.length > 0) {
|
|
131
166
|
const refLabels = {
|
|
@@ -165,6 +200,7 @@ export function registerGetLawTool(server) {
|
|
|
165
200
|
offset: page.offset,
|
|
166
201
|
next_offset: page.next_offset,
|
|
167
202
|
truncated: page.next_offset !== null,
|
|
203
|
+
...findInfo,
|
|
168
204
|
...(referencesTruncated ? {
|
|
169
205
|
references_total: referencesTotal,
|
|
170
206
|
references_truncated: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-law.js","sourceRoot":"","sources":["../../src/tools/get-law.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"get-law.js","sourceRoot":"","sources":["../../src/tools/get-law.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,9 @@ import { paginateAtLineBoundary, TOOL_ANNOTATIONS, wrapToolHandler, } from "../l
|
|
|
6
6
|
import { structuredArticleSchema } from "../lib/article-schemas.js";
|
|
7
7
|
const MAX_REQUESTS = 20;
|
|
8
8
|
const DEFAULT_MAX_CHARS_PER_ITEM = 8_000;
|
|
9
|
-
const
|
|
9
|
+
const MAX_CHARS_PER_ITEM_LIMIT = 20_000;
|
|
10
|
+
const DEFAULT_MAX_TOTAL_CHARS = 20_000;
|
|
11
|
+
const MAX_TOTAL_CHARS_LIMIT = 24_000;
|
|
10
12
|
const schema = {
|
|
11
13
|
requests: z
|
|
12
14
|
.array(z.object({
|
|
@@ -26,16 +28,16 @@ const schema = {
|
|
|
26
28
|
.number()
|
|
27
29
|
.int()
|
|
28
30
|
.min(1_000)
|
|
29
|
-
.max(
|
|
31
|
+
.max(MAX_CHARS_PER_ITEM_LIMIT)
|
|
30
32
|
.default(DEFAULT_MAX_CHARS_PER_ITEM)
|
|
31
|
-
.describe("条文ごとの最大文字数(1,000〜
|
|
33
|
+
.describe("条文ごとの最大文字数(1,000〜20,000)。省略時は8,000文字。"),
|
|
32
34
|
max_total_chars: z
|
|
33
35
|
.number()
|
|
34
36
|
.int()
|
|
35
37
|
.min(10_000)
|
|
36
|
-
.max(
|
|
38
|
+
.max(MAX_TOTAL_CHARS_LIMIT)
|
|
37
39
|
.default(DEFAULT_MAX_TOTAL_CHARS)
|
|
38
|
-
.describe("応答全体のJSONの最大文字数(10,000〜
|
|
40
|
+
.describe("応答全体のJSONの最大文字数(10,000〜24,000)。省略時は20,000文字。超過分の本文は省略。"),
|
|
39
41
|
};
|
|
40
42
|
const outputSchema = {
|
|
41
43
|
total: z.number(),
|
|
@@ -69,7 +71,7 @@ const outputSchema = {
|
|
|
69
71
|
export function registerGetLawsBatchTool(server) {
|
|
70
72
|
server.registerTool("get_laws_batch", {
|
|
71
73
|
title: "条文一括取得",
|
|
72
|
-
description: "複数の法令・条文を一括取得する。各条文をe-Govから個別に条単位取得する。最大20
|
|
74
|
+
description: "複数の法令・条文を一括取得する。各条文をe-Govから個別に条単位取得する。最大20件。上限は、structuredContent を含む応答全体が約5万字に収まる値。長い条(例: 建築基準法施行規則 第1条の3)は get_law で個別に取得。",
|
|
73
75
|
inputSchema: schema,
|
|
74
76
|
annotations: TOOL_ANNOTATIONS,
|
|
75
77
|
outputSchema,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-laws-batch.js","sourceRoot":"","sources":["../../src/tools/get-laws-batch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,eAAe,GAChB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAOpE,MAAM,YAAY,GAAG,EAAE,CAAC;AACxB,MAAM,0BAA0B,GAAG,KAAK,CAAC;AACzC,MAAM,uBAAuB,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"get-laws-batch.js","sourceRoot":"","sources":["../../src/tools/get-laws-batch.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "building-standards-act-mcp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.10.1",
|
|
4
4
|
"description": "MCP server for Japanese building regulations — fetches law text from e-Gov API v2 to prevent AI hallucination in building permit reviews",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|