mcp-taiwan-legal-db
# mcp-taiwan-legal-db
[English](https://github.com/lawchat-oss/mcp-taiwan-legal-db/blob/main/README.en.md) · **繁體中文**
台灣法規、裁判書、憲法法庭裁判與卷宗、行政函釋、判解、訴願與準司法決定、立法資料、司法統計與法學文獻 — MCP Server。
讓任何 MCP 相容的 AI 助手直接存取台灣公開法律資料:
> 本工具即時爬取官網公開資料,請求由使用者自己的電腦發出。使用前請先讀[免責聲明](#免責聲明):使用者須自行遵守各網站的使用規定與相關法令,查詢結果不構成法律意見。
- **司法院裁判書** — judgment.judicial.gov.tw(全文搜尋 + 取得,附歷審清單)
- **全國法規資料庫** — law.moj.gov.tw(11,700+ 部法規,含官方英譯、最新公布日與施行日註記)
- **憲法法庭** — cons.judicial.gov.tw(871 筆大法官解釋 + 憲判字,含理由書全文,離線快取;受理中案件、言詞辯論、法庭之友與卷內書狀即時查詢)
- **行政機關函釋** — 法務部、勞動部、衛福部、財政部、經濟部、內政部、金管會、交通部、中央銀行、人事總處、消保處、考試院系統、臺北市、新北市等 51 個官方來源,含智慧局專利、商標審查基準;標出官網的「停止適用」與「現行」標示(即時查詢)
- **判解** — 司法院法學資料檢索系統(最高法院決議、法律問題座談、停止適用判例、院字/院解字、大法庭、精選裁判)
- **訴願與準司法決定** — 行政院、各部會與縣市政府訴願決定,公平會處分書、勞動部不當勞動行為裁決、保訓會復審/再申訴決定、金管會裁罰、工程會採購申訴、監察院案件、律師懲戒決議
- **立法資料** — 每一條歷次修正的條文與立法理由、立法歷程、立法院議案(含審查中草案)與公報紀錄、法規命令草案預告
- **統計與量刑** — 司法統計年報/月報、法務統計、《犯罪狀況及其分析》、司法院量刑資訊系統的刑度統計
- **法學文獻** — 司法院專題研究報告(含司法研究年報)、國圖期刊論文索引、GRB 研究計畫、開放取用法學期刊
- **其他規範** — 地方自治法規、條約協定與租稅協定、證交所/櫃買中心/期交所規章
以 Python 搭配 [MCP Python SDK](https://github.com/modelcontextprotocol/python-sdk) 寫成。純工具 wrapper,只連線下方「資料來源與統計」列出的官方網站(政府機關,以及國家圖書館、中研院、國立大學、證券交易所等公共機構),不發送任何其他網路請求;釋字/憲判字資料為內建離線打包。
---
## 特色
| 功能 | 說明 |
|------|------|
| **26 個 MCP 工具** | 裁判書搜尋/全文/歷審、法規查詢(含英譯與修法追蹤)、釋字/憲判字查詢、引用關係圖譜、憲法法庭卷宗、行政函釋與審查基準、判解、訴願與準司法決定、立法理由與立法紀錄、統計與量刑、法學文獻、地方法規與條約 |
| **離線快取** | 871 筆大法官解釋與憲判字(含理由書全文,以及從官網 PDF 擷取的大法官意見書全文)從本地資料即時回傳 |
| **引用關係圖譜** | 從理由書抽取所有引用的釋字/憲判字(往前追溯),或列出後來引用某件的釋字/憲判字(往後追溯),追溯憲法學說演變 |
| **全文搜尋** | 裁判書關鍵字搜尋 + 釋字爭點/理由書全文搜尋 |
| **混合請求策略** | 預設用 httpx 直打(~0.25s);司法院 F5 WAF 或其他官網的 JavaScript 檢查擋下時,自動改用 Playwright 瀏覽器後繼續 |
---
## ⚡ 安裝(PyPI,推薦)
```bash
pip install mcp-taiwan-legal-db
```
> **Debian / Ubuntu / WSL 注意**:系統 Python 受 PEP 668 保護,直接 `pip install` 會被擋。請改用:
> - `pipx install mcp-taiwan-legal-db`(推薦,自動建隔離 venv,CLI tool 標準裝法)
> - 或 `pip install --user --break-system-packages mcp-taiwan-legal-db`
> **Windows / 企業部署**:建議用 [uv](https://docs.astral.sh/uv/) 或 pipx 裝成獨立工具,不碰系統 Python 的 site-packages:
> ```powershell
> uv tool install mcp-taiwan-legal-db
> uv tool update-shell # 把工具目錄加進 PATH,重開終端機後生效
> ```
> 套件目錄只讀不寫:查詢快取、WAF cookies 與每週更新的法規代碼表都寫在每位使用者自己的目錄(Windows:`%LOCALAPPDATA%\mcp-taiwan-legal-db`;macOS / Linux:`~/.cache/mcp-taiwan-legal-db`),所以裝到 `C:\Program Files` 等全使用者共用位置也能用。要改位置可設環境變數 `MCP_TAIWAN_LEGAL_DB_HOME`。
裝完後 entry point `mcp-taiwan-legal-db` 會在 PATH 上。**接到 Claude Code**(任何專案都能用):
```bash
claude mcp add taiwan-legal-db mcp-taiwan-legal-db --scope user
```
接著 `/mcp` 重啟連線、Claude 就會在自然語言查詢時自動用 26 個 MCP tool。
**Chromium**:司法院 WAF fallback,以及文化部訴願、NCC、雲林縣等需要瀏覽器的來源,會在第一次需要時自動下載安裝(約 150MB,僅一次)。無法連外下載的環境請預先安裝:
```bash
uvx --from mcp-taiwan-legal-db playwright install chromium # 僅在查詢需要瀏覽器時啟動,平時 idle
```
**驗證碼辨識**:內政部與衛福部訴願的圖形驗證碼需要本機 OCR 依賴,安裝時加上 `[captcha]`:`pip install "mcp-taiwan-legal-db[captcha]"`(uvx:`uvx --from "mcp-taiwan-legal-db[captcha]" mcp-taiwan-legal-db`;Claude Code plugin 已內含)。未安裝時這兩個來源會回報需要安裝,其餘來源不受影響。
---
## 開發環境設置
下面是 clone 來修程式 / 跑測試的流程:
```bash
# 1. Clone repo
git clone https://github.com/lawchat-oss/mcp-taiwan-legal-db.git
cd mcp-taiwan-legal-db
# 2. 建立並初始化虛擬環境
python3 -m venv .venv
.venv/bin/pip install --upgrade pip
.venv/bin/pip install -e .
# 3. 安裝 Playwright Chromium(供需要瀏覽器的官方來源使用)
.venv/bin/playwright install chromium
# 4. 驗證伺服器可以啟動並註冊 26 個工具
.venv/bin/python -c "
import asyncio
from mcp_server.server import mcp
print('Server:', mcp.name)
tools = asyncio.run(mcp.list_tools())
print('Tools:', [t.name for t in tools])
assert len(tools) == 26, f'Expected 26 tools, got {len(tools)}'
print('✓ Setup OK')
"
```
**預期輸出:**
```
Server: 台灣法律資料庫
Tools: ['search_judgments', 'get_judgment', 'query_regulation', 'get_pcode', 'search_regulations', 'get_interpretation', 'search_interpretations', 'get_citations', 'search_agency_interpretations', 'get_agency_interpretation', 'search_precedents', 'get_precedent', 'search_administrative_decisions', 'get_administrative_decision', 'get_legislative_history', 'search_constitutional_docket', 'get_constitutional_case_file', 'search_legislative_records', 'get_legislative_record', 'search_statistics', 'get_statistics', 'get_sentencing_statistics', 'search_legal_literature', 'get_legal_literature', 'search_other_regulations', 'get_other_regulation']
✓ Setup OK
```
上面沒報錯就完成了。Repo 根目錄已經帶一份 `.mcp.json`,**任何在此資料夾內開的 Claude Code session 會自動載入這個 server**,不需要額外註冊。
---
## 有什麼工具可以用
26 個 MCP 工具,全部唯讀,全部只連線官方公開資料庫(見「資料來源與統計」)。
### 法規與裁判
| 工具 | 用途 | 典型呼叫 |
|---|---|---|
| `search_judgments` | 搜尋司法院裁判書資料庫 | `search_judgments(keyword="預售屋 遲延交屋", case_type="民事")` |
| `get_judgment` | 依 JID 或 URL 取得單筆判決全文與歷審清單 | `get_judgment(jid="TPSM,114,台上,3753,20251112,1")` |
| `query_regulation` | 查詢法規條文(單條、區間、跨號多條)、章節目錄、修法沿革、官方英譯 | `query_regulation(law_name="民法", article_no="184~186,247-1")` |
| `get_pcode` | 將法規名稱解析為 pcode(法規代號) | `get_pcode(law_name="律師法")` |
| `search_regulations` | 以關鍵字搜尋 11,700+ 部法規,或列出某日以後修正公布的法規 | `search_regulations(keyword="勞動")` |
### 憲法法庭
| 工具 | 用途 | 典型呼叫 |
|---|---|---|
| `get_interpretation` | 大法官解釋/憲判字全文(離線快取) | `get_interpretation("釋字748", reasoning_keyword="婚姻")` |
| `search_interpretations` | 搜尋釋字/憲判字(爭點 + 理由書全文) | `search_interpretations(keyword="集會自由")` |
| `get_citations` | 引用關係圖譜(往前或往後追溯) | `get_citations("釋字748", include_context=True)` |
| `search_constitutional_docket` | 受理中、排定言詞辯論、徵求法庭之友意見的案件 | `search_constitutional_docket(status="amicus")` |
| `get_constitutional_case_file` | 卷內文書:聲請書、答辯書、鑑定意見、法庭之友意見書、言詞辯論筆錄等 | `get_constitutional_case_file("113年憲判字第8號")` |
### 行政函釋與判解
| 工具 | 用途 | 典型呼叫 |
|---|---|---|
| `search_agency_interpretations` | 搜尋各機關行政函釋與智慧局審查基準(51 個官方來源,即時查詢;標出停止適用) | `search_agency_interpretations(keyword="加班費", agency="勞動部")` |
| `get_agency_interpretation` | 取得函釋全文(主旨、說明、相關法條、編註、效力標示) | `get_agency_interpretation("moj:FE393340")` |
| `search_precedents` | 搜尋決議、法律問題座談、停止適用判例、司法解釋(院字/院解字)、大法庭裁定、精選裁判 | `search_precedents(keyword="借名登記", category="決議")` |
| `get_precedent` | 取得判解全文(含編註,例如「不再援用」) | `get_precedent("D:A,20170214,001")` |
### 訴願與準司法決定
| 工具 | 用途 | 典型呼叫 |
|---|---|---|
| `search_administrative_decisions` | 搜尋訴願決定(行政院、各部會、縣市政府)與準司法機關的決定、處分 | `search_administrative_decisions(keyword="個人資料", source="行政院")` |
| `get_administrative_decision` | 取得決定書/處分書全文(由官網 HTML 或 PDF 擷取) | `get_administrative_decision("ey:A-115-000633")` |
### 立法資料
| 工具 | 用途 | 典型呼叫 |
|---|---|---|
| `get_legislative_history` | 某一條文歷次制定、修正時的條文與立法理由,附最近一次修正的立法歷程 | `get_legislative_history("勞動基準法", "24")` |
| `search_legislative_records` | 搜尋立法院議案(含審查中草案)、立法院公報、法規命令草案預告 | `search_legislative_records("勞動基準法", kind="bills")` |
| `get_legislative_record` | 取得議案、公報紀錄或草案預告全文 | `get_legislative_record("bill:202110226160000")` |
### 統計與法學文獻
| 工具 | 用途 | 典型呼叫 |
|---|---|---|
| `search_statistics` | 搜尋司法統計年報/月報、法務統計、《犯罪狀況及其分析》 | `search_statistics(keyword="收結", source="司法統計")` |
| `get_statistics` | 取得統計表內容或報告全文 | `get_statistics("moj:INF_COMMON_P/807")` |
| `get_sentencing_statistics` | 司法院量刑資訊系統的刑度統計(判決數、刑度平均與分布) | `get_sentencing_statistics(crime="竊盜")` |
| `search_legal_literature` | 搜尋司法院專題研究報告、國圖期刊論文索引、GRB 研究計畫、開放取用法學期刊 | `search_legal_literature("量刑", source="司法研究年報")` |
| `get_legal_literature` | 取得書目、摘要與全文(有公開全文時) | `get_legal_literature("ncl:A15001353")` |
### 其他規範
| 工具 | 用途 | 典型呼叫 |
|---|---|---|
| `search_other_regulations` | 搜尋全國法規資料庫以外的規範:地方自治法規、條約協定、交易所規章 | `search_other_regulations("違章建築", source="臺北市")` |
| `get_other_regulation` | 取得條文(單條、區間、多條;未分條的文件回全文) | `get_other_regulation("taichung:GL001385", article_no="3")` |
### 工具細節
<details>
<summary><b><code>search_judgments</code></b></summary>
搜尋司法院判決系統。支援:
- **精確案號查詢**(快,HTTP GET):設定 `case_word` + `case_number` + `year_from`
- **全文關鍵字搜尋**:設定 `keyword`
- **裁判主文篩選**:`main_text="被告應將 移轉"` + `keyword="借名登記"` → 找被告敗訴的借名登記案
- 可依 `court`、`case_type`(民事/刑事/行政/懲戒)、`year_from`/`year_to` 過濾
- 結果自動依法院層級排序(最高 → 高等 → 地方)
- **資料涵蓋範圍**:民國 89 年(2000)起接近完整,81–88 年(1992–1999)僅零星收錄,80 年(1991)以前查無。這是司法院系統本身的收錄範圍,本工具不做任何年份裁切
**重要**:要查某個特定案號時,**一定**要用 `case_word`+`case_number`,不要放進 `keyword`。
```python
# ✅ 正確 — 查 114 台上 3753 最高法院
search_judgments(case_word="台上", case_number="3753", year_from=114, court="最高法院")
# ✅ 正確 — 全文搜尋
search_judgments(keyword="預售屋 遲延交屋")
# ❌ 錯 — 把案號放進 keyword
search_judgments(keyword="114年度台上字第3753號")
```
</details>
<details>
<summary><b><code>get_judgment</code></b></summary>
取得單筆判決的結構化全文。
- 輸入:`jid`(從 `search_judgments` 結果取得)或 `url`
- 輸出:`{case_id, court, date, main_text, facts, reasoning, cited_statutes, cited_cases, full_text, source_url, history, history_note}`
- HTTP GET data.aspx 取得全文
- 全文快取 30 天;歷審清單會隨上訴變動,另外只快取 24 小時
```python
get_judgment(jid="TPSM,114,台上,3753,20251112,1")
# → history: 臺中地院 111 易 203 → 臺中高分院 113 上易 80 → … 各審級裁判(含 jid、url)
```
`history` 是司法院依案號串起的歷審清單,引用判決前先看後面還有沒有上級審裁判、是否已被廢棄或發回。`pending_supreme_court=true` 表示案件目前在最高法院/最高行政法院審理中;清單最後一筆之後沒有更高審級,不等於已經確定(可能仍在上訴期間內,或上級審裁判尚未上網)。
單筆判決可能超過 1 萬 token。建議先用 `search_judgments` 取得 metadata,只在使用者明確需要時才抓全文。
</details>
<details>
<summary><b><code>query_regulation</code></b></summary>
查詢全國法規資料庫的條文:單條、區間或跨號多條,一次最多 50 條。不指定條號時不回傳條文,只回傳章節目錄(`structure`,各編章節的標題與起始條號)與條號範圍;整部法規動輒上千條,一次全給只會塞滿 agent 的 context。
```python
# 單一條文
query_regulation(law_name="民法", article_no="184")
# 區間、跨號多條,可混用(也接受「第184條」「247之1」)
query_regulation(law_name="民法", article_no="184~198")
query_regulation(law_name="民法", article_no="184,185,247-1")
# 不指定條號:章節目錄與條號範圍
query_regulation(law_name="律師法")
# 附修法沿革;指定條號時另回傳該條歷次條文(article_history)
query_regulation(law_name="勞動基準法", article_no="24", include_history=True)
# 官方英譯(約 970 部法律與部分命令)
query_regulation(law_name="勞動基準法", article_no="24", language="en")
```
回傳的 `law` 另含 `last_amended`(最新公布日)與 `category`(主管機關分類);有特殊施行日時含 `effective_date`/`effective_note`(如「自公布後六個月施行」「施行日期由行政院定之」),引用新修正條文前先看這兩欄確認是否已施行。這些欄位來自每週更新的 `law_meta.json`。
`language="en"` 回傳官方英譯本與 `english_version_date`;英譯常落後中文修正,版本較舊時 `note` 會提醒,法律效力以中文為準。英譯檔第一次查詢時下載到使用者資料目錄(約 16 MB),每週更新。
指定條號並開啟 `include_history` 時,`article_history.revisions` 會列出該條每次制定、增訂、修正、刪除的日期與當時條文,可直接前後對照。只讀取修法沿革中動到該條的歷史版本(例如民法第 184 條只需 36 個版本中的 5 個),版本清單與歷史版本全文都會快取;讀取失敗的版本會列在 `failed_versions` 並標 `partial`。
支援 `law_name`(自動解析 pcode,縮寫如「勞基法」也可)或直接傳 `pcode`。超過 50 條時回傳 `has_more` 與續查起點;指定了卻不存在的單條列在 `missing`。`from_no`/`to_no` 等同 `article_no="起~迄"`。
</details>
<details>
<summary><b><code>search_regulations</code></b></summary>
以名稱關鍵字搜尋法規,每頁 50 筆,現行法規排在已廢止之前。每筆含 `last_amended` 與 `category`,可用來追蹤修法:
```python
search_regulations(keyword="勞動")
search_regulations(keyword="消費", exclude_abolished=True)
# 某日以後新制定/修正公布的法規(新到舊),可再依主管機關篩選
search_regulations(amended_since="2026-09-01")
search_regulations(amended_since="115-07-01", category="勞動部")
```
</details>
<details>
<summary><b><code>get_interpretation</code></b></summary>
取得大法官解釋(釋字第 1–813 號)或憲法法庭裁判(憲判字)全文。預設層從本地 JSON 快取即時回傳。
**分層設計**(節省 context):
| 層級 | 觸發條件 | 離線? |
|------|---------|-------|
| 預設層(字號/日期/爭點/解釋文) | 永遠回傳 | ✓ |
| 理由書片段 | `reasoning_keyword="關鍵字"` | ✓ |
| 理由書全文(不按字數截斷) | `include_reasoning=True` | ✓ |
| 意見書片段 | `opinions_keyword="關鍵字"` | ✓ |
| 意見書全文 | `include_opinions=True` | ✓ |
| 單份意見書全文 | `opinion_document="許宗力"` | ✓ |
| 從指定位置讀到文末(相容舊參數) | `opinions_offset=15000` | ✓ |
```python
# 預設層(離線,~0ms)
get_interpretation("釋字748")
# 理由書中搜尋關鍵字
get_interpretation("釋字748", reasoning_keyword="婚姻自由")
# 在意見書中定位特定大法官
get_interpretation("釋字758", opinions_keyword="湯德宗")
# 只讀某位大法官的完整意見書
get_interpretation("釋字758", opinion_document="許宗力")
# 需要從指定字元位置開始時,回傳該位置以後的全部文字
get_interpretation("釋字777", opinion_document="吳陳鐶", opinions_offset=15000)
# 新制憲判字
get_interpretation("111年憲判字第1號")
```
建議先用 keyword 片段模式定位,只在需要時才開全文模式。
</details>
<details>
<summary><b><code>search_interpretations</code></b></summary>
搜尋大法官解釋與憲判字。關鍵字同時匹配標題、爭點、理由書全文。
```python
# 全文搜尋(搜爭點 + 理由書)
search_interpretations(keyword="集會自由")
# 篩選年度(新制)
search_interpretations(keyword="言論自由", year=112)
# 列舉最後 10 筆釋字
search_interpretations(number_from=804, number_to=813)
```
</details>
<details>
<summary><b><code>get_citations</code></b></summary>
從理由書中抽取所有引用的釋字/憲判字字號。追溯方向:查詢指定裁判**引用了哪些先前裁判**。
```python
get_citations("釋字748")
# → citations: [釋字第242號, 釋字第362號, 釋字第365號, ...]
# 附上引用前後 80 字片段
get_citations("釋字748", include_context=True)
# 往後追溯:後來哪些釋字/憲判字的主文或理由書引用了這件
get_citations("釋字748", direction="cited_by")
# → cited_by: [釋字第763號, 釋字第791號, ...]
```
並列寫法「釋字第 477 號、第 747 號及第 762 號」會逐一收錄。`cited_by` 比對本地收錄的全部案件(不含意見書與資料包建置後才公布的新案);要找引用某件的法院判決,改用 `search_judgments(keyword="釋字第748號")`。
</details>
<details>
<summary><b><code>search_constitutional_docket</code> / <code>get_constitutional_case_file</code></b></summary>
`get_interpretation` 只有已公布的裁判;這兩個工具查憲法法庭官網公開的案件進度與卷內文書(即時查詢):
| `status` | 內容 |
|---|---|
| `pending`(預設) | 已受理、審理中的案件(受理日期、聲請人(人民以甲乙丙代稱)、案號、主案/併案、案由) |
| `hearing` | 已排定或已舉行言詞辯論、說明會的案件 |
| `amicus` | 目前公開徵求法庭之友意見的案件 |
```python
search_constitutional_docket(keyword="勞動") # 受理中、案由含「勞動」的案件
search_constitutional_docket(status="amicus") # 正在徵求法庭之友意見的案件
get_constitutional_case_file("113年憲判字第8號") # 列出卷內全部公開文件與言詞辯論公告
get_constitutional_case_file("113年憲判字第8號", keyword="人性尊嚴") # 只列出內容含關鍵字的文件並附片段
get_constitutional_case_file(document_id="492306") # 讀單一文件全文(PDF 擷取)
```
`case_id` 可以是憲判字、釋字、受理中案號(如「114年度憲立字第3號」)或 `search_constitutional_docket` 回傳的 id。關鍵字比對的是官方擷取的無標點文字,限憲判字與受理中案件;掃描檔的 OCR 可能有錯字,法庭之友意見書官方只公開前 20 頁。案件清單與卷宗頁在本機快取一天。
</details>
<details>
<summary><b><code>search_agency_interpretations</code> / <code>get_agency_interpretation</code></b></summary>
各機關函釋分散在各自的系統,沒有共用 API。這個工具在查詢當下同時向下列官方系統查詢(共 51 個來源;外交部、退輔會、核安會、國發會,以及 NCC、客委會、僑委會、運動部、關務署新頒釋函、陸委會主站廣告函釋,只在 `agency` 指名時查),合併後依發文日期排序;同一件函釋在多個來源出現時只保留一筆(以機關自己的系統為準):
| 來源 | 內容 |
|---|---|
| 法務部主管法規查詢系統 | 行政函釋、法規諮詢意見 |
| 勞動部勞動法令查詢系統 | 行政函釋、解釋令 |
| 衛生福利法規檢索系統 | 行政函釋 |
| 環境部主管法規查詢系統 | 行政函釋 |
| 工程會政府採購法規解釋函令 | 採購法令解釋令、函 |
| 財政部各稅法令函釋檢索系統 | 稅務法令彙編、新頒令釋 |
| 財政部主管法規查詢系統 | 財政部與關務署、國有財產署、國庫署的核釋令與行政規則 |
| 經濟部主管法規查詢系統 | 經濟部本部及水利署、標準檢驗局、國際貿易署等的解釋令與行政規則 |
| 經濟部商業發展署 商工行政法規 | 公司法、商業登記法、商業會計法、有限合夥法函釋 |
| 經濟部智慧財產局 | 著作權解釋令函;專利審查基準(網頁版全文)、商標審查基準(PDF) |
| 經濟部標準檢驗局 | 解釋函令(商品檢驗、度量衡等) |
| 行政院人事行政總處 | 人事法令解釋(公務員任用、給與、休假等) |
| 行政院消費者保護處 | 消費者保護法函釋與法規諮詢意見(只比對標題與摘要) |
| 監察院陽光法令主題網 | 政治獻金法、公職人員利益衝突迴避法、財產申報法的主管機關函釋(只比對標題) |
| 內政部戶政司、國土管理署、地政司、消防署 | 戶籍與國籍、建築管理與都市計畫、地政(含已停止適用)、消防法令解釋 |
| 交通部法規系統 | 行政解釋(令、函、公告) |
| 中央銀行法規系統 | 行政令函 |
| 考試院主管法規共用系統 | 銓敘部、保訓會、考選部、考試院行政函釋 |
| 各部會主管法規共用系統 | 金管會、教育部、農業部、內政部、文化部、國科會、原民會、海委會、公平會、陸委會、中選會(含行政函釋)、主計總處的行政規則(解釋令、函收在這一類,結果會混有一般行政規則);外交部、退輔會、核安會、國發會只在指名時查 |
| NCC | NCC 法規查詢系統的行政函釋,含個別函復;指名 `agency="NCC"` |
| 客委會、僑委會、運動部 | 行政規則;指名才查,未證實現行/停止兩態完整,不輸出「適用中」 |
| 關務署新頒釋函 | CSRF 表單查詢;只比對標題,日期條件未套用 |
| 陸委會主站廣告函釋 | 只涵蓋「廣告規範」類別中的函與參考意見,標題比對;不代表全部主站函文 |
| 臺北市法規查詢系統 | 臺北市政府解釋令函,以及該系統收錄的中央機關函釋 |
| 新北市法規查詢系統 | 新北市政府與中央機關函釋(依筆數取前 5 類列出,其餘只列筆數) |
| 司法院法學資料檢索系統 | 跨機關行政函釋(司法院、法務部及其他機關) |
| 行政院公報 | 各機關依行政程序法第 159 條第 2 項第 2 款發布的解釋性規定(數位部法規系統目前仍無法完成自動驗證,公報只能補到依法公告的部分) |
```python
# 全部來源
search_agency_interpretations(keyword="個人資料", year_from=113, year_to=114)
# 指定機關(可用逗號分隔多個;簡稱如「金管會」「衛福部」也可以)
search_agency_interpretations(keyword="加班費", agency="勞動部")
search_agency_interpretations(keyword="私募", agency="金管會")
search_agency_interpretations(keyword="時效取得", agency="地政司")
search_agency_interpretations(keyword="考績", agency="銓敘部")
search_agency_interpretations(keyword="專利要件", agency="專利") # 智慧局審查基準只比對章名
search_agency_interpretations(keyword="加班費", agency="人事總處")
search_agency_interpretations(keyword="關係人", agency="陽光法令")
# 用發文字號找
search_agency_interpretations(doc_number="法律字第11403512580號")
# 讀全文(id 取自搜尋結果)
get_agency_interpretation("moj:FE393340")
```
**效力標示**:結果與全文的 `status` 是官網對該筆資料的標示,引用前必看。
| status | 意思 |
|---|---|
| `停止適用` | 官網標示已停止適用或廢止;`status_note` 附停止日期、依據的函或原標示(例如「本筆資料,依據…號函,自…停止適用」) |
| `部分停止適用` | 交通部的標示 |
| `適用中` | 只在官網有「現行/停止適用」兩態欄位的來源出現(勞動部、衛福部、考試院系統、環境部、地政司、各部會主管法規共用系統的行政規則);財政部法令彙編收錄的函釋也標「適用中」(經重新研審保留適用,彙編後才廢止的官網不另標示) |
| 沒有 `status` | 官網沒有標示或沒標示,**不代表仍然有效**。戶政司、消防署、智慧局、行政院公報等官網完全沒有效力欄位;法務部、工程會、司法院法學檢索、臺北市、央行、交通部只標停止的,沒標的不確定 |
官網偶有漏標或重複登錄(例如人事總處同一件函有一筆標停止、一筆沒標),引用前請讀全文、留意 `notes`(編註)與後續函釋。
回傳的 `categories` 列出每個來源/類別的總筆數與是否有下一頁;某個來源暫時連不上時,該類別帶 `error`,其他來源照常回傳。全文省略正本、副本受文者清單。國土管理署與智慧局著作權函釋官方只提供全量清單,第一次查詢會下載到使用者資料目錄(分別約 16 MB、13 MB),之後每週/每天更新一次。每個來源各自分頁(多數每頁 20 筆,部分 10 或 25 筆)。消防署只能查摘要,函文是掃描 PDF 附件。
</details>
<details>
<summary><b><code>search_precedents</code> / <code>get_precedent</code></b></summary>
查司法院法學資料檢索系統裡、裁判書系統(`search_judgments`)查不到的判解:
| 類別 | 內容 |
|---|---|
| 決議 | 最高法院民刑事庭會議決議、最高行政法院聯席會議決議(108 年大法庭制度施行前) |
| 法律問題座談 | 各級法院法律座談會、公證法律問題研討、懲戒法律問題座談 |
| 停止適用判例 | 依法院組織法第 57 條之 1 停止適用、已無裁判全文的判例(僅存判例要旨) |
| 司法解釋 | 大理院解釋、最高法院解釋、司法院院字/院解字解釋 |
| 大法庭 | 最高法院、最高行政法院大法庭裁定 |
| 精選裁判 | 司法院編輯、附「裁判要旨」的各級法院裁判;`reference_value=true` 表示該院選為「具參考價值」或「足資討論」 |
| 具參考價值裁判 | 只查上述 `reference_value=true` 的裁判(須指定才查) |
```python
search_precedents(keyword="借名登記") # 決議、座談、判例、司法解釋、大法庭、精選裁判
search_precedents(keyword="情事變更", category="決議,司法解釋")
search_precedents(keyword="借名登記", category="具參考價值裁判")
get_precedent("D:A,20170214,001") # 最高法院 106 年度第 3 次民事庭會議
```
引用決議、判例前請看 `fields` 裡的編註(例如「不再援用」)。站方每類最多提供前 500 筆,筆數多時請加關鍵字或年度縮小範圍。
</details>
<details>
<summary><b><code>search_administrative_decisions</code> / <code>get_administrative_decision</code></b></summary>
不指定 `source` 時查下列預設來源:
| 來源 | 內容 |
|---|---|
| 行政院訴願審議委員會 | 訴願決定書(PDF 全文;108 年以前收辦的案件是 HTML,id 為院臺訴字號碼,如 `ey:1070210137`) |
| 公平交易委員會 | 處分書及不處分決議書(約 5,800 件,PDF 全文;關鍵字中的空白會被當成詞組的一部分) |
| 勞動部不當勞動行為裁決委員會 | 不當勞動行為裁決(搜尋結果沒有日期,讀全文才有) |
| 公務人員保障暨培訓委員會 | 復審、再申訴決定(不含年金改革案件) |
| 金管會、銀行局、證期局、保險局 | 裁罰案件(四個網站合併;總數為估計) |
以下來源要在 `source` 指定才查:
| `source` | 內容 |
|---|---|
| 「工程會」「採購申訴」 | 採購申訴審議判斷(官方沒有關鍵字檢索,用案號如「訴1130123」或年度查;內文只公開判斷理由) |
| 「監察院」(或「調查報告」「糾正」「彈劾」「糾舉」) | 調查報告、糾正案、彈劾案、糾舉案(官網回應慢,單次可能數十秒) |
| 「律師懲戒」 | 律師懲戒、懲戒覆審決議(需姓名或案號這類精確關鍵字) |
| 機關或縣市名,如「臺北市」「新北市」「國防部」「交通部」「法務部」「金管會」「退輔會」;「訴願」= 全部訴願來源 | 各部會(法務部、外交部、國防部、交通部、金管會、中央銀行、退輔會、國科會、數位部、工程會、原民會、經濟部、農業部、教育部、文化部、環境部、勞動部、內政部、衛福部、中選會、人事總處)與縣市政府(臺北市、新北市、臺中市、高雄市、彰化縣、花蓮縣、金門縣、苗栗縣、臺東縣、嘉義市、嘉義縣、宜蘭縣、新竹縣、基隆市)訴願決定。部分網站只能比對標題、只給頁數,差異見各來源的 `note` |
```python
search_administrative_decisions(keyword="個人資料", source="行政院")
search_administrative_decisions(doc_number="公處字第115060號") # 依字號精確查詢
search_administrative_decisions(keyword="資遣", source="不當勞動行為")
search_administrative_decisions(keyword="洗錢", source="裁罰") # 金管會裁罰案件
search_administrative_decisions(keyword="長照", source="監察院")
search_administrative_decisions(keyword="違規停車", source="臺北市,新北市")
get_administrative_decision("ey:A-115-000633") # 由 PDF 擷取全文
```
官網公開的決定書照原樣提供:多數機關已遮蔽當事人姓名(○○),部分舊案(行政院 108 年以前收辦、法務部約 112 年以前)與原民會的決定書官網未遮蔽,本工具也不另外遮蔽。勞動部採公開語音驗證功能,內政部、衛福部採本機圖形 OCR(需 `[captcha]`);文化部使用 Playwright。內政部/環境部未填年份時依官網查本年度;衛福部亦預設本年度。教育部/農業部限前五頁;基隆、中選會只查標題,人事總處只比對使用者指定的一頁。財政部、桃園目前連線失敗,臺南驗證仍未能穩定完成,未新增。律師懲戒決議的被付懲戒律師姓名是官方公開資訊。`source="醫事懲戒"` 查目前上架的醫事懲戒公告(預設西醫師,可用「牙醫師」等關鍵字前綴改類別),只比對姓名、縣市、證書字號;掃描決議只回傳 PDF。PDF 無法擷取文字時(多為 2008 年以前的公平會舊檔或掃描檔)回傳 `pdf_url` 讓使用者自行開啟。
</details>
<details>
<summary><b><code>get_legislative_history</code></b></summary>
從立法院法律系統取得某一條文每次制定、修正時的條文與**立法理由**(民國 59 年以後的修正才有理由)。適合回答「這條為什麼這樣規定」「當初修法的目的」;`query_regulation(include_history=True)` 回傳的是條文變遷,這裡多了立法理由。
```python
get_legislative_history("勞動基準法", "24") # 73 年制定、105、107 年修正,各版條文與理由
get_legislative_history("民法", "1030-1") # 民法在立法院系統分編收錄,會自動對應到「民法第四編親屬」
get_legislative_history("刑法", "339-4") # 簡稱會轉成正式名稱「中華民國刑法」
```
另附 `latest_amendment_process`:整部法律最近一次修正的一讀、委員會審查、二讀、三讀日期與公報頁次(不一定修到本條)。其中 `gazette_pdf_id` 傳給 `get_legislative_record` 可讀該次會議的公報紀錄,找立法者原意。
</details>
<details>
<summary><b><code>search_legislative_records</code> / <code>get_legislative_record</code></b></summary>
| `kind` | 內容 |
|---|---|
| `bills`(預設) | 立法院議案(法律案草案、修正草案)。`status="pending"` 審查中(預設只看本屆,屆期不連續)、`all` 全部、`passed` 已三讀;每筆含提案人、提案日期、會期、進度與關係文書 PDF(含條文對照表) |
| `gazette` | 立法院公報(院會、委員會、公聽會紀錄,含委員與官員發言),全文檢索並附命中片段 |
| `drafts` | 行政院公報刊登的法規命令訂定、修正草案預告(含陳述意見截止日期) |
```python
search_legislative_records("勞動基準法", kind="bills") # 本屆審查中的勞基法修正草案
search_legislative_records("勞動基準法第五十五條", kind="gazette") # 找立法者原意:法律名稱+條次
search_legislative_records("個人資料", kind="drafts") # 各部會辦法、細則的草案預告
get_legislative_record("bill:202110226160000") # 議案全文與審議進度
search_legislative_records("條例", kind="join", status="pending") # JOIN 法律草案預告;closed 查已結束
# JOIN 的諮詢狀態不代表法律效力。全文含預告內文及選中的一份草案/對照表 PDF;其餘附件列連結。
```
每頁 20 筆(`drafts` 10 筆),全文不按字數截斷。議案的審議進度會變,全文不長期快取。
</details>
<details>
<summary><b><code>search_statistics</code> / <code>get_statistics</code></b></summary>
| 來源(`source`) | 內容 |
|---|---|
| 司法統計 | 司法院司法統計年報:各級法院各類案件收結、終結情形、上訴、發回更審等統計表(`year` 指定民國年,預設最新一年) |
| 月報 | 司法院司法統計月報:指定年度最新一個月的統計表 |
| 法務統計 | 法務部常用統計表:偵查、起訴、定罪、執行、矯正等(每月滾動更新,只快取一天) |
| 犯罪狀況 | 法務部司法官學院《犯罪狀況及其分析》年度報告(篇章 PDF+數據 XLSX) |
```python
search_statistics(keyword="收結", source="司法統計")
search_statistics(keyword="詐欺", source="犯罪狀況")
get_statistics("moj:INF_COMMON_P/807") # 地方檢察署執行裁判確定有罪人數
```
關鍵字只比對表名或報告標題。統計表以「|」分欄的文字回傳。
</details>
<details>
<summary><b><code>get_sentencing_statistics</code></b></summary>
司法院「事實型量刑資訊系統」的刑度統計:符合條件的判決數,以及各刑種的平均、最高、最低刑度與分布。涵蓋殺人、強盜搶奪、傷害、不能安全駕駛、肇事逃逸、詐欺、竊盜、毒品、槍砲、妨害性自主 10 類案件。這是過去判決的統計,不是量刑基準。
```python
get_sentencing_statistics() # 列出罪名與法院
get_sentencing_statistics(crime="竊盜") # 統計,並回傳可選的法條(law_options)與量刑因子(factor_options)
get_sentencing_statistics(crime="竊盜", law="第320條第1項", court="臺北地院", factors="累犯=是")
```
只用公開頁面呈現的彙總統計;官網只開放給院內使用者的個案清單與判決明細不呼叫。
</details>
<details>
<summary><b><code>search_legal_literature</code> / <code>get_legal_literature</code></b></summary>
只用官方與開放取用來源,不含付費資料庫:
| 來源(`source`) | 內容 |
|---|---|
| 司法研究年報 | 司法院專題研究報告(含司法研究年報),全文按章分檔 |
| 期刊 | 國家圖書館臺灣期刊論文索引:各法學期刊論文的書目與摘要;作者授權者有全文 |
| GRB | 政府研究資訊系統:國科會與各部會補助的研究計畫摘要(報告全文需在官網下載) |
| 開放期刊 | 中研院法學期刊、政大法學評論、臺大法學論叢(全文取自官網;臺大限可定位卷期且標為全文/定稿的 PDF,摘要不當全文) |
```python
search_legal_literature("量刑", source="司法研究年報")
search_legal_literature("勞動派遣", source="期刊", year_from=105)
get_legal_literature("ncl:A15001353") # 書目、摘要;有授權時附全文
```
引用時請附作者、篇名、刊名卷期與年份。國家圖書館授權的全文只供個人查閱,本工具不寫入快取,請勿轉存或散布。全文不按字數截斷。
</details>
<details>
<summary><b><code>search_other_regulations</code> / <code>get_other_regulation</code></b></summary>
全國法規資料庫法律命令清單以外、`query_regulation` 查不到的規範:
| 類別 | 來源 |
|---|---|
| 地方自治法規 | 臺北市、新北市、桃園市、臺中市、臺南市、高雄市、基隆市、新竹縣市、苗栗縣、彰化縣、南投縣、嘉義縣市、屏東縣、宜蘭縣、花蓮縣、臺東縣、澎湖縣、金門縣、連江縣、雲林縣(只收現行法規;雲林遇到驗證時使用瀏覽器) |
| 條約及協定 | 全國法規資料庫條約(只比對名稱)、外交部條約協定資料庫(部分舊約是掃描檔,只有 PDF 連結)、財政部所得稅協定 |
| 交易所規章 | 臺灣證券交易所、證券櫃檯買賣中心、臺灣期貨交易所(櫃買、期交所規章取自證基會法規系統,僅供查閱、不得轉載) |
```python
search_other_regulations("違章建築", source="臺北市")
search_other_regulations("日本 所得稅", source="條約") # 條約可用「國家 主題」
search_other_regulations("營業細則", source="證交所")
get_other_regulation("taichung:GL001385", article_no="3") # 臺中市殯葬管理自治條例第 3 條
```
不填 `source` 會同時查全部 28 個來源,建議指定。多數來源把整串關鍵字當成一個詞,請一次給一個詞。分條的規範依 `article_no` 回傳 `articles`,寫法同 `query_regulation`(單條、區間、多條,一次最多 50 條),不給條號時只回傳條號範圍;要點、條約等未分條的文件回傳 `full_text`。
</details>
---
## 範例問法
```
「查民法第 184 條」
「搜尋跟預售屋遲延交屋有關的最高法院判決」
「釋字 748 的理由書重點是什麼」
「哪些大法官解釋討論過集會自由」
「釋字 748 引用了哪些先前的釋字」
「查 111 年憲判字第 1 號」
「勞動部對加班費有哪些函釋」
「財政部對股利的函釋,哪些已經停止適用」
「公務員未休假加班費,人事總處怎麼解釋」
「工程會對不發還押標金有什麼解釋」
「最高法院有沒有關於借名登記的決議」
「查院解字第 3829 號」
「行政院有哪些個資相關的訴願決定」
「勞基法第 24 條當初為什麼這樣修」
「這件最高法院判決的前審是哪幾件?有沒有發回?」
「勞基法第 24 條的英文版」
「列出 115 年 7 月以後修正公布的勞動部主管法規」
「勞基法現在有哪些審查中的修正草案」
「死刑案的法庭之友意見書有哪些提到人性尊嚴」
「憲法法庭現在受理了哪些勞動相關的案件」
「臺北地院竊盜累犯通常判多久」
「司法研究年報有沒有關於量刑的研究」
「臺北市有關違章建築的自治法規」
「金管會最近對洗錢防制缺失的裁罰」
```
---
## 註冊到你的 Claude client
依你使用的 Claude client 選對應的段落。
### Claude Code (CLI)
Claude Code 會自動載入專案根目錄的 `.mcp.json`。這個 repo 已經內建一份:
```json
{
"mcpServers": {
"taiwan-legal-db": {
"command": ".venv/bin/python",
"args": ["-m", "mcp_server.server"]
}
}
}
```
**零設定**:`cd` 進 repo 之後跑 `claude` 就好。MCP server 列表會看到 `taiwan-legal-db`,而且此資料夾不會有其他多餘的 server。
**跟隊友分享**:`.mcp.json` 已經 commit 進 repo。任何人 clone 下來跟著 Quick Start 跑完,就會自動完成 MCP 註冊。
**加到其他專案**(你想在另一個資料夾用這個 MCP):用 `claude mcp add` 以 project scope 加入:
```bash
cd /path/to/your/other/project
claude mcp add taiwan-legal-db --scope project -- \
/absolute/path/to/mcp-taiwan-legal-db/.venv/bin/python \
-m mcp_server.server
```
這會在你另一個專案的根目錄寫出一份 `.mcp.json`。想在每個專案都能用,把 `--scope project` 改成 `--scope user`。
### Claude Desktop (macOS / Windows)
Claude Desktop 使用一個全域設定檔:
- **macOS**:`~/Library/Application Support/Claude/claude_desktop_config.json`
- **Windows**:`%APPDATA%\Claude\claude_desktop_config.json`
- **Windows (Microsoft Store / WinGet / MSIX 安裝)**:`C:\Users\<YourName>\AppData\Local\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude\claude_desktop_config.json`
**最快開啟方式**:在 Claude Desktop 點選單列(不是視窗)→ **Settings** → **Developer** → **Edit Config**。檔案若不存在 Claude Desktop 會自動建立。
在 `mcpServers` 下加入以下內容(跟已有內容合併):
```json
{
"mcpServers": {
"taiwan-legal-db": {
"command": "/absolute/path/to/mcp-taiwan-legal-db/.venv/bin/python",
"args": ["-m", "mcp_server.server"],
"cwd": "/absolute/path/to/mcp-taiwan-legal-db"
}
}
}
```
把 `/absolute/path/to/mcp-taiwan-legal-db` 換成你的實際 clone 路徑。`cwd` 欄位必填,Python 才找得到 `mcp_server` 套件。
**存檔後,完全關閉並重新開啟 Claude Desktop**(不是只關視窗 — macOS 用 ⌘Q、Windows 右鍵工具列圖示 → Quit)。設定檔只會在重啟時重新載入。
### Claude Cowork (Pro 以上方案)
Claude Cowork 跑在 Claude Desktop 裡面,**共用同一個 `claude_desktop_config.json`** — 沒有另外的 Cowork 設定檔。任何你在 Claude Desktop 註冊的 MCP server 會自動透過 Claude Desktop SDK 橋接進 Cowork 的沙盒 VM。
**設定步驟**:
1. 照上面 **Claude Desktop** 段落把 `taiwan-legal-db` 加進 `claude_desktop_config.json`
2. **完全關閉並重新開啟 Claude Desktop** — 同時也會重啟 Cowork
3. 開一個 Cowork session,`taiwan-legal-db` 的工具就可以用了
**注意**:Cowork 目前在 Claude Pro / Max / Team / Enterprise 方案都可以用,且只能存取你明確授權的資料夾。MCP server 本身跑在你的 host 上(不是 Cowork VM 裡面),透過 Desktop SDK bridge 溝通,所以不管你授權哪個資料夾給 Cowork,它都存取得到內建的資料檔。
### 其他 MCP 相容 client
任何符合 [Model Context Protocol 規範](https://modelcontextprotocol.io/) 的 MCP client 都可以使用這個 server。啟動指令永遠是:
```
.venv/bin/python -m mcp_server.server
```
⋯⋯加上 `cwd` 設定為 repo 根目錄(Python 才找得到 `mcp_server` 套件)。設定位置請參考你使用的 client 的文件,找 `mcpServers` JSON 區塊寫在哪裡。
---
## 在這個 server 上面建 A2A agent
想用 A2A agent 驅動這些工具?請見 [`examples/agno-bindu/`](examples/agno-bindu/) — 一個社群貢獻的 A2A agent 範例。
---
## 疑難排解
**`ModuleNotFoundError: No module named 'mcp_server'`**
→ 你沒有在 venv 裡面跑 `pip install -e .`。回到 Quick Start 步驟 2。
**`FileNotFoundError: data/pcode_all.json`**
→ 內建的 `mcp_server/data/pcode_all.json` 不見或被刪了。用 `git checkout mcp_server/data/pcode_all.json` 還原,或觸發重新下載:
```bash
.venv/bin/python -m mcp_server.updater
```
**MCP client 回報「伺服器啟動失敗」**
→ 直接跑 Quick Start 步驟 3 的驗證指令。若失敗,代表 import chain 壞了 — 看 traceback。若通過,問題在 MCP client 的啟動設定(路徑或 cwd 錯了)。
**「官網瀏覽器連線或啟動失敗」**
→ 需要瀏覽器的來源第一次使用時會自動下載 Chromium;無法連外下載的環境請手動安裝:`uvx --from mcp-taiwan-legal-db playwright install chromium`(開發環境:`.venv/bin/playwright install chromium`)。
**「官網瀏覽器查詢逾時,可能仍停在驗證頁」「官網驗證尚未完成」**
→ 該官網的檢查這次沒有通過,稍後再試。這不代表查無資料。
**「此公開來源需要本機 OCR」**
→ 內政部、衛福部訴願需要 `[captcha]` 額外依賴:`pip install "mcp-taiwan-legal-db[captcha]"`。Claude Code plugin 已內含。
**`ssl.SSLCertVerificationError: ... Missing Subject Key Identifier`**
→ 這是 OpenSSL 3.6+ 對 TWCA Global Root CA 的廣泛 rejection,**不是 certifi 舊的問題**。本 repo 透過 [`truststore`](https://github.com/sethmlarson/truststore) 套件讓 Python 改用作業系統原生的 trust store(macOS Security framework、Windows CryptoAPI、Linux 系統 CA),**所有路徑都保留完整 SSL 驗證(`verify=True`)**,不使用 `verify=False`。這在 macOS、Windows 以及 OpenSSL <3.6 的 Linux 都能正常工作。OpenSSL 3.6+ 的 Linux 環境(Fedora 40+、未來的 Ubuntu LTS)目前可能仍有問題,歡迎 issue 回報。
---
## WAF 處理機制
司法院 `judgment.judicial.gov.tw` 部署了 F5 BIG-IP ASM WAF,純 HTTP 請求可能被擋(回固定 245 bytes 的 "Request Rejected")。
本專案採混合策略:
- 預設用 httpx 直接請求(~0.25s)
- 偵測到被擋(response 含 `Request Rejected` 或 JS challenge marker `bobcmn` / `TSPD`)自動 fallback 到 Playwright 跑一次 JS challenge
- 取得 TSPD cookies 後持久化到使用者資料目錄的 `.judicial_cookies.json`(0600 權限)
- 後續查詢繼續用 httpx 帶 cookies 執行
`cons.judicial.gov.tw`(釋字)跟 `law.moj.gov.tw`(法規)沒這個問題,不經過 WAF 流程。
---
## 資料來源與統計
查詢時連網的都是台灣政府機關與公共機構的**公開**資料庫,伺服器本身不建資料庫,只在使用者查詢的當下向官方網站取資料:
| 來源 | 網域 | 用途 |
|------|------|------|
| 司法院裁判書系統 | judgment.judicial.gov.tw | 裁判書搜尋、全文與歷審清單(`FJUD/Default_AD.aspx`、`data.aspx`、`controls/GetJudHistory.ashx`) |
| 全國法規資料庫 | law.moj.gov.tw | 法規條文與修法沿革(`LawClass/*`)、官方英譯與法規施行日等資料(`api/*`)、條約協定 |
| 司法院憲法法庭 | cons.judicial.gov.tw | 資料包建置後才公布的憲判字(其餘釋字/憲判字為離線資料)、受理案件與卷內文書 |
| 司法院法學資料檢索系統 | legal.judicial.gov.tw | 決議、法律問題座談、停止適用判例、司法解釋、大法庭、精選裁判、跨機關行政函釋 |
| 司法院 司法統計 | www.judicial.gov.tw | 司法統計年報、月報 |
| 司法院事實型量刑資訊系統 | intellisen.judicial.gov.tw | 量刑統計(公開彙總) |
| 司法院電子出版品 | jirs.judicial.gov.tw | 專題研究報告、司法研究年報 |
| 法務部主管法規查詢系統 | mojlaw.moj.gov.tw | 行政函釋、法規諮詢意見 |
| 勞動部勞動法令查詢系統 | laws.mol.gov.tw | 行政函釋、解釋令 |
| 衛生福利法規檢索系統 | mohwlaw.mohw.gov.tw | 行政函釋 |
| 工程會政府採購法規解釋函令 | planpe.pcc.gov.tw | 採購法令解釋令、函 |
| 財政部各稅法令函釋檢索系統 | ttc.mof.gov.tw | 稅務法令彙編、新頒令釋 |
| 經濟部商業發展署 | gcis.nat.gov.tw | 商工行政法規函釋 |
| 財政部主管法規查詢系統 | law-out.mof.gov.tw | 財政部、關務署、國有財產署、國庫署核釋令與行政規則 |
| 經濟部主管法規查詢系統 | law.moea.gov.tw | 經濟部本部與所屬機關解釋令、行政規則 |
| 經濟部標準檢驗局 | www.bsmi.gov.tw | 解釋函令 |
| 行政院人事行政總處 | law.dgpa.gov.tw | 人事法令解釋 |
| 行政院消費者保護處 | www.ey.gov.tw | 消保法函釋 |
| 監察院陽光法令主題網 | sunshine.cy.gov.tw | 政治獻金法、利益衝突迴避法、財產申報法函釋 |
| 經濟部智慧財產局 | www.tipo.gov.tw | 著作權解釋令函(開放資料)、專利與商標審查基準 |
| 內政部戶政司 | www.ris.gov.tw | 戶政法令解釋 |
| 內政部國土管理署 | www.nlma.gov.tw | 解釋函彙編 |
| 內政部地政司 | www.land.moi.gov.tw | 地政法令解釋 |
| 內政部消防署 | law.nfa.gov.tw | 消防法令解釋 |
| 環境部主管法規查詢系統 | oaout.moenv.gov.tw | 行政函釋 |
| 考試院主管法規共用系統 | law.exam.gov.tw | 銓敘部、保訓會、考選部、考試院函釋 |
| 各部會主管法規共用系統 | law.fsc.gov.tw、edu.law.moe.gov.tw、law.moa.gov.tw、glrs.moi.gov.tw、law.moc.gov.tw、law.nstc.gov.tw、law.cip.gov.tw、law.oac.gov.tw、law.ftc.gov.tw、law.mac.gov.tw、law.cec.gov.tw、law.dgbas.gov.tw、law.mofa.gov.tw、law.vac.gov.tw、erss.nusc.gov.tw、theme.ndc.gov.tw、law.hakka.gov.tw、law.ocac.gov.tw、law.sports.gov.tw | 金管會、教育部、農業部、內政部、文化部、國科會、原民會、海委會、公平會、陸委會、中選會、主計總處、外交部、退輔會、核安會、國發會、客委會、僑委會、運動部的行政規則(解釋令、函) |
| NCC 法規查詢系統 | ncclaw.ncc.gov.tw | 行政函釋、個別函復 |
| 財政部關務署 | web.customs.gov.tw | 新頒釋函 |
| 大陸委員會 | www.mac.gov.tw | 大陸廣告規範專區的函與參考意見 |
| 交通部法規系統 | motclaw.motc.gov.tw | 行政解釋 |
| 中央銀行法規系統 | www.law.cbc.gov.tw | 行政令函、訴願決定 |
| 臺北市法規查詢系統 | laws.gov.taipei | 函釋、訴願決定、地方法規 |
| 新北市法規查詢系統 | web.law.ntpc.gov.tw | 函釋、訴願決定、地方法規 |
| 行政院公報資訊網 | gazette.nat.gov.tw | 各機關解釋性規定、法規命令草案預告 |
| 行政院訴願審議委員會 | appeal.ey.gov.tw | 訴願決定書 |
| 公平交易委員會 | www.ftc.gov.tw | 處分書及不處分決議書 |
| 行政院公共工程委員會 | web.pcc.gov.tw、www.pcc.gov.tw | 採購申訴審議判斷、訴願決定 |
| 勞動部不當勞動行為裁決委員會 | uflb.mol.gov.tw | 裁決決定 |
| 公務人員保障暨培訓委員會 | web13.csptc.gov.tw | 復審、再申訴決定 |
| 金管會、銀行局、證期局、保險局 | www.fsc.gov.tw、www.banking.gov.tw、www.sfb.gov.tw、www.ib.gov.tw | 裁罰案件、金管會訴願決定 |
| 監察院 | www.cy.gov.tw | 調查報告、糾正案、彈劾案、糾舉案 |
| 法務部律師查詢系統 | lawyerbc.moj.gov.tw | 律師懲戒決議 |
| 衛福部醫事管理系統 | ma.mohw.gov.tw | 醫事懲戒公告 |
| 各部會訴願決定 | www.moj.gov.tw、www.mofa.gov.tw、law.mnd.gov.tw、nseweb.motc.gov.tw、www.vac.gov.tw、www.nstc.gov.tw、moda.gov.tw、law.cip.gov.tw、eportal2.moea.gov.tw、appeal.moa.gov.tw、appeal.moe.gov.tw、aamis-web.moenv.gov.tw、appealweb.mol.gov.tw、appeal.moc.gov.tw、themedata.culture.tw、aarc.moi.gov.tw、service.mohw.gov.tw、web.cec.gov.tw、www.dgpa.gov.tw | 法務部、外交部、國防部、交通部、退輔會、國科會、數位部、原民會、經濟部、農業部、教育部、環境部、勞動部、文化部、內政部、衛福部、中選會、人事總處訴願決定 |
| 縣市政府訴願決定 | appeal.taichung.gov.tw、web.law.ntpc.gov.tw、law.kcg.gov.tw、www.chcg.gov.tw、glrs.hl.gov.tw、law.kinmen.gov.tw、www.miaoli.gov.tw、www.taitung.gov.tw、general.chiayi.gov.tw、www.cyhg.gov.tw、www.e-land.gov.tw、gdd.hsinchu.gov.tw、www.klcg.gov.tw | 臺中市、新北市、高雄市、彰化縣、花蓮縣、金門縣、苗栗縣、臺東縣、嘉義市、嘉義縣、宜蘭縣、新竹縣、基隆市訴願決定(臺北市見上) |
| 立法院法律系統 | lis.ly.gov.tw | 立法沿革、立法理由、立法歷程與公報頁 |
| 立法院議事暨公報資訊網 | ppg.ly.gov.tw | 議案、立法院公報 |
| 公共政策網路參與平臺 | join.gov.tw | 法律草案預告 |
| 法務部 法務統計資訊網 | www.rjsd.moj.gov.tw | 常用統計表 |
| 法務部司法官學院 | www.cprc.moj.gov.tw | 《犯罪狀況及其分析》 |
| 國家圖書館 臺灣期刊論文索引 | tpl.ncl.edu.tw | 期刊論文書目、摘要、授權全文 |
| 政府研究資訊系統 GRB | www.grb.gov.tw、grbdef.stpi.niar.org.tw | 研究計畫書目與摘要 |
| 中研院法律學研究所 | www.iias.sinica.edu.tw | 中研院法學期刊全文 |
| 政治大學法學院 | review.law.nccu.edu.tw | 政大法學評論全文 |
| 臺灣大學法律學院 | www.law.ntu.edu.tw | 臺大法學論叢全文 |
| 縣市法規查詢系統 | law.tycg.gov.tw、law.taichung.gov.tw、outlaw.kcg.gov.tw、law01.tainan.gov.tw、exlaw.klcg.gov.tw、hclaw.hsinchu.gov.tw、law.hccg.gov.tw、law.miaoli.gov.tw、lawsearch.chcg.gov.tw、glrs.nantou.gov.tw、law.cyhg.gov.tw、law.chiayi.gov.tw、ptlaw.pthg.gov.tw、glrslaw.e-land.gov.tw、glrs.hl.gov.tw、law.taitung.gov.tw、law.penghu.gov.tw、law.kinmen.gov.tw、law.matsu.gov.tw、law.yunlin.gov.tw | 自治條例、自治規則等地方法規(臺北市、新北市見上) |
| 外交部條約協定資料庫 | no06.mofa.gov.tw | 條約協定 |
| 財政部 | www.mof.gov.tw | 所得稅協定 |
| 臺灣證券交易所 法規分享知識庫 | twse-regulation.twse.com.tw | 證交所規章 |
| 證券暨期貨法令判解查詢系統 | www.selaw.com.tw | 櫃買中心、期交所規章 |
各來源的網址、查詢方式、限制與目前未收錄的來源見 [SOURCES.md](SOURCES.md)。
`get_judgment` 接受使用者傳入的 URL,`mcp_server/config.py:ALLOWED_DOMAINS` 以硬編碼 allow-list 限制只能是裁判書與法規兩個網域;其他工具只連上表固定網址,不接受任意 URL。下列網站的 robots.txt 不允許爬蟲(或排除特定路徑),本工具對它們只做使用者觸發的單次查詢,不批次抓取:司法院法學資料檢索系統(legal.judicial.gov.tw)、衛福部法規檢索系統(mohwlaw.mohw.gov.tw)、行政院訴願網站(appeal.ey.gov.tw)、立法院議事暨公報資訊網(ppg.ly.gov.tw)、內政部地政司(www.land.moi.gov.tw)、臺北市法規查詢系統的訴願決定全文路徑(laws.gov.taipei)、全國法規資料庫的條約查詢(law.moj.gov.tw)、財政部的 `/download/` 檔案(www.mof.gov.tw)、行政院人事行政總處網站(www.dgpa.gov.tw)。證券暨期貨法令判解查詢系統(www.selaw.com.tw)載明非經授權不得轉載,櫃買中心、期交所規章只供查閱,結果都附提醒。函釋、決議、訴願決定、處分書等皆屬公文,依著作權法第 9 條不受著作權保護;期刊論文、研究報告與交易所規章則不在此列,請依各來源的使用規定引用。國家圖書館授權的全文只供個人查閱,本工具一律不寫入快取。
**個資與存取限制**:本工具只在使用者查詢時即時轉取官網公開的內容,不另外遮蔽、也不建資料庫;部分訴願決定(行政院 108 年以前收辦、法務部約 112 年以前、原民會)官網未遮蔽當事人姓名,結果照原樣呈現。本工具只查公開、免登入資料;可在新的瀏覽器工作階段中處理 JavaScript/Cloudflare 檢查及公開查詢驗證碼。每次只完成使用者指定的查詢與全文讀取,驗證失敗會回報錯誤,不當成查無資料;不登入、不使用員工或院內權限、不批次抓取。司法院量刑資訊系統只用公開頁面的彙總統計,官網只開放給院內使用者的個案判決清單一律不呼叫。完整說明見[免責聲明](#免責聲明)。
**裁判書年份涵蓋範圍**:本工具即時代理司法院系統,沒有自己的資料庫,有效年份 = 司法院收錄範圍。實測(以「竊盜」為關鍵字計數)民國 89 年(2000)起每年數萬筆,81–88 年(1992–1999)合計約 2,000 筆,80 年(1991)以前為零。司法院公告其開放資料檔「收錄範圍與裁判書查詢系統相同」,因此沒有更早的公開來源。查詢 2000 年以前的裁判請預期查無或零星。
憲法法庭資料(釋字/憲判字)**不在查詢時連網取得** — 它是離線打包的(`old_cases.json`/`new_cases.json`/`opinions.zip`),來源為 `cons.judicial.gov.tw`,由維護腳本離線重建。詳見 [SOURCES.md](SOURCES.md)。
### 憲法法庭資料統計
| 資料集 | 筆數 | 含理由書 | 含意見書 | 檔案大小 |
|--------|------|---------|---------|---------|
| 舊制釋字(old_cases.json) | 813 | 734 | 472 | 7.4 MB |
| 新制憲判字(new_cases.json) | 58 | 58 | 57 | 2.0 MB |
| 大法官意見書全文(opinions.zip) | 1,541 份 | — | 1,541 份有全文 | 10.8 MB |
釋字 401 號以後與憲判字的大法官意見書,官網只以 PDF 附件公開,已擷取文字打包進 `opinions.zip`,查詢回傳的 `opinion_documents` 會列出每份意見書的標題、官網 PDF 連結與字數。其中 22 份 PDF 的字型無法解碼或頁面為圖片(主要是釋字 735–753 號的部分意見書),改以頁面影像逐字轉錄(回傳時標註 `transcribed`,引用前請核對官網 PDF)。意見書以憲法法庭網站公布的 PDF 為準;全國法規資料庫收錄的早期意見書是事後編修的版本(用字統一、修正筆誤、當事人姓名去識別化),兩者文字可能略有出入。重建方式見 `scripts/build_opinions.py`;官網公布新的憲判字後,用 `scripts/build_new_cases.py` 只補新案(含意見書)。
函釋、判解、決定書、文獻、統計、立法紀錄與憲法法庭文件回傳完整全文,不按字數截斷;法規與其他規範則依 `article_no` 只回傳指定的條文(一次最多 50 條),不回傳整部法規。官網搜尋分頁、關鍵字片段模式、附件數量與檔案大小限制仍在;沒有文字層的掃描檔提供原始連結。
## 快取
| 資料類型 | TTL | 位置 |
|---|---|---|
| 判決全文 | 30 天 | 使用者資料目錄的 `legal_mcp.db`(SQLite,首次啟動時建立) |
| 搜尋結果 | 24 小時 | 同上 |
| 法規條文 | 7 天 | 同上 |
| pcode metadata | 30 天 | 同上 |
| 歷審清單 | 24 小時(與判決全文分開) | 同上 |
| 憲法法庭案件清單、卷宗頁 | 1 天 | 同上 |
| 單篇全文:決定書、立法理由、憲法法庭卷內文書、公報與草案預告、統計表、研究文獻 | 30 天 | 同上 |
| 函釋、判解全文(可能事後停止適用) | 7 天 | 同上 |
| 地方法規、條約、交易所規章 | 7 天 | 同上 |
| 法務統計常用統計表 | 1 天 | 同上 |
| 議案全文、國家圖書館授權全文 | 不快取 | — |
| 消保處、監察院陽光法令、標準檢驗局的函釋清單 | 1 天 | 記憶體(伺服器重啟即重抓) |
| 官方英譯、國土管理署解釋函、智慧局著作權函釋 | 每週更新(智慧局每天) | 使用者資料目錄的 `en_laws.zip`、`en_orders.zip`、`nlma_interpcomp.json`、`tipo_copyright.xml` |
| 釋字/憲判字 | 本地資料(不過期) | `mcp_server/data/old_cases.json`、`new_cases.json`、`opinions.zip` |
使用者資料目錄:Windows 為 `%LOCALAPPDATA%\mcp-taiwan-legal-db`,macOS / Linux 為 `~/.cache/mcp-taiwan-legal-db`(有設 `XDG_CACHE_HOME` 則在其下),可用環境變數 `MCP_TAIWAN_LEGAL_DB_HOME` 改位置。全部清除:刪掉該目錄下的 `legal_mcp.db`。
## pcode_all.json 自動更新
伺服器啟動時會檢查 `pcode_all.json` 的時間戳。如果最後一次更新在最近的週六之前,會在背景觸發從 `law.moj.gov.tw` 官方 API 重新抓取,結果(連同 `law_histories.json` 與 `law_meta.json`)寫進使用者資料目錄,不動套件內建檔;讀取時內建檔與使用者副本取較新者。失敗會記為 warning,不會阻擋啟動。
手動更新:
```bash
.venv/bin/python -m mcp_server.updater
```
---
## 專案結構
```
mcp-taiwan-legal-db/
├── .gitignore
├── .mcp.json # 資料夾內 Claude Code session 自動註冊用
├── LICENSE # MIT(程式碼)
├── DATA_LICENSE # CC0 1.0(憲法法庭資料)
├── SOURCES.md # 資料來源說明
├── CITATION.cff # 學術引用格式
├── README.md # 本檔(繁體中文)
├── README.en.md # English version
├── pyproject.toml # 套件 metadata 與相依
└── mcp_server/
├── __init__.py
├── server.py # MCPServer 入口 — 定義 26 個 @mcp.tool() function
├── config.py # URL、法院代碼、快取 TTL、allowed domains
├── updater.py # 獨立的 pcode_all.json 更新 script
├── healthcheck.py # 官方來源即時健康檢查(python -m mcp_server.healthcheck)
├── cache/db.py # SQLite 快取層
├── data/
│ ├── pcode_all.json # 11,700+ 部法規(內建,~780 KB)
│ ├── law_histories.json # 修法沿革(內建,~9.6 MB)
│ ├── law_meta.json # 最新公布日、施行日註記、主管機關分類(內建,~1.2 MB)
│ ├── old_cases.json # 813 筆舊制釋字全文(內建,~7.4 MB)
│ ├── new_cases.json # 58 筆新制憲判字全文(內建,~2.0 MB)
│ └── opinions.zip # 大法官意見書全文,由官網 PDF 擷取(內建,~10.8 MB)
├── models/ # Judgment / Regulation dataclass
├── parsers/ # 判決與法規頁面的 HTML parser
├── tools/
│ ├── judicial_search.py # search_judgments
│ ├── judicial_doc.py # get_judgment(含歷審清單)
│ ├── regulations.py # query_regulation, get_pcode, search_regulations
│ ├── constitutional_court.py # get_interpretation, search_interpretations, get_citations
│ ├── constitutional_docket.py # search_constitutional_docket, get_constitutional_case_file
│ ├── agency_interpretations.py # search_agency_interpretations, get_agency_interpretation
│ ├── ip_guidelines.py # 智慧局專利、商標審查基準
│ ├── fint.py # search_precedents, get_precedent(司法院法學資料檢索系統)
│ ├── admin_decisions.py # search_administrative_decisions, get_administrative_decision
│ ├── quasi_judicial.py # 準司法機關決定(採購申訴、裁決、保訓會、金管會裁罰、監察院、律師懲戒、醫事懲戒)
│ ├── appeals.py # 各部會與縣市政府訴願決定
│ ├── legislative.py # get_legislative_history(立法院法律系統)
│ ├── legislative_records.py # search_legislative_records, get_legislative_record
│ ├── statistics.py # search_statistics, get_statistics
│ ├── sentencing.py # get_sentencing_statistics
│ ├── literature.py # search_legal_literature, get_legal_literature
│ ├── other_regulations.py # search_other_regulations, get_other_regulation
│ ├── tls.py # 未送中繼憑證網站用的 TWCA 中繼憑證
│ ├── pdf_text.py # PDF 文字擷取(意見書、決定書、處分書、卷內文書共用)
│ ├── waf_bypass.py # 司法院 F5 WAF:以 Playwright 取得 cookie,缺 Chromium 時自動安裝
│ ├── public_browser.py # 需要瀏覽器的官網(JavaScript/Cloudflare 檢查、單頁應用程式)
│ ├── public_captcha.py # 圖形驗證碼的本機 OCR([captcha] 額外依賴)
│ └── medical_discipline.py # 衛福部醫事懲戒公告
└── tests/ # pytest 測試
```
## 執行測試
```bash
.venv/bin/pip install -e ".[dev]"
.venv/bin/pytest mcp_server/tests/ -v
```
單元測試以 MockTransport 模擬官網,看不出官網改版。發版前、或有人回報某個來源查不到東西時,跑即時健康檢查:每個來源實際查一次、再取第一筆全文,並用幾件已知停止適用的函釋確認效力標示還讀得到。
```bash
.venv/bin/python -m mcp_server.healthcheck # 全部(約 150 項,幾分鐘)
.venv/bin/python -m mcp_server.healthcheck interpretations mof mol # 只查指定工具與來源
.venv/bin/python -m mcp_server.healthcheck status # 只查效力標示
```
結果每列標 `OK`、`THIN`(取回的文字偏短)、`EMPTY`(查無結果)或 `FAIL`;有 `EMPTY` 或 `FAIL` 時 exit code 為 1。
---
## 關於
由 [LawChat](https://lawchat.com.tw) 維護 — 一個台灣法律 AI 平台。
- 官網:[lawchat.com.tw](https://lawchat.com.tw)
- 聯絡:opensource@lawchat.com.tw
- 回報問題:[GitHub Issues](https://github.com/lawchat-oss/mcp-taiwan-legal-db/issues)
Best-effort 維護 — 我們會盡量跟上 upstream(司法院、法務部)頁面變動,但不保證 issue 的回覆時效。
## 授權
**程式碼**:[MIT License](LICENSE)
**憲法法庭資料**:[CC0 1.0](DATA_LICENSE)(公有領域貢獻)— 任何人皆可自由使用、修改及散布,無需取得授權或署名。學術引用格式請參考 [CITATION.cff](CITATION.cff)。
裁判書與法規資料來源:[司法院](https://judgment.judicial.gov.tw)、[法務部](https://law.moj.gov.tw)(政府公開資料)。
憲法法庭資料來源:[司法院憲法法庭](https://cons.judicial.gov.tw)(依中華民國著作權法第 9 條屬公有領域)。詳見 [SOURCES.md](SOURCES.md)。
## 免責聲明
**非官方工具。** 本工具與司法院、法務部或任何政府機關沒有隸屬關係,也未經其授權或背書。
**本工具是爬蟲。** 使用者每查詢一次,本工具就在使用者自己的電腦上向官網送出請求,擷取網頁、PDF 或網站前端使用的公開 API。部分網站的 robots.txt 不允許爬蟲;部分網站設有 JavaScript/Cloudflare 檢查或圖形驗證碼,本工具會在本機以瀏覽器(Playwright)或 OCR 完成,或使用網站提供的語音驗證功能;也有網站的驗證碼只在網頁前端檢查,本工具直接送出查詢表單。這些都只用於使用者觸發的單次查詢:不登入、不使用員工或特定使用者的權限、不批次下載文件全文。少數網站沒有搜尋功能,查詢時會下載它公開的清單,在本機比對並短期快取。除了伺服器啟動時預先連線司法院裁判書系統、每週更新一次全國法規資料庫開放資料的法規代碼表,本工具不在背景抓取資料,也不建立資料庫。
**使用者的責任。** 請求由使用者的電腦與網路發出。使用者須自行確認並遵守各網站的使用規定與相關法令(包括著作權法、個人資料保護法),並自行承擔使用的結果。請勿修改或使用本工具大量、高頻率或自動化地抓取資料,也不要把查詢結果建成資料庫或轉載;標示不得轉載的來源(如證基會法規系統)與國家圖書館授權全文只供個人查閱。
**個人資料。** 部分官方文件(如訴願決定、懲戒決議)在官網公開當事人姓名,本工具照原樣回傳,不另外遮蔽。使用者處理其中的個人資料時,須符合個人資料保護法的蒐集目的與合理利用範圍。
**資料正確性,不構成法律意見。** 查詢結果以官網當下的內容為準,可能因快取(見上方 TTL 表)、官網改版、擷取錯誤或掃描檔辨識錯誤而不完整或不正確。本工具與其結果不構成法律意見;正式引用或作為依據前,請向官方來源核對。
**不提供擔保。** 本工具依 MIT 授權「按現狀」提供,不提供任何明示或默示的擔保。在法律許可的範圍內,維護者對使用本工具或其結果所生的損害不負賠償責任,包括資料錯誤、官網封鎖使用者的連線,以及因使用者的使用方式所生的爭議。
**在本工具之上建構的服務。** 本專案的設計是在每位使用者自己的電腦上執行。若把它架設成集中式服務,或據以建構 agent、應用程式(包含 [`examples/`](examples/) 內的範例),所有對官網的請求、資料用途與對使用者的聲明,由建構者自行負責。
**給網站管理者。** 若機關或網站管理者對本工具的存取方式有疑慮,或希望停止收錄、改用其他方式,請在 [GitHub Issues](https://github.com/lawchat-oss/mcp-taiwan-legal-db/issues) 提出或來信 opensource@lawchat.com.tw,我們會盡速配合調整或移除該來源。
TDQS
Scored across 26 tools
Most tools target a distinct source/action (search_X paired with get_X), and descriptions explicitly cross-reference alternatives. A few names like search_interpretations, search_agency_interpretations, and get_interpretation could initially be confused, but the detailed descriptions clarify their boundaries.
All tool names use snake_case with consistent verb_noun patterns (get_, search_, query_). The only minor variation is 'query_regulation' instead of 'get_regulation', but it still follows the same readable convention.
With 26 tools, the set exceeds the 25-tool threshold for a heavy surface, even though the legal-research domain is broad. Many search/get pairs are useful, but the overall count is high and could overwhelm an agent without careful routing.
The server provides search and get operations for every major legal resource: judgments, regulations, interpretations, agency interpretations, administrative decisions, precedents, legislative records, literature, statistics, and constitutional docket materials. Cross-cutting tools like get_citations, get_pcode, get_legislative_history, and get_sentencing_statistics fill important gaps, leaving no obvious dead ends for the stated purpose.