{
  "markdown": "# 🏛️ ly-mcp\n\n<!-- mcp-name: io.github.narumiruna/ly-mcp -->\n\n[![PyPI version](https://img.shields.io/pypi/v/lymcp)](https://pypi.org/project/lymcp/)\n[![Python](https://img.shields.io/pypi/pyversions/lymcp)](https://pypi.org/project/lymcp/)\n[![CI](https://github.com/narumiruna/ly-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/narumiruna/ly-mcp/actions/workflows/ci.yml)\n[![Docker](https://github.com/narumiruna/ly-mcp/actions/workflows/docker.yml/badge.svg)](https://github.com/narumiruna/ly-mcp/actions/workflows/docker.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nly-mcp 是一個串接台灣立法院 API v2 的 Model Context Protocol (MCP) 伺服器，提供議案、委員會、公報、會議紀錄與相關文件等資料查詢能力。\n\n## ✨ 功能\n\n此 MCP 伺服器提供 10 大類、共 42 個工具：\n\n### 📊 統計\n\n- **get_stat**：取得立法院 API 的統計與概覽資訊。\n\n### 📄 議案\n\n- **list_bills**：列出議案，可依屆期、會期、類別、提案人等條件篩選。\n- **get_bill**：取得特定議案的完整資訊，回傳完整 JSON。\n- **get_bill_related_bills**：查詢相關議案與其關聯。\n- **get_bill_meets**：取得議案在各會議中的審議紀錄，可依會議、出席委員、委員會及關聯議案或法律篩選，並指定輸出欄位。\n- **get_bill_doc_html**：取得特定議案的 HTML 文件內容。\n\n### 🏢 委員會\n\n- **list_committees**：列出立法院委員會，可依整數類別代碼與委員會代號篩選。\n- **get_committee**：取得特定委員會的詳細資訊。\n- **get_committee_meets**：取得委員會會議紀錄與議事內容。\n\n### 📰 公報\n\n- **list_gazettes**：列出立法院公報，可依卷期與公報編號篩選。\n- **get_gazette**：取得特定公報的詳細資訊。\n- **get_gazette_agendas**：取得特定公報中的議程或目錄內容，可另依公報編號、卷、期、冊別等查詢條件篩選。\n- **list_gazette_agendas**：列出公報目錄，可依卷、期、冊別、屆期與會議日期等條件篩選。\n- **get_gazette_agenda**：取得特定公報目錄項目的詳細資訊。\n\n### 🎙️ 質詢\n\n- **list_interpellations**：列出質詢資料，可依委員、屆期、會期與會議代碼篩選。\n- **get_interpellation**：取得特定質詢的詳細資訊。\n- **get_legislator_interpellations**：取得特定立法委員作為質詢委員的質詢資料。\n\n### 🎥 IVOD（網路電視）\n\n- **list_ivods**：列出 IVOD 影片，可依屆期、會期、委員會、委員與影片類型篩選。\n- **get_ivod**：取得特定 IVOD 影片的詳細資訊，包含影片網址、逐字稿與公報內容。\n- **get_meet_ivods**：取得特定會議相關的 IVOD 影片。\n\n### ⚖️ 法律\n\n- **list_laws**：列出法律，可依法律編號、類別（母法或子法）、母法編號、狀態與主管機關篩選。\n- **get_law**：取得特定法律的完整資訊，包含基本資料、法條與版本資訊。\n- **get_law_progress**：取得特定法律的未議決進度列表。\n- **get_law_bills**：取得特定法律相關的議案，可搭配篩選條件。\n- **get_law_versions**：取得特定法律的歷史版本紀錄，包含修正內容、提案人與進度。\n- **list_law_versions**：跨法律列出法律版本，可依法律編號、版本編號、日期、動作、進度與現行版本狀態篩選。\n- **get_law_version**：依版本 ID 取得特定法律版本的詳細資訊。\n- **get_law_version_contents**：取得特定法律版本包含的法條內容。\n- **list_law_contents**：列出法條內容，可依法律編號、版本 ID、條號、現行版狀態與版本追蹤篩選。\n- **get_law_content**：依法條內容 ID 取得特定法條的詳細資訊。\n\n### 🗓️ 會議\n\n- **list_meets**：列出立法院會議，可依屆期、會期、會議種類、出席委員、日期、委員會代號與會議編號篩選。\n- **get_meet**：依會議 ID 或代碼取得特定會議的詳細資訊。\n- **get_meet_ivods**：取得特定會議相關的 IVOD 影片，可搭配篩選條件。\n- **get_meet_bills**：取得特定會議討論的議案，可依議案條件篩選。\n- **get_meet_interpellations**：取得特定會議中的質詢資料，可搭配篩選條件。\n\n### 👤 立法委員\n\n- **list_legislators**：列出立法委員，可依屆期、黨籍、選區、委員 ID 與姓名篩選。\n- **get_legislator**：依屆期與姓名取得特定立法委員的詳細資訊。\n- **get_legislator_propose_bills**：取得特定立法委員作為提案人的議案，可依議案條件篩選。\n- **get_legislator_cosign_bills**：取得特定立法委員作為連署人的議案，可依議案條件篩選。\n- **get_legislator_meets**：取得特定立法委員出席的會議，可依會議條件篩選。\n- **get_legislator_interpellations**：取得特定立法委員的質詢資料，可搭配篩選條件。\n\n### 🗳️ 表決\n\n- **list_votes**：列出表決紀錄，可依屆期、會議、表決型態、委員投票立場與公報文件篩選。\n- **get_vote**：依表決代碼取得完整表決內容。\n- **get_vote_meets**：取得特定表決所屬的會議，可搭配會議、委員會與關聯議案條件篩選。\n\n## 🔗 API 來源\n\n此 MCP 伺服器使用 [立法院 API v2](https://ly.govapi.tw/v2) 作為資料來源，提供台灣立法院議案與議事資料。\n\n## 📦 工具回應格式\n\nMCP 工具呼叫成功時，會回傳立法院 API 的原始 JSON payload。呼叫失敗時，會回傳可由程式判讀的 JSON 錯誤封包：\n\n```json\n{\n  \"ok\": false,\n  \"error\": {\n    \"type\": \"http_status\",\n    \"message\": \"Upstream API returned HTTP 404 for https://ly.govapi.tw/v2/bills/invalid_bill_number\",\n    \"url\": \"https://ly.govapi.tw/v2/bills/invalid_bill_number\",\n    \"status_code\": 404,\n    \"response_excerpt\": \"not found\"\n  }\n}\n```\n\n目前的錯誤 `type` 包含 `http_status`、`timeout`、`network_error`、`invalid_json` 與 `unexpected_error`。\n\n## 🚀 安裝與使用\n\n### ⚡ 快速開始\n\n使用 `uvx` 安裝並執行伺服器：\n\n```bash\nuvx lymcp@latest\n```\n\n### 🧩 MCP Client 設定\n\n將此伺服器加入你的 MCP client 設定，例如 Claude Desktop。\n\n#### PyPI\n\n```json\n{\n  \"mcpServers\": {\n    \"lymcp\": {\n      \"command\": \"uvx\",\n      \"args\": [\"lymcp@latest\"]\n    }\n  }\n}\n```\n\n#### GitHub\n\n```json\n{\n  \"mcpServers\": {\n    \"lymcp\": {\n      \"command\": \"uvx\",\n      \"args\": [\n        \"--from\",\n        \"git+https://github.com/narumiruna/ly-mcp\",\n        \"lymcp\"\n      ]\n    }\n  }\n}\n```\n\n#### 本機開發\n\n```json\n{\n  \"mcpServers\": {\n    \"lymcp\": {\n      \"command\": \"uv\",\n      \"args\": [\n        \"run\",\n        \"--directory\",\n        \"/path/to/ly-mcp\",\n        \"lymcp\"\n      ]\n    }\n  }\n}\n```\n\n#### Docker\n\n```json\n{\n  \"mcpServers\": {\n    \"lymcp\": {\n      \"command\": \"docker\",\n      \"args\": [\n        \"run\",\n        \"--rm\",\n        \"-i\",\n        \"narumi/ly-mcp:latest\"\n      ]\n    }\n  }\n}\n```\n\n### 💻 Terminal CLI\n\n套件也提供 `ly` 指令，讓 agents 或 shell workflow 可以直接從 terminal 查詢立法院 API。CLI 預設輸出 pretty JSON，失敗時會輸出和 MCP tools 相同的 JSON error envelope 並回傳非 0 exit code。\n\n如果要讓 agent 使用 repo 內的 `ly` skill，可以安裝：\n\n```bash\nnpx skills add /narumiruna/ly-mcp\n```\n\n```bash\nly --help\nly stat\nly bills list --term 11 --bill-type 法律案 --limit 5\nly bills get 202110213410000\nly bills meets 202110213410000 --meeting-code 院會-11-2-6 --fields 會議代碼,日期\nly gazettes agendas 1137701 --gazette-number 1137701 --issue 77\nly laws versions 09200015 --limit 5\nly meets bills 院會-11-2-3 --term 11 --limit 5\nly legislators propose-bills 11 韓國瑜 --limit 5\nly votes list --term 11 --voting-member 黃國昌 --limit 5\nly votes get 1141921_00002_591\nly votes meets 1141921_00002_591 --term 11\n```\n\n給 agents 使用時，建議用資料領域選 command group：\n\n- `ly bills ...` 查議案、關聯議案、審議會議與議案本文 HTML。\n- `ly laws ...`、`ly law-versions ...`、`ly law-contents ...` 查法律、修法版本與法條內容。\n- `ly meets ...` 查會議、會議中的議案、質詢與 IVOD。\n- `ly legislators ...` 查立法委員、提案、連署、出席會議與質詢。\n- `ly gazettes ...`、`ly gazette-agendas ...` 查公報與公報目錄。\n- `ly committees ...`、`ly interpellations ...`、`ly ivods ...` 查委員會、質詢與網路電視資料。\n- `ly votes ...` 查表決列表、表決詳情與所屬會議。\n\n常用輸出選項：\n\n```bash\n# 單行 JSON，方便 pipe 給其他工具\nly --compact bills list --term 11 --limit 1\n\n# 將成功結果寫入檔案\nly --output bills.json bills list --term 11 --limit 20\n\n# 傳遞上游 output_fields\nly bills list --term 11 --fields 議案編號,案由,提案日期\n```\n\n## 💬 範例提示\n\n連上 MCP 伺服器後，可以向 LLM 提出這類問題：\n\n- 「列出第11屆的所有法律提案」\n- 「查詢立法委員王美花的提案紀錄」\n- 「以今天的台北日期為準，最近已發生的院會討論了哪些議案？」\n- 「下一場已排程的院會是什麼時候？」\n- 「查詢勞動基準法的修法歷程」\n- 「第11屆第1會期有哪些委員會會議？」\n- 「黃國昌在第11屆參與過哪些表決？各自投了什麼立場？」\n\n處理和日期有關的問題時，請區分：\n\n- `latest known`：使用上游預設排序，包含未來已排程的紀錄。\n- `latest occurred`：只考慮相關日期在參考日期當天或之前的紀錄。\n- `next scheduled`：只考慮相關日期晚於參考日期的紀錄。\n\n伺服器也提供常見工作流程用的 MCP prompts：\n`latest_plenary_meeting_bills`、`law_amendment_history`、\n`legislator_proposal_record`、`legislator_interpellations`、\n`committee_meeting_lookup` 與 `legislator_vote_record`。可閱讀 `lymcp://query-semantics` 與\n`lymcp://workflow-reference`，取得日期語意、篩選條件、ID 欄位與工作流程步驟的精簡指引。\n\n## 🛠️ 開發\n\n### ✅ 需求\n\n- Python 3.12+\n- [uv](https://docs.astral.sh/uv/) 套件管理器\n- [just](https://github.com/casey/just) 命令執行器\n\n### ⚙️ 設定\n\n```bash\ngit clone https://github.com/narumiruna/ly-mcp\ncd ly-mcp\nuv sync\n```\n\n### 🤖 使用 Codex CLI\n\n此 repository 已包含供本機 Codex CLI 開發使用的 `.codex/config.toml`。從 repository root 啟動 Codex CLI 時，可透過 `uv run lymcp` 使用已設定的 `lymcp` MCP server。\n\n### 🔍 執行 MCP Inspector\n\n```bash\njust dev\n```\n\n### 🧪 執行測試\n\n```bash\n# 執行預設離線測試套件並產生 coverage\njust test\n\n# 直接執行預設離線測試套件\nuv run pytest -v -s\n\n# 手動執行會呼叫立法院 API 的 live tests\njust test-live\n```\n\n預設 pytest 設定會排除標記為 `live` 的測試，因此 CI 與一般本機執行會使用 `tests/data` 中的 fixture-backed samples。只有在上游 API 回應形狀改變時，才應有意識地更新這些 JSON samples。\n\n### 🧹 程式碼品質\n\n```bash\n# 執行 linter\njust lint\n\n# 執行 type checker\njust type\n```\n\n## 📜 授權\n\nMIT\n",
  "bytes": 7268,
  "sha": "143a392c3364287d08ca3f4a52b352222e1cd20ae0791e1b2756bcf6b4536bb0",
  "repo_slug": "narumiruna/ly-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_narumiruna_ly_mcp_6aa5ae87/readme"
}