jusbrasil-mcp
<h1 align="center">
<img alt="MCP-Jusbrasil" src="https://raw.githubusercontent.com/fxbarros/MCP-Jusbrasil/main/docs/assets/banner.svg?sanitize=true">
<br>
<small>Jurisprudência em linguagem natural, inteiro teor e dossiê pronto para a peça</small>
</h1>
<p align="center">
<img alt="Python" src="https://img.shields.io/badge/python-3.12+-3776AB?logo=python&logoColor=white">
<img alt="MCP" src="https://img.shields.io/badge/MCP-Claude%20Desktop-d97757">
<img alt="Scrapling" src="https://img.shields.io/badge/Cloudflare-headless%20puro%20(Scrapling)-8b0000">
<img alt="Credenciais" src="https://img.shields.io/badge/credenciais-s%C3%B3%20no%20cofre%20do%20sistema-black">
<img alt="Licença" src="https://img.shields.io/badge/licen%C3%A7a-MIT-blue">
</p>
<p align="center">
<a href="#%EF%B8%8F-as-5-ferramentas"><strong>Ferramentas</strong></a>
·
<a href="#%EF%B8%8F-como-funciona"><strong>Como funciona</strong></a>
·
<a href="#-instala%C3%A7%C3%A3o"><strong>Instalação</strong></a>
·
<a href="#-uso-no-claude-desktop"><strong>Uso</strong></a>
·
<a href="#-limita%C3%A7%C3%B5es"><strong>Limitações</strong></a>
·
<a href="#%EF%B8%8F-aviso"><strong>Aviso</strong></a>
</p>
Servidor [MCP](https://modelcontextprotocol.io) para pesquisar **jurisprudência no [JusBrasil](https://www.jusbrasil.com.br)** em linguagem natural, ler o **inteiro teor** das decisões e gerar **citações e dossiês `.docx`** prontos para uso em peças jurídicas. Pensado para o Claude Desktop.
## 🛠️ As 5 ferramentas
| Ferramenta | O que faz |
|---|---|
| `buscar_jurisprudencia(query, limite, tribunal, tipo, periodo, ordenacao)` | busca com filtros: tribunal (`STJ`, `STF`, `TJs`, `TRFs`…), tipo (`acordao`, `sumula`, `decisao`, `sentenca`, `despacho`), período (`7dias`/`30dias`/`365dias`) e ordenação (`data`/`relevancia`) |
| `buscar_sumulas(query, limite, tribunal)` | busca dedicada de súmulas |
| `ler_decisao(url)` | metadados + **ementa** + `citacao_abnt` + `link_verificacao` |
| `ler_inteiro_teor(url)` | **texto integral** do acórdão (relatório + voto + acórdão) — exige login |
| `compilar_dossie(urls, incluir_inteiro_teor, titulo, caminho)` | reúne várias decisões/súmulas num único **`.docx`** (citação + ementa + link; inteiro teor opcional) |
## ⚙️ Como funciona
- Coleta via [**Scrapling**](https://github.com/D4Vinci/Scrapling) `StealthyFetcher` — atravessa o Cloudflare em **headless puro** (sem janela).
- **Login automático** com as suas credenciais, guardadas **apenas no cofre do sistema** (Keychain no macOS, Gerenciador de Credenciais no Windows), com sessão persistente. O login só é necessário para o inteiro teor e para desmascarar números/metadados; sem credenciais, opera anônimo (com dados parciais).
- Parsing a partir do JSON estruturado (`__NEXT_DATA__` / Apollo) embutido nas páginas — não de HTML frágil.
- Citação por tribunal: formato convencional do STJ e genérico para TJs/TRFs/TST.
## 📦 Instalação
Requer [uv](https://docs.astral.sh/uv/), Python 3.12+ e Google Chrome instalado.
```bash
git clone https://github.com/fxbarros/MCP-Jusbrasil.git mcp-jusbrasil
cd mcp-jusbrasil
uv sync
uv run scrapling install # navegador usado pelo Scrapling
uv run python setup_credenciais.py # grava e-mail/senha do JusBrasil no cofre
```
As credenciais ficam **somente no cofre de credenciais do sistema** (serviço `mcp-jusbrasil`) — nunca em arquivo. O `keyring` escolhe o cofre certo automaticamente em macOS e Windows; o mesmo `setup_credenciais.py` serve para os dois.
## 💬 Uso no Claude Desktop
```json
{
"mcpServers": {
"jusbrasil": {
"command": "uv",
"args": ["run", "--directory", "/caminho/para/mcp-jusbrasil", "jusbrasil-mcp"]
}
}
}
```
| Variável | Padrão | Descrição |
|---|---|---|
| `JUSBRASIL_TIMEOUT_MS` | `60000` | Timeout por navegação (ms) |
Roda **sempre headless** (sem janela). Exemplo de conversa:
```
Você: Busque acórdãos do STJ dos últimos 30 dias sobre penhora de bem de família.
Claude: [buscar_jurisprudencia] → resultados com citação e link.
Você: Lê o inteiro teor do segundo e monta um dossiê .docx com os três melhores.
Claude: [ler_inteiro_teor] → [compilar_dossie] → dossie.docx salvo.
```
## 🔍 Limitações
- O filtro de **tribunal** aceita corte específica (`TJ-PI`, `TJSP`, `TRF1`) ou grupo (`TJs`, `TRFs`, `TRTs`), além dos superiores (`STJ`, `STF`…), com vários separados por vírgula.
- O filtro de **data** é por período relativo (últimos N dias), não por intervalo exato.
- O **inteiro teor** nem sempre existe para toda decisão.
- Os filtros dependem dos parâmetros atuais do site e podem quebrar se o JusBrasil mudar.
## ⚠️ Aviso
O JusBrasil é um **agregador privado**, não é fonte oficial. Para citação formal, confira sempre o texto no site oficial do tribunal. As ferramentas incluem avisos anti-alucinação: campos não extraídos voltam nulos e **não devem ser preenchidos por inferência**. Respeite os termos de uso do site.
## ⚖️ Licença
[MIT](LICENSE). Construído por [Fábio Ximenes Barros](https://github.com/fxbarros).
<p align="center"><sub>Arte do banner: original — marca dos projetos MCP do autor.</sub></p>
TDQS
Scored across 5 tools
The tools are mostly distinct, with buscar_jurisprudencia and buscar_sumulas sharing similar but clarified purposes. The two reading tools (ler_decisao and ler_inteiro_teor) could cause confusion, but the descriptions clearly differentiate metadata extraction from full text retrieval.
All tool names follow a consistent verb_noun pattern in Brazilian Portuguese (e.g., buscar_jurisprudencia, compilar_dossie), making it easy to infer each tool's purpose.
With 5 tools, the server is well-scoped for legal research, covering searching, reading decisions, and compiling dossiers. The count is neither too few nor excessive.
The tool set covers the core workflow of searching, reading, and compiling jurisprudence. Minor gaps exist, such as lack of support for specific court filters and reliance on external login for full text, but the overall functionality is sufficient for its stated purpose.