LibreJustice

fr.librejusticePublished by librejustice.frOfficial publisherv1.18.0Updated Nov 4, 2026

Search French-language and European case law and French legal texts (codes, statutes, treaties).

VerifiedStreamable HTTPWeb executableWeb Search & ScrapingKnowledge & Memory

Overview

AI-generated overview

Remote MCP server for LibreJustice that lets an assistant search French and European case law and French legal texts, with citations linked between them.

What you can do
  • Search case law from French administrative and judicial courts, the Conseil constitutionnel, ECHR and CJEU, with filters by court, date, outcome and cited articles
  • Retrieve a single decision, including AI summaries kept separate from verbatim excerpts
  • Search legal texts: codes and statutes as they stood on a given date, Journal officiel, EU law, treaties, collective agreements and foreign codes
  • Retrieve a specific article of a code, with its version history and the decisions citing it
When to use it
Useful when an assistant needs to answer French or European legal questions, find decisions on a topic, or check what a code article said on a particular date, without wiring up separate sources for texts and case law.
Requirements
Remote endpoint at librejustice.fr/mcp over streamable HTTP. OAuth 2.1 with dynamic client registration is required; no API key or environment variable is needed for the MCP connector. A compatible client that supports custom connectors or OAuth is needed.
Before you install
The connector requires an OAuth authorisation against the LibreJustice account. Results are drawn from open legal sources refreshed daily and include AI-generated summaries and reranking, so they should be checked against the verbatim text before being relied on. Searches are sent to a third-party service.

Installation

In SourceWeft

  1. Open LibreJustice in the dashboard and add it to a workspace.
  2. Connect the required credentials. They are stored privately and never shown on public pages.
  3. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/fr.librejustice%2Flibrejustice/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config. The client completes OAuth sign-in on first connect.

{
  "mcpServers": {
    "librejustice": {
      "type": "http",
      "url": "https://librejustice.fr/mcp"
    }
  }
}

README

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.

bash
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:

bash
mise run test      # rustfmt --check + clippy -D warnings + cargo test --workspacemise 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:

bash
mise run ensure-pg                                                          # Postgres state and confpodman compose -f infra/docker-compose.yml --profile prod up -d --buildpodman 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.

Source: README.md at commit ca1d060

Tools

0
This server asks you to sign in, so SourceWeft could not read its tools without an account and has not indexed them. What a connected account sees can depend on that account and its permissions.

Version history

2
  1. v1.18.0LatestSep 30, 2026
  2. v1.0.0Sep 16, 2026

Score

85% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts