Labsco
MCP SERVER

Legislative Yuan API

by narumiruna

Query Taiwan's Legislative Yuan open data — bills, committees, gazettes, interpellations, laws, sittings, legislators and votes — across 42 tools over the official v2 API.

Government, Legal & Legislative RecordsVerified
Summary
Errors come back as structured JSON, so a failed call is something an agent can act on rather than a sentence to parse.

A failure names its type — http_status, timeout, network_error, invalid_json or unexpected_error — alongside the URL, the status code and an excerpt of the response, which is the difference between an agent retrying sensibly and giving up. The coverage is the other reason to reach for it: laws are modelled as versions with their amendments and proposers, and votes carry each member's position, so questions like how a bill changed between readings or who voted which way are single queries rather than reconstructions. Tool descriptions are in Traditional Chinese, matching the data.

What it is

A client for the Legislative Yuan API v2, covering ten domains of Taiwanese parliamentary data in 42 tools. Successful calls return the API's own JSON unchanged; failures return a machine-readable error envelope rather than prose.

What you get
  • Bills followed through the process: listed by term, session, category or proposer, read in full, traced to related bills, seen in the sittings that reviewed them, and fetched as the HTML document itself (list_bills, get_bill, get_bill_related_bills, get_bill_meets, get_bill_doc_html).
  • Laws as versioned objects rather than a single text — the law with its articles and version information, its pending progress, the bills attached to it, its historical versions with amendments and proposers, and the article contents of any one version (list_laws, get_law, get_law_progress, get_law_bills, get_law_versions, list_law_versions, get_law_version, get_law_version_contents, list_law_contents, get_law_content).
  • Legislators approached from every direction: listed by term, party, constituency, ID or name, then the bills they proposed, the bills they co-signed, the sittings they attended and the interpellations they raised (list_legislators, get_legislator, get_legislator_propose_bills, get_legislator_cosign_bills, get_legislator_meets, get_legislator_interpellations).
  • Sittings and committees: sittings filtered by term, session, type, attending member, date, committee or number; the committees themselves; and, for one sitting, its bills, its interpellations and its video (list_meets, get_meet, get_meet_bills, get_meet_interpellations, list_committees, get_committee, get_committee_meets).
  • The official gazette and its table of contents, filterable by volume, issue, booklet, term and sitting date (list_gazettes, get_gazette, get_gazette_agendas, list_gazette_agendas, get_gazette_agenda).
  • Interpellations listed by member, term, session or sitting code, and read individually (list_interpellations, get_interpellation).
  • IVOD parliamentary video with the video URL, the transcript and the gazette text attached — filterable by term, session, committee, member and video type (list_ivods, get_ivod, get_meet_ivods).
  • Votes as records you can query: listed by term, sitting, vote type, a member's position or the gazette document; read in full by vote code; and traced back to the sitting they belong to (list_votes, get_vote, get_vote_meets).
  • Statistics and an overview of what the API itself holds (get_stat).
Requirements

No account and no key — the Legislative Yuan API v2 is public. `uvx lymcp@latest` is the shortest route; a Docker image and a local uv run are the alternatives. The same package installs an `ly` command so a shell workflow can query the API directly, printing the same JSON error envelope and a non-zero exit code on failure.

Setup effort

One command — uvx lymcp@latest