MCP-CENDOJ
Sobre o servidor MCP para o CENDOJ 🇪🇸 — Acesso automatizado a decisões judiciais da Espanha, filtros avançados de jurisprudência e leitura de sentenças por meio do Model Context Protocol e API REST
Documentação
MCP-CENDOJ: Servidor MCP e API para o Buscador de Jurisprudência
Este projeto fornece uma API REST (FastAPI) e um Servidor MCP (Model Context Protocol) para buscar e consultar sentenças e resoluções judiciais do CENDOJ (Centro de Documentação Judicial da Espanha).
Como o CENDOJ não dispõe de uma API pública e protege suas buscas com JavaScript interativo e validações de autocompletar, este serviço utiliza Playwright para simular buscas reais de forma automatizada e robusta, retornando resultados limpos em formato JSON e abstraindo o download e a extração de texto dos PDFs de sentenças.
Características
- Buscador Automatizado (Playwright): Automatiza a navegação, a aceitação do Aviso Legal, a simulação de digitação sequencial para ativar o buscador e a seleção da sugestão do CENDOJ para evitar as limitações de busca.
- API REST com FastAPI:
GET /api/status: Verifica a saúde e a configuração do serviço.GET /api/search: Realiza buscas avançadas com parâmetros:query: Texto livre opcional.fecha_desde/fecha_hasta: Intervalo de datas (AAAA-MM-DD ou DD/MM/AAAA).jurisdiccion: Civil, Penal, Contencioso-Administrativo, Social, Militar.roj: Identificador ROJ (ex.:STS 2849/2026).ecli: Código ECLI (ex.:ES:TS:2026:2849).n_resolucion: Número da resolução.n_recurso: Número do recurso.ponente: Nome do magistrado relator.norma: Legislação ou norma de interesse.localizacion: Lista de localizações ou Comunidades Autônomas (ex.:Andalucía,Cataluña,Madrid).
GET /api/decision: Resolve o contêiner de documentos do CENDOJ, baixa o arquivo PDF e extrai seu texto simples em espanhol.
- Servidor MCP (Model Context Protocol):
- Suporte para modo Stdio (para clientes locais de desktop, como Cursor e Claude Desktop).
- Suporte para modo SSE (Server-Sent Events) montado de forma nativa no FastAPI sob o prefixo
/mcp(para clientes remotos ou web). - Ferramentas expostas:
buscar_jurisprudencia: Realiza buscas com todos os filtros detalhados (query, roj, ecli, relator, recurso, resolução, norma, etc.).obtener_texto_resolucion: Baixa um PDF e extrai seu texto completo.
- Compatibilidade com Windows: Corrigido para evitar problemas com a política do loop de eventos (
NotImplementedErrorem subprocess) em ambientes Windows.
Pré-requisitos
- Python 3.10 ou superior instalado.
- Navegador Chromium do Playwright instalado no sistema.
Instalação e Configuração (Rápida)
Para facilitar a configuração no Windows, incluímos scripts que automatizam todo o processo:
-
Executar configuração automática: Clique duas vezes no arquivo
setup.bat(ou execute-o no seu terminal). Este script será responsável por:- Criar o ambiente virtual
.venv. - Instalar e atualizar todas as dependências (
requirements.txt). - Instalar o navegador Chromium exigido pelo Playwright.
- Criar o arquivo de configuração
.envpadrão.
- Criar o ambiente virtual
-
Registrar em Clientes MCP (Automático): Após a conclusão da configuração, execute o utilitário de instalação automática para vincular o servidor MCP aos seus clientes locais:
.venv\Scripts\python.exe install_mcp.pyEste comando detectará o caminho absoluto do seu repositório e registrará automaticamente o servidor CENDOJ nas configurações globais de:
- Claude Desktop (
claude_desktop_config.json) - Antigravity IDE (
mcp_config.json)
- Claude Desktop (
Instalação e Configuração Manual (Alternativa)
Se você não deseja usar os scripts de automação, pode inicializar o projeto manualmente seguindo estes passos:
-
Criar o ambiente virtual Python:
python -m venv .venv -
Ativar o ambiente virtual:
- No Windows (PowerShell):
.venv\Scripts\Activate.ps1 - No macOS/Linux ou Git Bash:
source .venv/bin/activate
- No Windows (PowerShell):
-
Instalar dependências:
pip install --upgrade pip pip install -r requirements.txt -
Instalar o navegador Chromium para Playwright:
playwright install chromium -
Criar o arquivo de configuração
.env: Crie um arquivo chamado.envna raiz do projeto e escreva a seguinte linha:CENDOJ_HEADLESS=true
Guia de Execução
O script run.py é o ponto de entrada unificado:
1. Executar como API REST e Servidor SSE (FastAPI)
Para iniciar o servidor web:
.venv\Scripts\python.exe run.py api
O servidor será iniciado em http://localhost:8000.
- Documentação Interativa (Swagger/OpenAPI): Visite http://localhost:8000/docs para interagir diretamente com a API REST.
- Endpoint MCP SSE: Acessível em http://localhost:8000/mcp/sse.
2. Executar como Servidor MCP Stdio (Console/Entrada Padrão)
Para iniciar o servidor MCP usando entrada e saída padrão (ideal para integrar em ferramentas de desktop locais):
.venv\Scripts\python.exe run.py mcp
Integração Manual com Clientes MCP (Opcional)
Se você preferir fazer o registro manualmente em vez de usar install_mcp.py:
Claude Desktop
Para conectar este servidor MCP ao Claude Desktop, edite seu arquivo de configuração claude_desktop_config.json (geralmente em %APPDATA%\Claude\claude_desktop_config.json no Windows) e adicione a configuração do servidor:
{
"mcpServers": {
"cendoj-jurisprudencia": {
"command": "c:/workspace-github/MCP-CENDOJ/.venv/Scripts/python.exe",
"args": ["c:/workspace-github/MCP-CENDOJ/run.py", "mcp"],
"env": {
"CENDOJ_HEADLESS": "true"
}
}
}
}
Cursor
Para usar o servidor no Cursor:
- Vá para Settings > Features > MCP.
- Clique em + Add New MCP Server.
- Configure os seguintes valores:
- Name:
CENDOJ - Type:
command - Command:
c:/workspace-github/MCP-CENDOJ/.venv/Scripts/python.exe c:/workspace-github/MCP-CENDOJ/run.py mcp
- Name:
Guia de Prompts em Linguagem Natural (CENDOJ MCP)
Este guia mostra como você pode falar com o assistente em linguagem natural e conversacional (como se estivesse falando com um colega ou advogado), e como a IA se encarrega de traduzir seu pedido em consultas técnicas para o buscador do CENDOJ.
💬 Exemplos Práticos de Interação Conversacional
-
Consultar dúvidas sobre acidentes em situações modernas
- Seu prompt em linguagem natural: "Ei, me busca casos de teletrabalhadores que tropeçaram na própria cozinha durante o horário de trabalho e se os tribunais aceitaram isso como acidente de trabalho."
- Como a IA processa nos bastidores: Busca termos como
"accidente de trabajo","teletrabajo","cocina"ou"domicilio"na jurisdição social, baixa os textos das sentenças e analisa os fatos comprovados. - Resposta que você recebe: Um resumo de se os tribunais consideram a cozinha como "local de trabalho" durante a jornada e quais requisitos exigem.
-
Investigar decisões em uma área geográfica específica
- Seu prompt em linguagem natural: "Preciso ver sentenças recentes daqui de Valladolid sobre demissões disciplinares de funcionários que dormiram durante o turno de vigilância."
- Como a IA processa nos bastidores: Filtra pela sede de Valladolid (
localizacion: ["Valladolid"]), busca os termos"despido disciplinario"e"quedarse dormido"ou"vigilante"na jurisdição social, ordenando por data recente. - Resposta que você recebe: A lista das últimas sentenças proferidas pelo TSJ de Castela e Leão em Valladolid sobre esse tema e se as demissões foram declaradas procedentes ou improcedentes.
-
Analisar a doutrina do Tribunal Supremo sobre temas familiares
- Seu prompt em linguagem natural: "Me diga o que diz o Tribunal Supremo sobre se pais separados são obrigados a continuar pagando a faculdade de filhos maiores de 25 anos que não mostram muito interesse em estudar."
- Como a IA processa nos bastidores: Filtra pela jurisdição civil e localização Madri (onde fica o TS), buscando
"pensión de alimentos","hijos mayores de edad","estudios","aprovechamiento". - Resposta que você recebe: Uma explicação do critério de "falta de aproveitamento acadêmico" e a idade limite segundo a jurisprudência do Tribunal Supremo.
-
Reclamações contra administrações locais
- Seu prompt em linguagem natural: "Quero reclamar da prefeitura porque coloquei o pé em um buraco na calçada enquanto corria. Existem sentenças em Castela e Leão em que condenaram a prefeitura por isso ou costumam culpar o pedestre?"
- Como a IA processa nos bastidores: Busca na ordem Contencioso-Administrativo da região por
"responsabilidad patrimonial","caída peatón","socavón"ou"bache", analisando a concorrência de culpas. - Resposta que você recebe: Uma análise da probabilidade de sucesso com base em se os juízes locais consideram que o pedestre deveria ter sido mais diligente ou se a falta de manutenção da prefeitura é a causa exclusiva.
-
Resumir e explicar sentenças de grande repercussão
- Seu prompt em linguagem natural: "Ouvi dizer que há uma sentença famosa do Supremo sobre os juros abusivos dos cartões revolving da Wizink. Busque-a, leia-a inteira e me explique em dois parágrafos simples o que o tribunal decidiu sobre a porcentagem de juros."
- Como a IA processa nos bastidores: Localiza a sentença-chave (ex.: usando palavras-chave como
"Wizink","revolving","usura"), baixa o PDF completo usandoobtener_texto_resolucion, lê os fundamentos de direito e redige o resumo executivo. - Resposta que você recebe: Uma explicação simples, livre de tecnicismos complexos, sobre o limite a partir do qual o juro é considerado usurário e nulo.
Testes e Verificação
O projeto inclui scripts no diretório temporário ou de rascunho para testes rápidos de desenvolvimento:
- Teste de Scraper Direto:
test_scraper.pybusca um termo e tenta baixar o primeiro PDF. - Teste de API REST e Integração SSE:
test_api.pyverifica o status, realiza uma consulta e executa o download do PDF através do servidor FastAPI em execução. - Teste de Cliente MCP Stdio:
test_mcp_stdio_client.pyinicia o servidor MCP em um subprocesso e realiza as chamadas JSON-RPC oficiais simulando um cliente real.
Aviso de Isenção de Responsabilidade e Termos de Uso
[!WARNING] LEIA ATENTAMENTE ANTES DE USAR A FERRAMENTA
Este software é um utilitário de automação de código aberto fornecido exclusivamente para fins educacionais, de pesquisa acadêmica e para consultas individuais de caráter privado.
1. Cumprimento das Normativas do CENDOJ e CGPJ
O site do portal do CENDOJ (Centro de Documentação Judicial do Conselho Geral do Poder Judiciário da Espanha) estabelece termos de acesso específicos. Ao usar este software, o usuário assume toda a responsabilidade de cumprir tais políticas:
- Uso Particular: O acesso ao buscador do CENDOJ é restrito exclusivamente a consultas individuais e particulares de caráter não comercial.
- Proibição de Download em Massa e Fins Comerciais: De acordo com as diretrizes do CGPJ, é terminantemente proibido o uso de ferramentas automáticas para extração em massa de jurisprudência (web scraping em massa) e a exploração comercial de sua base de dados. Se você precisar reutilizar os dados para fins comerciais ou em massa, deve solicitar uma licença formal de reutilização diretamente ao CENDOJ.
- Frequência de Consultas: Recomenda-se fortemente usar esta ferramenta com moderação e pausas razoáveis para não sobrecarregar os servidores públicos do CENDOJ nem violar seus limites razoáveis de serviço.
2. Proteção de Dados Pessoais (RGPD / LOPDGDD)
As sentenças publicadas pelo CENDOJ foram previamente submetidas a um processo de anonimização/seudonimização. O Regulamento Geral de Proteção de Dados (RGPD) e a Lei Orgânica 3/2018 (LOPDGDD) proíbem estritamente o uso dessas informações para a reidentificação de pessoas físicas envolvidas nos procedimentos judiciais. O usuário final é o único responsável legal pelo tratamento que der aos textos extraídos por este software.
3. Isenção de Responsabilidade Legal
Os desenvolvedores e contribuidores deste projeto:
- Não se responsabilizam pelo uso indevido, fraudulento ou ilegal que o usuário final possa fazer desta API ou servidor MCP.
- Não assumem nenhuma responsabilidade diante de possíveis bloqueios de endereços IP, ações legais, advertências judiciais ou qualquer medida que o CGPJ pudesse adotar contra o usuário final como consequência do uso deste software.
- Fornecem a ferramenta "tal qual" (as is), sem garantias de qualquer tipo quanto à sua continuidade, disponibilidade técnica ou exatidão dos resultados retornados se o site do CENDOJ modificar sua estrutura ou design.