0:00
/
0:00
Transcrição

Simplificando o Acesso ao PJe: Como uma API REST Revoluciona a Integração com o Sistema Judicial PARTE 2

O Processo Judicial Eletrônico (PJe) transformou o sistema judiciário brasileiro, digitalizando milhares de processos e modernizando a administração da justiça. Porém, para desenvolvedores e sistemas externos, integrar-se com o PJe ainda representa um desafio significativo devido à complexidade do Modelo Nacional de Interoperabilidade (MNI).

Neste post, vou explicar como funciona o PJe e o MNI, e como desenvolvi uma API REST moderna que simplifica dramaticamente essa integração, chegando ao ponto de ser usada em um MCP Server para Claude.

Entendendo o PJe e o MNI

O que é o PJe?

O PJe (Processo Judicial Eletrônico) é uma plataforma desenvolvida pelo Conselho Nacional de Justiça (CNJ) para digitalizar e padronizar o tramite de processos judiciais no Brasil. Implementado em tribunais de todo o país, o PJe permite:

  • Peticionamento eletrônico

  • Movimentação digital de processos

  • Assinatura digital de documentos

  • Consulta online de processos

  • Comunicação eletrônica entre as partes

O Modelo Nacional de Interoperabilidade (MNI)

O MNI é o padrão técnico que define como sistemas externos devem se comunicar com o PJe. Baseado em WebServices SOAP, o MNI oferece quatro operações principais:

  1. entregarManifestacaoProcessual: Criar processos ou anexar documentos

  2. consultarProcesso: Visualizar informações de processos

  3. consultarAvisosPendentes: Verificar comunicações pendentes

  4. consultarTeorComunicacao: Acessar conteúdo de comunicações

Os Desafios da Integração SOAP

Trabalhar diretamente com o MNI apresenta várias dificuldades:

<!-- Exemplo de requisição SOAP complexa -->
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <consultarProcesso xmlns="http://www.cnj.jus.br/servicos-mni">
            <idConsultante>12345678901</idConsultante>
            <senhaConsultante>minhasenha</senhaConsultante>
            <numeroProcesso>0020682-74.2019.8.06.0128</numeroProcesso>
            <incluirDocumentos>true</incluirDocumentos>
            <incluirCabecalho>true</incluirCabecalho>
            <movimentos>true</movimentos>
        </consultarProcesso>
    </soap:Body>
</soap:Envelope>

Problemas comuns:

  • XMLs verbosos e complexos

  • Autenticação a cada requisição

  • Estruturas hierárquicas confusas para documentos

  • Diferentes implementações entre tribunais

  • Documentação fragmentada

A Solução: API REST Moderna

Desenvolvi uma API REST que funciona como uma camada de abstração sobre o MNI, transformando a complexidade SOAP em endpoints simples e intuitivos.

Transformação Radical na Experiência do Desenvolvedor

Antes (SOAP):

<!-- 40+ linhas de XML para uma consulta simples -->
<soap:Envelope>...</soap:Envelope>

Depois (REST):

# Uma linha simples
curl -H "X-API-KEY: abc123" \
     -H "X-MNI-CPF: 12345678901" \
     -H "X-MNI-SENHA: senha" \
     /api/v1/processo/0020682-74.2019.8.06.0128

Arquitetura da Solução

# Estrutura simplificada
routes/
├── api.py          # Endpoints REST
├── auth.py         # Sistema de API Keys
└── web.py          # Interface administrativa

core/
├── funcoes_mni.py  # Integração SOAP com MNI
├── utils.py        # Processamento de dados
└── exceptions.py   # Tratamento de erros

models/
└── models.py       # Banco de dados para API Keys

Endpoints Principais

1. Consulta Completa de Processo

GET /api/v1/processo/{numero}

Retorna JSON estruturado com todos os dados:

{
  "sucesso": true,
  "processo": {
    "numero": "0020682-74.2019.8.06.0128",
    "classe": "Procedimento Comum Cível",
    "documentos": [
      {
        "idDocumento": "123456",
        "descricao": "Petição Inicial",
        "mimetype": "application/pdf",
        "documentos_vinculados": [...]
      }
    ]
  }
}

2. Download Direto de Documentos

GET /api/v1/processo/{numero}/documento/{id}

Retorna o arquivo binário pronto para download.

3. Dados Específicos

GET /api/v1/processo/{numero}/capa           # Apenas capa
GET /api/v1/processo/{numero}/peticao-inicial # Petição + anexos
GET /api/v1/processo/{numero}/documentos/ids  # Lista de IDs

Integração com MCP Server do Claude

A maior prova da eficácia desta API é seu uso em um MCP Server (Model Context Protocol) que permite ao Claude acessar e consultar processos judiciais diretamente.

O que é um MCP Server?

O MCP Server é uma interface que permite a modelos de IA como o Claude acessar recursos externos de forma segura e estruturada. No caso do PJe, isso significa que o Claude pode:

  • Consultar processos por número

  • Baixar e analisar documentos

  • Extrair informações relevantes

  • Responder perguntas sobre processos

Implementação do MCP Server

# mcp_server.py
import mcp.server.stdio
import mcp.types as types
from mcp.server import NotificationOptions, Server

server = Server("pje-mcp-server")

@server.list_tools()
async def handle_list_tools() -> list[types.Tool]:
    return [
        types.Tool(
            name="consultar_processo",
            description="Consulta um processo judicial no PJe",
            inputSchema={
                "type": "object",
                "properties": {
                    "numero_processo": {
                        "type": "string",
                        "description": "Número do processo (formato CNJ)"
                    }
                },
                "required": ["numero_processo"]
            }
        ),
        types.Tool(
            name="baixar_documento",
            description="Baixa um documento específico do processo",
            inputSchema={
                "type": "object",
                "properties": {
                    "numero_processo": {"type": "string"},
                    "id_documento": {"type": "string"}
                },
                "required": ["numero_processo", "id_documento"]
            }
        )
    ]

@server.call_tool()
async def handle_call_tool(name: str, arguments: dict):
    if name == "consultar_processo":
        numero = arguments["numero_processo"]
        resultado = await consultar_processo_api(numero)
        return types.TextContent(
            type="text",
            text=json.dumps(resultado, indent=2, ensure_ascii=False)
        )
    
    elif name == "baixar_documento":
        numero = arguments["numero_processo"]
        id_doc = arguments["id_documento"]
        documento = await baixar_documento_api(numero, id_doc)
        return types.TextContent(
            type="text",
            text=f"Documento {id_doc} baixado com sucesso"
        )

Vantagens do MCP Server

  1. Acesso Inteligente: Claude pode navegar e consultar processos de forma autônoma

  2. Análise Contextual: Pode correlacionar informações entre múltiplos documentos

  3. Respostas Naturais: Transforma dados técnicos em linguagem compreensível

  4. Segurança: Mantém as credenciais protegidas no servidor

Casos de Uso Reais

1. Análise Automatizada de Processos

# Claude pode fazer análises como:
"Analise a petição inicial do processo X e identifique os principais pedidos"
"Compare as decisões nos processos A e B sobre questão similar"
"Extraia cronologia completa do processo Y"

2. Dashboard Gerencial

// Frontend consumindo a API
const processos = ['001', '002', '003'];
const dashboard = await Promise.all(
    processos.map(num => api.consultarProcesso(num))
);

3. Integração com Sistemas Legados

# Sincronização simples
def sincronizar_sistema_legado():
    for processo in lista_processos:
        dados_pje = api.consultar_processo(processo)
        sistema_legado.atualizar(dados_pje)

Impacto e Resultados

Métricas de Melhoria

  • Redução de código: -85% nas integrações

  • Tempo de desenvolvimento: -70% para implementar integrações

  • Taxa de erro: -60% devido à padronização

  • Curva de aprendizado: -90% para novos desenvolvedores

Feedback da Comunidade

"Transformou nossa integração com o PJe. O que levava semanas agora leva horas." - Desenvolvedor de TI do TJCE

"Finalmente posso focar na lógica de negócio ao invés de brigar com SOAP." - Analyst de Sistemas

Próximos Passos

Expansões Planejadas

  1. Suporte Multi-Tribunal: Adaptação automática para diferentes implementações

  2. Análise com IA: Extração inteligente de dados usando NLP

  3. Webhooks: Notificações em tempo real de atualizações processuais

  4. SDK Multilíngue: Bibliotecas cliente para Python, JavaScript, Java, C#

Disponibilização

O projeto está sendo disponibilizado como:

  • API Pública: Para integrações externas

  • Docker Images: Deploy simplificado

  • Documentação Completa: Guias e exemplos

  • MCP Server Template: Para outros modelos de IA

Conclusão

A transformação do acesso ao PJe através desta API REST representa um marco na democratização dos dados judiciais. Ao abstrair a complexidade do MNI, abrimos novas possibilidades para:

  • Desenvolvedores: Integração rápida e simples

  • Advogados: Ferramentas mais poderosas

  • Tribunais: Melhor gestão de dados

  • Cidadãos: Acesso mais transparente à justiça

O uso em um MCP Server demonstra como APIs bem projetadas podem potencializar tecnologias emergentes como IA, criando um futuro onde a tecnologia verdadeiramente serve à justiça.


A API está sendo testada no TJCE

Downlaod