LibreJustice
Servidor MCP remoto gratuito sobre jurisprudência e legislação francesa e europeia: ~3,7 milhões de decisões de ordens judiciais francesas, além do TEDH e do TJUE, e textos legais como lidos em qualquer data passada.
Documentação
LibreJustice
librejustice.fr: um mecanismo de busca gratuito para o direito francófono e europeu, além de avisos públicos atuais. Ele conecta a jurisprudência dos tribunais administrativos e judiciais da França a textos legais consolidados e os torna pesquisáveis em linguagem simples na web e por meio do MCP.
Gratuito e de código aberto. ~3,8 milhões de decisões e ~3,9 milhões de artigos legais em um único banco de dados, vinculados artigo por artigo, ressincronizados diariamente. Esse é o ponto central: textos e jurisprudência convivem juntos, então não há um segundo servidor para conectar para os códigos, nem um terceiro para o grafo de citações.
O que você pesquisa
- Jurisprudência: Conseil d'État, Cour de cassation, cours d'appel, tribunais administrativos e judiciais de primeira instância, Conseil constitutionnel, CNIL, CNDA (somente decisões divulgadas publicamente), Tribunal des conflits, TEDH, TJUE. Filtros por tribunal, data, resultado e artigos citados.
- Textos legais: códigos e estatutos como estavam em vigor em qualquer data (versões consolidadas com histórico por artigo), o Journal officiel completo, direito da UE, tratados e acordos bilaterais, convenções coletivas, BOFiP, circulares e os códigos de 59 países estrangeiros.
- Avisos públicos: oportunidades de licitações públicas abertas do BOAMP e plataformas de compradores, deduplicadas com links de submissão e prazos.
- Diretório: advogados, empresas e tribunais, vinculados aos seus litígios.
Acervo atualizado diariamente a partir de fontes abertas (Judilibre, DILA/Légifrance, EUR-Lex...).
O que as fontes oficiais não oferecem
Os bancos de dados públicos são silos, cada um com um mecanismo de busca limitado ao seu próprio acervo (Judilibre cobre apenas os tribunais judiciais; os dados abertos administrativos pesquisam CE/CAA/TA por palavra-chave, tribunal e data; Légifrance detém os textos). O LibreJustice os consolida e adiciona a camada que falta:
- busca em linguagem simples (híbrida lexical + semântica) com reclassificação por IA, facetas dinâmicas e decisões semelhantes;
- o grafo: citações extraídas e resolvidas, de uma decisão aos artigos exatos que ela cita na versão correta, e de um artigo de volta às decisões que o citam;
- deduplicação entre fontes (uma decisão, uma página) e recuperação de decisões ausentes nos canais oficiais;
- resumos por IA por decisão, sempre mantidos distintos dos trechos verbatim;
- um endpoint MCP remoto para assistentes de IA.
Usando o LibreJustice a partir de um assistente de IA
O servidor MCP público é https://librejustice.fr/mcp (OAuth 2.1 com registro dinâmico de clientes: nenhuma chave de API para configurar). Quatro ferramentas: search_decisions, get_decision, search_norms, get_norm.
Com o Claude Code, o plugin instala o conector e as habilidades de uso:
/plugin marketplace add librejustice/librejustice
/plugin install librejustice@librejustice
As habilidades sozinhas (sem o conector MCP) instalam-se em qualquer agente compatível por meio de skills:
npx skills add librejustice/librejustice
No claude.ai, o LibreJustice está listado no diretório de conectores. Um clique e, em seguida, a autorização OAuth. Com ChatGPT, Le Chat ou Perplexity, adicione um conector personalizado apontando para https://librejustice.fr/mcp.
Usando o LibreJustice a partir do seu próprio código
O mesmo acervo em REST, descrito por openapi.json (OpenAPI 3.1). A chave é gratuita: crie uma conta e, em seguida, uma chave a partir do seu perfil. Guia em librejustice.fr/api-guide.
curl -H 'Authorization: Bearer ljk_your_key' \
'https://librejustice.fr/api/search?q=trouble+anormal+de+voisinage&limit=3'
Cinco rotas: /api/search, /api/search-textes, /api/decision/{id}, /api/texte/{code}/{article} e a mesma com um /{date} final para a versão em vigor naquele dia.
Stack
Um servidor único, Postgres + ParadeDB + VectorChord (busca híbrida BM25 + vetorial), API e front end em Rust.
Um workspace Cargo puramente Rust, dividido em duas raízes:
packages/bibliotecas:lj-corenúcleo puro: o modelo de decisão e sua normalização.lj-parseparsers de fontes para o modelo de decisão.lj-normreferencial dos textos legais: chaves de artigo, aliases, aplicabilidade.lj-extractextração de campos e citações de decisões.lj-sourcesI/O de fontes (JSON do Judilibre, ZIP/XML de dados abertos).lj-storeacesso ao Postgres (tokio-postgres + deadpool) e migrações.lj-llmbackends de embeddings, cache, quantização, cliente Mistral (chat/OCR).lj-dtoscontratos de API para web (serde).lj-telemetryrastreamento e exportação OTLP.lj-apicamada de API (Axum + MCP rmcp + OAuth).lj-webfront end Leptos (SSR + hidratação WASM), Tailwind.
apps/binários distribuíveis:lj-serverimplantação única: API + MCP/OAuth + SSR.lj-ingestCLI de ingestão e runner de cron.
Build e desenvolvimento
O toolchain Rust é fixado por rust-toolchain.toml. As tarefas são executadas por meio de mise:
mise run test # rustfmt --check + clippy -D warnings + cargo test --workspace
mise run dev # merged lj-server (cargo leptos watch, :3000)
Para um banco de dados local: mise run dbs. A tarefa prepara o estado do Postgres sob LIBREJUSTICE_STATE_DIR, possuindo o diretório de dados e copiando a configuração montada pelo contêiner, antes de iniciá-lo.
Implantação
Servidor único por meio de podman compose (infra/docker-compose.yml): Postgres (ParadeDB + VectorChord), o binário mesclado lj-server, um front end caddy e o cron de ingestão. Preencha .env (veja .env.example) e, em seguida:
mise run ensure-pg # Postgres state and conf
podman compose -f infra/docker-compose.yml --profile prod up -d --build
podman compose -f infra/docker-compose.yml exec -T cron lj-ingest migrate # migrations
lj-server serve a API, MCP/OAuth, SSR e os ativos. Ele escuta em texto claro; caddy contém :443 e encerra o TLS, de modo que o socket permaneça vinculado quando o contêiner do aplicativo for recriado.
A configuração do Postgres fornecida (infra/pg-conf/) carrega o que o aplicativo exige (extensões, configurações do ParadeDB, compactação) dimensionada para uma máquina de desenvolvimento. Uma instância de produção eleva shared_buffers e effective_cache_size para corresponder ao seu hardware.