Labsco
MCP SERVER

MCP Server Template

by narumiruna

Query Taiwan's Legislative Yuan open data — bills, laws, committee meetings, interpellations, votes and gazettes — as 42 tools.

Government, Legal & Legislative RecordsVerified
Summary
The legislative record addressable four ways: by bill, by law, by legislator, by vote.

Coverage is what makes it worth having. Not just a bill list, but the meetings that handled it, the law versions it amended, who proposed and who co-signed, and how each member voted. Results come back as the upstream API's own JSON, so nothing is summarised away in transit.

What it is

An MCP server over the Legislative Yuan API v2. Ten subject areas — bills, committees, gazettes, interpellations, IVOD video, laws, meetings, legislators, votes and overall statistics — exposed as 42 tools that return the upstream API's own JSON.

What you get
  • Bills end to end: `list_bills` filtered by term, session, category or proposer, `get_bill`, `get_bill_related_bills`, `get_bill_meets` for how each meeting handled it, `get_bill_doc_html` for the text itself
  • Law histories — `get_law`, `get_law_progress`, `get_law_versions` with the amendment content and who proposed it, `get_law_version_contents` and `get_law_content` down to a single article
  • Legislators as a starting point: `get_legislator_propose_bills`, `get_legislator_cosign_bills`, `get_legislator_meets`, `get_legislator_interpellations`
  • Votes with positions — `list_votes` filtered by term, meeting, vote type or how a named member voted, plus `get_vote` and `get_vote_meets`
  • Meetings and what happened inside them: `list_meets`, `get_meet`, `get_meet_bills`, `get_meet_interpellations`, `get_meet_ivods`
  • Gazettes and their tables of contents: `list_gazettes`, `get_gazette`, `get_gazette_agendas`, `list_gazette_agendas`
  • IVOD records carrying video URL, transcript and gazette text — `list_ivods`, `get_ivod`
  • Six prompts for the recurring questions, and the `lymcp://query-semantics` resource for the date distinction that trips people up: latest known, latest occurred and next scheduled are three different things
Requirements

Nothing to authorise — it reads a public API. Run it as `uvx lymcp@latest` over stdio; the package is `lymcp` on PyPI and the registry entry is `io.github.narumiruna/ly-mcp`. A Docker image, `narumi/ly-mcp:latest`, is published too. The same package installs a `ly` command that answers the same queries from a shell. Failed calls return a machine-readable error envelope rather than prose — `http_status`, `timeout`, `network_error`, `invalid_json` or `unexpected_error`, with the URL and status code included.

Setup effort

One command — uvx lymcp@latest