legis-rj
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@legis-rjO artigo 5º da Lei 4024/2002 ainda está em vigor?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
legis-rj — legislação do Estado do Rio de Janeiro
Repositório do futuro servidor MCP e plugin sobre a legislação estadual fluminense: leis ordinárias, leis complementares, emendas constitucionais, decretos legislativos, resoluções e decretos do Poder Executivo, com o que a fonte declarar sobre revogação, alteração e inconstitucionalidade.
Segue o padrão dos acervos anteriores — Ementário do TCE-RJ, legislação de Mesquita, pareceres da PGE-RJ, atos do CNJ: Python, SQLite com FTS5, duas buscas separadas, acervo fora do Git.
Estado atual
Fase 1 — medição das fontes: feita. Está tudo em FONTES.md, com os números e as requisições que os produziram.
Fase 2 — coleta e servidor: em operação. O acervo responde por um servidor MCP com seis ferramentas, sobre um banco de 34.138 atos:
25.050 ALERJ lei ordinária, lei complementar, emenda constitucional,
decreto legislativo e resolução — com situação declarada
9.088 DOERJ decreto do Executivo, extraído do texto do DiárioA cobertura é declarada, não presumida: a série de decretos vai de 42.200 a 50.431 e faltam 154 (1,9%), dos quais 17 têm existência comprovada porque outros atos os citam. O servidor diz isso em toda resposta que dependa disso — "não encontrei" nunca passa por "não existe".
Dois avisos por registro, simétricos e igualmente necessários: 345 atos vêm
marcados como truncado (o Diário só trouxe um fragmento) e 17 com
corpo_suspeito (o corpo é grande demais e pode ter arrastado matéria
vizinha). Nenhum dos dois é descartado; ambos são declarados.
O que a medição mudou no plano, e continua valendo:
Decreto do Executivo não está na base de legislação — e a base onde ele está foi abandonada. Fica em
decest.nsf, que não aparece no menu do portal da ALERJ e para no Decreto 42.200, de 22/12/2009; o decreto estadual hoje está perto do 49.800. Faltam dezesseis anos. Emcontlei.nsf, "Decreto" quer dizer decreto legislativo, ato da própria Assembleia.Não há paginação. Todo URL com
Start=ouCount=derruba a conexão, inclusive os links que a própria ALERJ publica. A coleta entra pelo formulário de busca (POST), que aceita "Todos" — com teto de 1.000 por consulta, o que obriga a particionar por número de ato.A vigência tem dois níveis. O cabeçalho diz se o ato está em vigor; a revogação e a inconstitucionalidade do dispositivo são anotação solta no meio do texto e não sobem para o cabeçalho. A Lei 4.024/2002 está "Em Vigor" com dois parágrafos declarados inconstitucionais pelo Órgão Especial.
Datas em MM/DD/AAAA. Locale do Domino. Ler como brasileiro inverte todo dia menor ou igual a 12, sem erro visível.
O buraco dos decretos tem saída pelo Diário Oficial. O DOERJ publica um calendário que entrega, numa página só, 4.454 edições com o identificador de cada uma, e o PDF tem texto nativo (13,5 mil caracteres por página) — sem OCR. São ~21 GB de PDF para ~1,6 GB de texto. A busca do site não serve para enumerar (teto de 100 resultados, sem paginação); o calendário serve.
Mas o Diário não anota vigência. A base da ALERJ traz "Revogado pela Lei nº 5919/2011" no dispositivo; o DOERJ publica e segue. Decreto vindo do Diário chega na redação do dia em que saiu. Reconstruir revogação a partir dos decretos posteriores é inferência nossa, não declaração da fonte — e a resposta do servidor tem de dizer isso.
Related MCP server: korean-privacy-law-mcp
Estrutura
coleta/
alerj.py cliente da contlei.nsf (busca, documento, view)
ioerj.py cliente do DOERJ: busca, calendário e PDF da edição
sondar.py fase 1: estrutura do resultado, formato de número, teto
sondar_documento.py fase 1: metadados e anotações do ato
sondar_decest.py fase 1: a base de decretos do Executivo
sondar_decest_cobertura.py fase 1: até onde a série de decretos vai
sondar_doerj.py fase 1: caminho até o PDF e qualidade do texto
sondar_doerj_varredura.py fase 1: teto da busca, decretos por dia, calendário
inventario.py fase 1: topo de cada série normativa
medicoes/ o que cada sondagem mediu, em JSON
dados/bruto/ o que veio da rede, intocado (fora do Git)Onde os arquivos moram, e por quê são dois lugares
Esta máquina tem uma rotina de arquivamento que move periodicamente
projetos\legis-rj\dados para D:\Acervos\projetos__legis-rj__dados e
deixa uma junção no lugar. Ela é do usuário e roda sozinha; brigar com ela é
perder — na primeira tentativa de manter o acervo em C:, a rotina desfez a
mudança em minutos e levou junto um banco recém-montado.
Então o acervo acompanha a rotina, com uma separação deliberada:
dados/ junção para D:\Acervos\... PDF, texto e JSONL — onde pesa o espaço
banco/ disco interno, fora de dados/ o SQLite — onde pesa a latênciaA divisão não é estética. Medido neste acervo: abrir o banco de 182 MB e
conferir a integridade custou 24,3 s lendo do HD USB e 1,1 s do disco
interno. Toda pergunta que o servidor responde paga esse pedágio. E banco/
estar fora de dados/ é o que impede a rotina de arquivamento de levá-lo.
Ressalva que não se apaga: neste HD o Windows já registrou erro de I/O (disk
ID 51), aviso de dano no log de transações do NTFS (Ntfs ID 140) e uma
leitura que estourou WinError 433. O acervo está lá por decisão do usuário,
ciente disso. O banco em C: é também o que sobra se o HD sumir no meio de uma
coleta.
Rodar
py -3.12 -m venv .venv
.venv\Scripts\python.exe -m pip install -r requirements.txt
.venv\Scripts\python.exe coleta\sondar.pyO ambiente é por projeto: o Python global desta máquina carrega dependências que se contradizem, e instalar nele quebra os servidores MCP já publicados.
A âncora que escondia decreto, e o que ela custou
O extrator de decretos procurava o cabeçalho no início da linha (^ com
re.MULTILINE). Em parte das edições o ato não começa a linha — vem emendado
no fio do texto, depois do título da seção e às vezes com asterisco de
republicação:
... circulam hoje em um só caderno ATOS DO PODER EXECUTIVO *DECRETO Nº
45.739 DE 23 DE AGOSTO DE 2016 ABRE CRÉDITO SUPLEMENTAR ...Nessas edições o extrator não via nada e a edição inteira saía como "sem decreto". O erro não deu sintoma nenhum: a coleta terminava, o banco montava, o servidor respondia — e 505 decretos publicados constavam como ausentes.
Soltar a âncora, sozinho, traria a citação junto: "nos termos do Decreto nº 14.870…" casa igual. A defesa é a data que o próprio cabeçalho carrega. Medido em 120 cadernos:
cabeçalhos legítimos 1 a 177 dias da edição (mediana 1, p95 5)
citações 1.053, 2.337, 2.410 e 8.893 diasNão há nada no meio, e o corte ficou em 365 dias. A guarda vale só para o cabeçalho solto: o que já entrava pela âncora continua entrando como antes, para a correção não mudar por baixo o acervo que já tinha sido conferido.
Resultado imediato, sem baixar um único arquivo — era texto que já estava em disco: 933 ausentes (11,3%) viraram 412 (5,0%).
E a correção do extrator destravou a coleta pela rede, que antes rendia zero. A recuperação por Diário, que em duas rodadas trouxe 0 em 50 tentativas, passou a acertar 59% com a mesma máquina e a mesma fonte — os decretos sempre estiveram publicados; o extrator é que não os via. A série fechou em 154 ausentes (1,9%).
Coleta
Duas varreduras retomáveis, uma por fonte, rodando desde 05/08/2026:
.venv\Scripts\python.exe coleta\coletar_doerj.py.venv\Scripts\python.exe coleta\coletar_alerj.pyPodem ser interrompidas a qualquer momento: o manifesto do DOERJ e o progresso
da ALERJ dizem onde retomar. O que já veio fica em dados/, fora do Git.
Rodando sozinho
A Tarefa Agendada legis-rj-coleta chama rodar.cmd a cada 15 minutos: faz
o que falta e sai; nada pendente, sai em segundos. Log em
dados/agendado.log, erros em dados/agendado_saida.log.
Três coisas que essa tarefa aprendeu na marra, e que valem para a próxima:
Nasce proibida de rodar fora da tomada.
DisallowStartIfOnBatteriesvem ligado por padrão, e a tarefa fica em Enfileirados sem nunca executar — sem erro nenhum. Corrigido no XML.O agendador parte o caminho no espaço.
/trcom um caminho contendo "Matheus Menegatti" virou<Command>C:\Users\Matheus</Command>mais<Arguments>Menegatti\...</Arguments>. Registrar por XML resolve.Sob o agendador não há console. Processo que morre antes de abrir o log não deixa rastro, e a tarefa aparece como bem-sucedida. Por isso o
.cmdregistra a partida e captura o erro padrão, e o.cmdé ASCII puro — acento em linharemvira comando inválido.
Para conferir ou mexer:
schtasks /query /tn legis-rj-coleta /fo LIST /vDuas coisas que a coleta descobriu e que valem por si:
O calendário do DOERJ às vezes entrega outro caderno — 1 página no lugar de 83, íntegro, sem nada que denuncie. O coletor confere cada edição contra a busca do dia e desvia quando falta página.
O teto de 1.000 da busca da ALERJ não respeita a partição por número. Os números de 1 a 8 estouraram o teto, todos. Fica para depois da varredura uma conferência de série: número que devia existir e não apareceu volta para a busca combinado com o ano.
O servidor
.venv\Scripts\python.exe testar_servidor.pyRegistrado no Claude Desktop como legis-rj. Seis ferramentas, e a central é
verificar_vigencia, que responde nos dois níveis: a situação do ato e as
anotações por dispositivo, separadas.
Três decisões que valem mais que o código:
A situação carrega a origem. "Em Vigor declarado no documento" e "lido da listagem" não são a mesma prova, e para decreto legislativo e resolução a ALERJ não declara nada — o servidor diz isso, em vez de devolver campo vazio, que se lê como norma viva.
Divergência da fonte não vira escolha. Quando a ALERJ registra dois números para o mesmo ato, a ressalva vai colada ao número na citação — aviso em campo separado não sobrevive ao copiar e colar. E o ato é encontrável pelos dois números.
A ferramenta prova o que encontrou. Nenhuma resposta afirma que uma norma está em vigor; afirma o que a fonte declarou.
Próximo passo
Terminadas as varreduras: conferir a série da ALERJ, extrair os atos do texto do Diário e montar o banco. As perguntas ainda em aberto estão na seção 8 de FONTES.md.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityCmaintenanceA MCP server for agent-driven research on Brazilian law using official sources335MIT
- AlicenseAqualityCmaintenanceEnables natural language interaction with the Korean Personal Information Protection Act (PIPA) through 37 MCP tools that search, compare, analyze, and verify legal texts, official guidelines, and consulting cases from authoritative sources.37114MIT
- AlicenseAqualityCmaintenanceMCP server for searching and extracting official announcements, decrees, and resolutions from the Argentine Official Gazette (Boletín Oficial de la República Argentina). It enables LLMs to perform real-time searches and retrieve verbatim legal text with complete juridical fidelity.14193MIT
- AlicenseAqualityCmaintenanceMCP server that connects AI to the Chilean legislation system (Ley Chile) for retrieving legal norms, citations, and intertemporal analysis.281MIT
Related MCP Connectors
Brazilian legal stack in one MCP: lawsuits, court publications, case law, tenders, certificates.
Task-oriented MCP for Indonesian law: search, resolve citations, read laws, and MK decisions.
Resolve, search and verify legal citations against the official sources, with provenance.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/fm85gn2y4q-maker/legis-rj'
If you have feedback or need assistance with the MCP directory API, please join our Discord server