Content
<h1 align="center">
<img alt="MCP TJPI-Jurisprudência" src="https://raw.githubusercontent.com/fxbarros/MCP-TJPI-Jurisprudencia/main/docs/assets/banner.svg?sanitize=true&v=marca">
<br>
<small>Pesquise acórdãos em linguagem natural. Cite com verificação literal.</small>
</h1>
<p align="center">
<img alt="Python" src="https://img.shields.io/badge/python-3.12+-3776AB?logo=python&logoColor=white">
<img alt="Testes" src="https://img.shields.io/badge/testes-10%20%E2%9C%93%20offline-brightgreen">
<img alt="MCP" src="https://img.shields.io/badge/MCP-Claude%20Desktop-d97757">
<img alt="Sem login" src="https://img.shields.io/badge/TJ--PI-sem%20login%20%C2%B7%20sem%20headless-8b0000">
<img alt="Licença" src="https://img.shields.io/badge/licen%C3%A7a-MIT-blue">
</p>
<p align="center">
<a href="#-o-que-faz"><strong>O que faz</strong></a>
·
<a href="#%EF%B8%8F-as-3-ferramentas"><strong>Ferramentas</strong></a>
·
<a href="#-anti-alucina%C3%A7%C3%A3o"><strong>Anti-alucinação</strong></a>
·
<a href="#-instala%C3%A7%C3%A3o"><strong>Instalação</strong></a>
·
<a href="#-testes"><strong>Testes</strong></a>
·
<a href="#-limita%C3%A7%C3%B5es-conhecidas"><strong>Limitações</strong></a>
</p>
Servidor [MCP](https://modelcontextprotocol.io) que expõe a [jurisprudência oficial do Tribunal de Justiça do Piauí](https://jurisprudencia.tjpi.jus.br/) ao Claude Desktop: pesquisa de acórdãos em linguagem natural, leitura do inteiro teor e **citação ABNT pronta para colar na peça** — com verificação literal de cada trecho citado.
Sem login, sem Cloudflare, sem browser headless: o portal do TJ-PI é um site Rails público server-rendered, então `httpx + BeautifulSoup` bastam. Rápido, leve e sem fricção.
## ⚖️ O que faz
```
Você: Busque 5 jurisprudências do TJ-PI sobre auto de infração ambiental em APP.
Claude: [buscar_jurisprudencia] → 5 resultados com nº CNJ, ementa e URL.
Você: A do desembargador Sebastião sobre competência supletiva é a melhor. Cita ABNT?
Claude: [ler_decisao] →
(TJ-PI - AGRAVO INTERNO CÍVEL: 0757817-66.2024.8.18.0000,
Relator: SEBASTIAO RIBEIRO MARTINS,
5ª Câmara de Direito Público,
Data de Publicação: 05/02/2025)
Você: Confere se esse trecho está mesmo no acórdão antes de eu citar.
Claude: [verificar_citacao] → valido: True ✓
```
## 🛠️ As 3 ferramentas
| Ferramenta | O que faz |
|---|---|
| `buscar_jurisprudencia(query, limite, page)` | pesquisa com os [conectivos do site](https://jurisprudencia.tjpi.jus.br/jurisprudences/conectives) em português — `e`, `ou` (entre parênteses), `nao`, `"frase exata"`. Devolve título, nº CNJ formatado, tipo, assunto, publicação, preview da ementa, URL e o **total real** de resultados no servidor |
| `ler_decisao(url_or_id)` | metadados formais completos (relator, órgão colegiado, competência, partes...), ementa limpa, `inteiro_teor`, citação oficial do site e `citacao_abnt` montada. Aceita URL completa, caminho ou só o ID |
| `verificar_citacao(url_or_id, trecho)` | confere se o trecho aparece **literalmente** no inteiro teor — tolerante a acentos/caixa/espaços, implacável com paráfrase, omissão ou inversão de palavras |
## 🛡️ Anti-alucinação
Este servidor foi desenhado para uso forense real, onde citação inventada custa caro:
- **Ementas no formato CNJ**: o parser acompanha o padrão da Recomendação CNJ 154/2024 (sem rótulo "Ementa:"), adotado pelo TJ-PI desde 2025.
- **Dedup**: o portal do TJ-PI devolve a mesma decisão sob IDs diferentes — o servidor deduplica e ainda expõe o `total_no_servidor` para você saber o universo real.
- **Preview ≠ fonte**: a ementa da listagem pode vir truncada; a docstring instrui o modelo a sempre chamar `ler_decisao` antes de citar.
- **`verificar_citacao` como portão final**: citação direta entre aspas só entra na peça se conferir literalmente no `inteiro_teor`.
## 📦 Instalação
```bash
git clone https://github.com/fxbarros/MCP-TJPI-Jurisprudencia.git jurisprudencia-tjpi-mcp
cd jurisprudencia-tjpi-mcp
uv sync
```
Registro no Claude Desktop — `~/Library/Application Support/Claude/claude_desktop_config.json` (preservando outros servidores que já existirem):
```json
{
"mcpServers": {
"jurisprudencia-tjpi": {
"command": "/Users/SEU_USUARIO_MAC/.local/bin/uv",
"args": [
"--directory",
"/Users/SEU_USUARIO_MAC/Desenvolvimento/jurisprudencia-tjpi-mcp",
"run",
"jurisprudencia-tjpi-mcp"
]
}
}
}
```
> ⚠️ **Substitua `SEU_USUARIO_MAC` pelo nome do seu usuário no macOS** (descubra com `whoami` no Terminal) — o placeholder é da máquina de quem instala, não do GitHub.
>
> ⚠️ Use o caminho **absoluto** do `uv` (confirme com `which uv` — pode ser `/opt/homebrew/bin/uv`). O Claude Desktop não herda o `$PATH` do shell.
Reinicie o Claude Desktop (Cmd+Q e abra de novo) e peça: *"Busque jurisprudência do TJ-PI sobre dano moral por negativação indevida"*.
## ✅ Testes
```bash
uv run pytest
```
10 testes, 100% offline: o parser é exercitado contra fixtures de HTML **real** do TJ-PI em `tests/fixtures/` — nenhuma requisição de rede. Diagnóstico verboso com `TJPI_DEBUG=1`.
## 🔍 Limitações conhecidas
- **Preview da listagem trunca a ementa** em algumas decisões (o servidor do TJ-PI corta antes de o texto começar). Quando ocorre, devolvemos o cabeçalho do acórdão como fallback — a ementa real vem via `ler_decisao`.
- **Filtros avançados não implementados**: hoje só `q` e `page`; classe, relator e data ficam para o futuro (PR welcome).
## ⚖️ Licença e autoria
[MIT](LICENSE). Construído por [Fábio Ximenes Barros](https://github.com/fxbarros). Sem afiliação com o TJ-PI — usa apenas o portal público de jurisprudência.
<p align="center"><sub>Arte do banner: original — marca dos projetos MCP do autor.</sub></p>
MCP Config
Below is the configuration for this MCP Server. You can copy it directly to Cursor or other MCP clients.
mcp.json
Connection Info
You Might Also Like
Filesystem
Node.js MCP Server for filesystem operations with dynamic access control.
Fetch
Retrieve and process content from web pages by converting HTML into markdown format.
Agent-Reach
Give your AI agent eyes to see the entire internet. Read & search Twitter,...
Context 7
Context7 MCP provides up-to-date code documentation for any prompt.
context7-mcp
Context7 MCP Server provides natural language access to documentation for...
mempalace
The highest-scoring AI memory system ever benchmarked. And it's free.