Legislative Yuan API
Pesquise projetos de lei, documentos e registros de reuniões da API do Yuan Legislativo de Taiwan.
Documentação
🏛️ ly-mcp
ly-mcp é um servidor Model Context Protocol (MCP) que integra a API v2 do Legislative Yuan de Taiwan, oferecendo capacidades de consulta de dados como proposições, comissões, diários oficiais, atas de reuniões e documentos relacionados.
✨ Recursos
Este servidor MCP fornece 10 categorias principais, com 42 ferramentas no total:
📊 Estatísticas
- get_stat: Obtém informações estatísticas e de visão geral da API do Legislative Yuan.
📄 Proposições
- list_bills: Lista proposições, com filtros por legislatura, sessão, categoria, proponente, etc.
- get_bill: Obtém informações completas de uma proposição específica, retornando JSON completo.
- get_bill_related_bills: Consulta proposições relacionadas e suas associações.
- get_bill_meets: Obtém os registros de deliberação de uma proposição nas reuniões, com filtros por reunião, parlamentares presentes, comissão e proposições ou leis relacionadas, além de permitir especificar os campos de saída.
- get_bill_doc_html: Obtém o conteúdo HTML do documento de uma proposição específica.
🏢 Comissões
- list_committees: Lista as comissões do Legislative Yuan, com filtros por código de categoria inteiro e código da comissão.
- get_committee: Obtém informações detalhadas de uma comissão específica.
- get_committee_meets: Obtém atas de reuniões e conteúdo de deliberações da comissão.
📰 Diários Oficiais
- list_gazettes: Lista os diários oficiais do Legislative Yuan, com filtros por volume e número do diário.
- get_gazette: Obtém informações detalhadas de um diário oficial específico.
- get_gazette_agendas: Obtém o conteúdo de pauta ou índice de um diário oficial específico, com filtros adicionais por número do diário, volume, edição, fascículo, etc.
- list_gazette_agendas: Lista os índices de diários oficiais, com filtros por volume, edição, fascículo, legislatura e data da reunião.
- get_gazette_agenda: Obtém informações detalhadas de um item específico do índice de um diário oficial.
🎙️ Interpelações
- list_interpellations: Lista dados de interpelações, com filtros por parlamentar, legislatura, sessão e código da reunião.
- get_interpellation: Obtém informações detalhadas de uma interpelação específica.
- get_legislator_interpellations: Obtém as interpelações de um parlamentar específico como interpelante.
🎥 IVOD (TV na Internet)
- list_ivods: Lista vídeos IVOD, com filtros por legislatura, sessão, comissão, parlamentar e tipo de vídeo.
- get_ivod: Obtém informações detalhadas de um vídeo IVOD específico, incluindo URL do vídeo, transcrição e conteúdo do diário oficial.
- get_meet_ivods: Obtém os vídeos IVOD relacionados a uma reunião específica.
⚖️ Leis
- list_laws: Lista leis, com filtros por número da lei, categoria (lei principal ou subordinada), número da lei principal, status e órgão responsável.
- get_law: Obtém informações completas de uma lei específica, incluindo dados básicos, artigos e informações de versão.
- get_law_progress: Obtém a lista de progresso não deliberado de uma lei específica.
- get_law_bills: Obtém as proposições relacionadas a uma lei específica, com filtros opcionais.
- get_law_versions: Obtém o histórico de versões de uma lei específica, incluindo conteúdo das alterações, proponentes e progresso.
- list_law_versions: Lista versões de leis em diferentes leis, com filtros por número da lei, número da versão, data, ação, progresso e status de versão vigente.
- get_law_version: Obtém informações detalhadas de uma versão específica de lei pelo ID da versão.
- get_law_version_contents: Obtém o conteúdo dos artigos incluídos em uma versão específica de lei.
- list_law_contents: Lista conteúdos de artigos, com filtros por número da lei, ID da versão, número do artigo, status de versão vigente e rastreamento de versão.
- get_law_content: Obtém informações detalhadas de um artigo específico pelo ID do conteúdo do artigo.
🗓️ Reuniões
- list_meets: Lista reuniões do Legislative Yuan, com filtros por legislatura, sessão, tipo de reunião, parlamentares presentes, data, código da comissão e número da reunião.
- get_meet: Obtém informações detalhadas de uma reunião específica por ID ou código da reunião.
- get_meet_ivods: Obtém os vídeos IVOD relacionados a uma reunião específica, com filtros opcionais.
- get_meet_bills: Obtém as proposições discutidas em uma reunião específica, com filtros por condições de proposição.
- get_meet_interpellations: Obtém os dados de interpelações de uma reunião específica, com filtros opcionais.
👤 Parlamentares
- list_legislators: Lista parlamentares, com filtros por legislatura, filiação partidária, distrito eleitoral, ID do parlamentar e nome.
- get_legislator: Obtém informações detalhadas de um parlamentar específico por legislatura e nome.
- get_legislator_propose_bills: Obtém as proposições de um parlamentar específico como proponente, com filtros por condições de proposição.
- get_legislator_cosign_bills: Obtém as proposições de um parlamentar específico como co-signatário, com filtros por condições de proposição.
- get_legislator_meets: Obtém as reuniões em que um parlamentar específico esteve presente, com filtros por condições de reunião.
- get_legislator_interpellations: Obtém os dados de interpelações de um parlamentar específico, com filtros opcionais.
🗳️ Votações
- list_votes: Lista registros de votação, com filtros por legislatura, reunião, tipo de votação, posição de voto do parlamentar e documento do diário oficial.
- get_vote: Obtém o conteúdo completo de uma votação pelo código da votação.
- get_vote_meets: Obtém as reuniões às quais uma votação específica pertence, com filtros por reunião, comissão e proposições relacionadas.
🔗 Fonte da API
Este servidor MCP usa a API v2 do Legislative Yuan como fonte de dados, fornecendo dados de proposições e procedimentos do Legislative Yuan de Taiwan.
📦 Formato de resposta das ferramentas
Quando uma chamada de ferramenta MCP é bem-sucedida, o payload JSON bruto da API do Legislative Yuan é retornado. Quando a chamada falha, um envelope de erro JSON legível por programa é retornado:
{
"ok": false,
"error": {
"type": "http_status",
"message": "Upstream API returned HTTP 404 for https://ly.govapi.tw/v2/bills/invalid_bill_number",
"url": "https://ly.govapi.tw/v2/bills/invalid_bill_number",
"status_code": 404,
"response_excerpt": "not found"
}
}
O erro atual type contém http_status, timeout, network_error, invalid_json e unexpected_error.
🚀 Instalação e uso
⚡ Início rápido
Use uvx para instalar e executar o servidor:
uvx lymcp@latest
🧩 Configuração do cliente MCP
Adicione este servidor à configuração do seu cliente MCP, por exemplo, Claude Desktop.
PyPI
{
"mcpServers": {
"lymcp": {
"command": "uvx",
"args": ["lymcp@latest"]
}
}
}
GitHub
{
"mcpServers": {
"lymcp": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/narumiruna/ly-mcp",
"lymcp"
]
}
}
}
Desenvolvimento local
{
"mcpServers": {
"lymcp": {
"command": "uv",
"args": [
"run",
"--directory",
"/path/to/ly-mcp",
"lymcp"
]
}
}
}
Docker
{
"mcpServers": {
"lymcp": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"narumi/ly-mcp:latest"
]
}
}
}
💻 CLI de terminal
O pacote também fornece o comando ly, permitindo que agents ou workflows de shell consultem a API do Legislative Yuan diretamente do terminal. O CLI gera JSON formatado por padrão e, em caso de falha, gera o mesmo envelope de erro JSON das ferramentas MCP e retorna um código de saída diferente de 0.
Para permitir que um agent use a skill ly do repositório, instale:
npx skills add /narumiruna/ly-mcp
ly --help
ly stat
ly bills list --term 11 --bill-type 法律案 --limit 5
ly bills get 202110213410000
ly bills meets 202110213410000 --meeting-code 院會-11-2-6 --fields 會議代碼,日期
ly gazettes agendas 1137701 --gazette-number 1137701 --issue 77
ly laws versions 09200015 --limit 5
ly meets bills 院會-11-2-3 --term 11 --limit 5
ly legislators propose-bills 11 韓國瑜 --limit 5
ly votes list --term 11 --voting-member 黃國昌 --limit 5
ly votes get 1141921_00002_591
ly votes meets 1141921_00002_591 --term 11
Ao usar com agents, recomenda-se selecionar o grupo de comandos por domínio de dados:
ly bills ...para consultar proposições, proposições relacionadas, reuniões de deliberação e HTML do texto das proposições.ly laws ...,ly law-versions ...,ly law-contents ...para consultar leis, versões de alteração e conteúdo de artigos.ly meets ...para consultar reuniões, proposições em reuniões, interpelações e IVOD.ly legislators ...para consultar parlamentares, proposições, coassinaturas, reuniões comparecidas e interpelações.ly gazettes ...,ly gazette-agendas ...para consultar diários oficiais e índices de diários oficiais.ly committees ...,ly interpellations ...,ly ivods ...para consultar comissões, interpelações e dados de TV na internet.ly votes ...para consultar listas de votações, detalhes de votações e reuniões correspondentes.
Opções de saída comuns:
# 單行 JSON,方便 pipe 給其他工具
ly --compact bills list --term 11 --limit 1
# 將成功結果寫入檔案
ly --output bills.json bills list --term 11 --limit 20
# 傳遞上游 output_fields
ly bills list --term 11 --fields 議案編號,案由,提案日期
💬 Exemplos de prompts
Após conectar-se ao servidor MCP, você pode fazer perguntas como estas ao LLM:
- "Liste todas as proposições legislativas da 11ª legislatura"
- "Consulte o histórico de proposições da parlamentar Wang Mei-hua"
- "Com base na data de hoje em Taipei, quais proposições foram discutidas nas sessões plenárias mais recentes já ocorridas?"
- "Quando será a próxima sessão plenária agendada?"
- "Consulte o histórico de alterações da Lei de Normas Trabalhistas"
- "Quais reuniões de comissão ocorreram na 1ª sessão da 11ª legislatura?"
- "Em quais votações Huang Kuo-chang participou na 11ª legislatura e qual foi sua posição em cada uma?"
Ao lidar com perguntas relacionadas a datas, distinga:
latest known: usa a ordenação padrão upstream, incluindo registros futuros agendados.latest occurred: considera apenas registros cujas datas relevantes sejam iguais ou anteriores à data de referência.next scheduled: considera apenas registros cujas datas relevantes sejam posteriores à data de referência.
O servidor também fornece prompts MCP para fluxos de trabalho comuns:
latest_plenary_meeting_bills, law_amendment_history,
legislator_proposal_record, legislator_interpellations,
committee_meeting_lookup e legislator_vote_record. Consulte lymcp://query-semantics e
lymcp://workflow-reference para obter orientações concisas sobre semântica de datas, filtros, campos de ID e etapas de fluxo de trabalho.
🛠️ Desenvolvimento
✅ Requisitos
⚙️ Configuração
git clone https://github.com/narumiruna/ly-mcp
cd ly-mcp
uv sync
🤖 Usando o Codex CLI
Este repositório já inclui .codex/config.toml para desenvolvimento com o Codex CLI local. Ao iniciar o Codex CLI a partir da raiz do repositório, você pode usar o servidor MCP lymcp configurado por meio de uv run lymcp.
🔍 Executando o MCP Inspector
just dev
🧪 Executando testes
# 執行預設離線測試套件並產生 coverage
just test
# 直接執行預設離線測試套件
uv run pytest -v -s
# 手動執行會呼叫立法院 API 的 live tests
just test-live
A configuração padrão do pytest exclui testes marcados como live, portanto, CI e execuções locais normais usam amostras baseadas em fixtures em tests/data. Essas amostras JSON só devem ser atualizadas deliberadamente quando a forma das respostas da API upstream mudar.
🧹 Qualidade do código
# 執行 linter
just lint
# 執行 type checker
just type
📜 Licença
MIT