PluginBench
MCP Server
Active
Apache-2.0

LibreJustice MCP Server

fr.librejustice/librejustice

Free search engine for French and European case law, legal texts, and public notices via MCP.

What is the LibreJustice MCP server?

LibreJustice is a free, open-source search engine for French-language and European law, providing access to ~3.8 million court decisions and ~3.9 million legal articles through an MCP server. It consolidates case law from French administrative and judicial courts, legal codes and statutes, EU law, and public procurement notices in a single searchable database with plain-language search, citation graphs, and AI summaries.

LibreJustice unifies fragmented French legal databases into one searchable corpus. It offers hybrid lexical and semantic search across court decisions (Conseil d'État, Cour de cassation, ECHR, CJEU, etc.), consolidated legal texts with historical versions, public procurement notices, and a directory of lawyers and courts. The MCP server lets AI assistants query decisions and legal norms directly, with OAuth 2.1 authentication and no API key required.

How to install LibreJustice

Copy-paste configuration for popular MCP clients.

transport: http
Config generated by PluginBench — verify against the source before use.
~/.cursor/mcp.json
{
  "mcpServers": {
    "librejustice": {
      "url": "https://librejustice.fr/mcp"
    }
  }
}

Tools & capabilities

Tools this server exposes to the agent.

  • search_decisions — Search French and European case law with filters by court, date, outcome, and cited articles. Supports plain-language queries with AI reranking and similar-decision suggestions.
  • get_decision — Retrieve a full court decision by ID, including AI summaries and citation metadata.
  • search_norms — Search legal texts (codes, statutes, treaties, EU law, collective agreements) across all consolidated versions.
  • get_norm — Retrieve a specific legal article or norm by code and article number, optionally at a specific historical date.

Use cases

  • Search French case law by keyword, court, date range, and cited articles to find relevant precedents and judicial trends.
  • Retrieve the exact text of French legal codes and statutes as they stood on any given date, with full citation history.
  • Find EU regulations, ECHR decisions, and bilateral treaties integrated with French law in one search.
  • Discover public procurement opportunities from BOAMP and buyer platforms with submission deadlines and deduplication.
  • Analyze citation networks: trace which articles a decision cites and which decisions cite a given article.

LibreJustice MCP server FAQ

What is LibreJustice?

LibreJustice is a free, open-source search engine consolidating ~3.8 million French and European court decisions with ~3.9 million legal articles. It provides plain-language search, citation graphs, and AI summaries across judicial and administrative courts, legal codes, EU law, and public notices.

Is LibreJustice free?

Yes. LibreJustice is completely free and open source (Apache-2.0 license). The MCP server at https://librejustice.fr/mcp requires no API key; it uses OAuth 2.1 with dynamic client registration.

How do I use LibreJustice in Claude or Cursor?

On Claude Code, run `/plugin marketplace add librejustice/librejustice` then `/plugin install librejustice@librejustice`. On claude.ai, find LibreJustice in the connector directory and authorize via OAuth. For other AI assistants, add a custom connector pointing to https://librejustice.fr/mcp.

What authentication does the MCP server require?

OAuth 2.1 with dynamic client registration. No API key configuration needed. Simply authorize once and the MCP server handles authentication automatically.

What legal sources does LibreJustice cover?

French administrative and judicial courts (Conseil d'État, Cour de cassation, cours d'appel, first-instance courts), Conseil constitutionnel, CNIL, CNDA, ECHR, CJEU, French legal codes and statutes (consolidated by date), EU law, treaties, collective agreements, and public procurement notices from BOAMP.

Can I use LibreJustice from my own code?

Yes. LibreJustice provides a REST API (OpenAPI 3.1) at https://librejustice.fr/api with five routes. Create a free account, generate an API key from your profile, and authenticate with `Authorization: Bearer ljk_your_key`.

README (reference)

Source of truth, from the repository.

LibreJustice

librejustice.fr: a free search engine for French-language and European law, plus current public notices. It links case law from France's administrative and judicial courts to consolidated legal texts and makes them searchable in plain language on the web and through MCP.

Free and open source. ~3.8 million decisions and ~3.9 million legal articles in one database, linked article by article, resynchronised daily. That is the whole point: texts and case law live together, so there is no second server to plug in for the codes and no third one for the citation graph.

What you search

  • Case law: Conseil d'État, Cour de cassation, cours d'appel, administrative and judicial first-instance courts, Conseil constitutionnel, CNIL, CNDA (publicly released decisions only), Tribunal des conflits, ECHR, CJEU. Filters by court, date, outcome and cited articles.
  • Legal texts: codes and statutes as they stood on any date (consolidated versions with per-article history), the full Journal officiel, EU law, treaties and bilateral accords, collective agreements, BOFiP, circulaires, and the codes of 59 foreign countries.
  • Public notices: open public procurement opportunities from BOAMP and buyer platforms, deduplicated with submission links and deadlines.
  • Directory: lawyers, companies and courts, linked to their litigation.

Corpus refreshed daily from open sources (Judilibre, DILA/Légifrance, EUR-Lex...).

What the official sources do not offer

Public databases are silos, each with a search engine bounded by its own fonds (Judilibre covers the judicial courts only; the administrative open data searches CE/CAA/TA by keyword, court and date; Légifrance holds the texts). LibreJustice consolidates them and adds the missing layer:

  • plain-language search (hybrid lexical + semantic) with AI reranking, dynamic facets and similar decisions;
  • the graph: citations extracted and resolved, from a decision to the exact articles it cites at the right version, and from an article back to the decisions that cite it;
  • cross-source deduplication (one decision, one page) and recovery of decisions missing from the official channels;
  • AI summaries per decision, always kept distinct from verbatim excerpts;
  • a remote MCP endpoint for AI assistants.

Using LibreJustice from an AI assistant

The public MCP server is https://librejustice.fr/mcp (OAuth 2.1 with dynamic client registration: no API key to configure). Four tools: search_decisions, get_decision, search_norms, get_norm.

With Claude Code, the plugin installs the connector and the usage skills:

/plugin marketplace add librejustice/librejustice
/plugin install librejustice@librejustice

The skills alone (without the MCP connector) install into any compatible agent through skills:

npx skills add librejustice/librejustice

On claude.ai, LibreJustice is listed in the connector directory. One click, then the OAuth authorisation. With ChatGPT, Le Chat or Perplexity, add a custom connector pointing at https://librejustice.fr/mcp.

Using LibreJustice from your own code

The same corpus in REST, described by openapi.json (OpenAPI 3.1). The key is free: create an account, then a key from your profile. Guide at librejustice.fr/api-guide.

curl -H 'Authorization: Bearer ljk_your_key' \
  'https://librejustice.fr/api/search?q=trouble+anormal+de+voisinage&limit=3'

Five routes: /api/search, /api/search-textes, /api/decision/{id}, /api/texte/{code}/{article} and the same with a trailing /{date} for the version in force that day.

Stack

A single-server node, Postgres + ParadeDB + VectorChord (hybrid BM25 + vector search), API and front end in Rust.

A pure Rust Cargo workspace, split in two roots:

  • packages/ libraries:
    • lj-core pure core: the decision model and its normalisation.
    • lj-parse source parsers into the decision model.
    • lj-norm referential of the legal texts: article keys, aliases, applicability.
    • lj-extract field and citation extraction from decisions.
    • lj-sources source I/O (Judilibre JSON, opendata ZIP/XML).
    • lj-store Postgres access (tokio-postgres + deadpool) and migrations.
    • lj-llm embedding backends, cache, quantisation, Mistral client (chat/OCR).
    • lj-dtos api to web contracts (serde).
    • lj-telemetry tracing and OTLP export.
    • lj-api API layer (Axum + MCP rmcp + OAuth).
    • lj-web Leptos front end (SSR + WASM hydration), Tailwind.
  • apps/ shippable binaries:
    • lj-server single deployment: API + MCP/OAuth + SSR.
    • lj-ingest ingest CLI and cron runner.

Build and dev

The Rust toolchain is pinned by rust-toolchain.toml. Tasks run through mise:

mise run test      # rustfmt --check + clippy -D warnings + cargo test --workspace
mise run dev       # merged lj-server (cargo leptos watch, :3000)

For a local database: mise run dbs. The task prepares the Postgres state under LIBREJUSTICE_STATE_DIR, owning the data directory and copying the configuration mounted by the container, before starting it.

Deployment

Single server through podman compose (infra/docker-compose.yml): Postgres (ParadeDB + VectorChord), the merged lj-server binary, a caddy front end and the ingest cron. Fill in .env (see .env.example), then:

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 serves the API, MCP/OAuth, SSR and the assets. It listens in clear; caddy holds :443 and terminates TLS, so the socket stays bound when the application container is recreated.

The shipped Postgres configuration (infra/pg-conf/) carries what the application requires (extensions, ParadeDB settings, compression) sized for a development machine. A production instance raises shared_buffers and effective_cache_size to match its hardware.

Licence

Apache-2.0.

Related MCP servers

Sworn (certified) translation in France: instant firm price, 100+ languages, order tracking.

Investissement locatif en France : annonces, rendement, cash-flow, données INSEE et marché par ville

Frais de notaire en France : DMTO par département, émoluments réglementés, CSI et débours.

Host AI-generated single-file HTML apps with JSON persistence. No signup.

Turn long videos into vertical TikTok clips, generate AI videos and images, publish to TikTok.

Check one French company by name or SIREN and get its Nogogo A-E reliability grade for free.