
Justicelibre
Exposes 3.3 million French court decisions and 1.5 million consolidated legal articles through 29 MCP tools covering everything from Cour de cassation to CJUE to CEDH. The killer feature is get_law_article with historical versioning so you can pull the exact text of Code Civil article 1128 as it read in 1992 versus today. Search runs BM25 ranking with authority bonuses, fan-out queries hit all 40 administrative tribunals in parallel, and cross-reference tools show which decisions cite specific articles. Runs over streamable HTTP with no auth required, making it immediately usable from Claude.ai or ChatGPT without OAuth friction. Built as an open alternative to paywalled services like Doctrine and Lexis that cost 50 to 200 euros monthly.
- GitHub stars
- 12
- tools
- 19
- transport
- HTTP
- last updated
- Oct 15, 2026
Install
From registry metadata$ npx add-mcp https://justicelibre.org/mcp --name justicelibreRun in your terminal. add-mcp asks which agents to add it to (Claude Code, Codex, Cursor and more). Add -g to install it for every project.
Review the command, arguments and environment values before installing. MCP servers run with your local permissions.
Other ways
Claude Code
$ claude mcp add --transport http justicelibre https://justicelibre.org/mcpRun in your terminal. Add --scope user to make it available in every project.
Tools
Verified live · 19 toolsVerified live against the running server on Nov 6, 2026.
search_doctrineOpinions of the CADA (access to administrative documents), decisions of the Défenseur des droits, conclusions of the CE's rapporteurs publics, BOFiP (tax guidance), Code du travail numérique, CNIL deliberations. These are NOT court decisions: an opinion does not bind the judge...4 params
Opinions of the CADA (access to administrative documents), decisions of the Défenseur des droits, conclusions of the CE's rapporteurs publics, BOFiP (tax guidance), Code du travail numérique, CNIL deliberations. These are NOT court decisions: an opinion does not bind the judge...
limitintegeroffsetintegerquery*stringsourcestringget_law_articleArticle of a French code or statute, as in force on a date (default: today). `code`: abbreviation ("CT", "cc"), name ("code du travail"), LEGITEXT or statute ("loi 91-647", "loi du 1er juillet 1901"); list: about(topic="codes"). European texts: "CEDH" (protocols: num="P1-1"),...6 params
Article of a French code or statute, as in force on a date (default: today). `code`: abbreviation ("CT", "cc"), name ("code du travail"), LEGITEXT or statute ("loi 91-647", "loi du 1er juillet 1901"); list: about(topic="codes"). European texts: "CEDH" (protocols: num="P1-1"),...
codestringdatestringfallback_currentbooleannumstringoffsetintegerviewstringsearch_decisions_citingCourt decisions that EXPLICITLY cite an article ("article 1240 du code civil", "art. L. 1152-1 du code du travail"). Does not find indirect references or citations without an article number: searching by concept is for `search`. Example: search_decisions_citing(code="CC", num=...4 params
Court decisions that EXPLICITLY cite an article ("article 1240 du code civil", "art. L. 1152-1 du code du travail"). Does not find indirect references or citations without an article number: searching by concept is for `search`. Example: search_decisions_citing(code="CC", num=...
code*stringlimitintegernum*stringsourcesvaluesearchSearches all sources (French and European case law, codes and statutes, Journal officiel, collective agreements, doctrine), expanding to legal synonyms. Entry point for an open question; for one specific court, use `search_case_law`. A citation ("Cass. soc. 11 mai 2022", an EC...7 params
Searches all sources (French and European case law, codes and statutes, Journal officiel, collective agreements, doctrine), expanding to legal synonyms. Entry point for an open question; for one specific court, use `search_case_law`. A citation ("Cass. soc. 11 mai 2022", an EC...
date_maxstringdate_minstringexpand_synonymsbooleanlimitintegerquery*stringsortstringsourcesvaluesearch_case_lawDecisions of one court or court family, by relevance or by date (latest decisions: `search_recent_admin_decisions`). Keywords in French. ECHR, CJEU: texts sometimes in English only. Example: search_case_law(query="licenciement inaptitude", court="CASS") Args: query: keywords (...10 params
Decisions of one court or court family, by relevance or by date (latest decisions: `search_recent_admin_decisions`). Keywords in French. ECHR, CJEU: texts sometimes in English only. Example: search_case_law(query="licenciement inaptitude", court="CASS") Args: query: keywords (...
courtstringcourt_namestringdate_maxstringdate_minstringlimitintegernaturestringnumero_rgstringoffsetintegerquerystringsortstringsearch_recent_admin_decisionsLatest decisions from the administrative courts' open data (daily mirror), sorted by date: what a court has just decided (by relevance: `search_case_law`). All words required (singular or plural); "in double quotes": exact form; OR/AND/NOT/NEAR in UPPERCASE between two words a...7 params
Latest decisions from the administrative courts' open data (daily mirror), sorted by date: what a court has just decided (by relevance: `search_case_law`). All words required (singular or plural); "in double quotes": exact form; OR/AND/NOT/NEAR in UPPERCASE between two words a...
courtstringdate_maxstringdate_minstringlimitintegerlimit_per_courtintegerquerystringtotal_limitintegerget_decisionFull text of a decision, by `id` or by `numero` (+ `court`). Several decisions with that number: list `decisions` (ECHR/CJEU: the one judgment is served, the rest in `autres_documents`). An administrative number alone ("2200433") is refused; CE: see `homonymes`. Also reads doc...6 params
Full text of a decision, by `id` or by `numero` (+ `court`). Several decisions with that number: list `decisions` (ECHR/CJEU: the one judgment is served, the rest in `autres_documents`). An administrative number alone ("2200433") is refused; CE: see `homonymes`. Also reads doc...
courtstringcourt_namestringidstringnaturestringnumerostringoffsetintegersearch_legislationKeyword search in French codes and statutes (LEGI), the Journal officiel (JORF), agreements (KALI) or EU law. Known article: `get_law_article`. Keywords in French. Example: search_legislation(query="harcèlement moral", code="CT") Agreement (corpus="kali"): idcc="1486" without...10 params
Keyword search in French codes and statutes (LEGI), the Journal officiel (JORF), agreements (KALI) or EU law. Known article: `get_law_article`. Keywords in French. Example: search_legislation(query="harcèlement moral", code="CT") Agreement (corpus="kali"): idcc="1486" without...
codestringcorpusstringdate_maxstringdate_minstringidccstringlimitintegernaturestringoffsetintegerquerystringtoutbooleanresolve_referenceTurns a reference into an identifier and an official link: statute or decree number ("91-647", "loi n° 78-17") → the text; identifier (LEGIARTI, LEGITEXT, JORFTEXT, CETATEXT, JURITEXT, ECLI, CELEX of a judgment or of a text, HUDOC) → URL at the source; decision citation ("Cass...3 params
Turns a reference into an identifier and an official link: statute or decree number ("91-647", "loi n° 78-17") → the text; identifier (LEGIARTI, LEGITEXT, JORFTEXT, CETATEXT, JURITEXT, ECLI, CELEX of a judgment or of a text, HUDOC) → URL at the source; decision citation ("Cass...
datestringlegitextstringreference*stringget_legislative_historyLegislative history (travaux préparatoires) of a French statute or bill (Assemblée nationale files since 2012; key dates only before). Each step of `parcours` lists its documents (bill, reports, opinions, adopted or rejected texts: number, date, authors, official URL), votes,...4 params
Legislative history (travaux préparatoires) of a French statute or bill (Assemblée nationale files since 2012; key dates only before). Each step of `parcours` lists its documents (bill, reports, opinions, adopted or rejected texts: number, date, authors, official URL), votes,...
limitintegerloistringquerystringstepsbooleansearch_directoryPublic addresses and contacts in France: courts, court registries (greffes), town halls, CCAS, prefectures, public services. Example: search_directory(query="tribunal judiciaire Dunkerque") Args: query: name, town or type of office (French); OR/AND/NOT in UPPERCASE between two...4 params
Public addresses and contacts in France: courts, court registries (greffes), town halls, CCAS, prefectures, public services. Example: search_directory(query="tribunal judiciaire Dunkerque") Args: query: name, town or type of office (French); OR/AND/NOT in UPPERCASE between two...
categoryvaluelimitintegerquery*stringsourcevalueaboutWhat JusticeLibre covers (sources, volumes, freshness, terms of use), the list of administrative courts and their codes, or the list of codes and statutes accepted by get_law_article. Example: about(topic="codes") Args: topic: service | courts | codes1 params
What JusticeLibre covers (sources, volumes, freshness, terms of use), the list of administrative courts and their codes, or the list of codes and statutes accepted by get_law_article. Example: about(topic="codes") Args: topic: service | courts | codes
topicstringdelete_account_itemPermanently deletes one object of the user's JusticeLibre account: a case file (with all its content), a saved reference, a subfolder, a note, or an AI skill proposal not yet activated (`skill`, id s_… or p_…). No recycle bin. confirm=true states the user's explicit agreement;...3 params
Permanently deletes one object of the user's JusticeLibre account: a case file (with all its content), a saved reference, a subfolder, a note, or an AI skill proposal not yet activated (`skill`, id s_… or p_…). No recycle bin. confirm=true states the user's explicit agreement;...
confirmbooleanid*stringwhat*stringfolder · element · subfolder · note · skillcheck_citationsFinds where a quoted passage comes from (paste the quotation alone, ≤ 3,000 characters, original language). Check each result against the source (link provided). Returns texts and decisions containing it, with a match % (100 = word for word, ignoring punctuation, case, accents...1 params
Finds where a quoted passage comes from (paste the quotation alone, ≤ 3,000 characters, original language). Check each result against the source (link provided). Returns texts and decisions containing it, with a match % (100 = word for word, ignoring punctuation, case, accents...
text*stringget_account_itemReads one object of the user's JusticeLibre account, without changing anything: the account itself (case files with their "d_…" ids, permissions of this connection, skills applied to new case files, tickets and their limits), a whole case file (case sheet, subfolders, saved re...2 params
Reads one object of the user's JusticeLibre account, without changing anything: the account itself (case files with their "d_…" ids, permissions of this connection, skills applied to new case files, tickets and their limits), a whole case file (case sheet, subfolders, saved re...
idstringkind*stringaccount · case_file · item · ticketcreate_account_itemCreates one of: a case file, a subfolder, saved references (articles, statutes, decisions, CADA opinions, CNIL deliberations, doctrine), an AI note, a skill proposal (inactive until the user activates it). Never changes existing content. Fields marked "kind: …" apply to that k...14 params
Creates one of: a case file, a subfolder, saved references (articles, statutes, decisions, CADA opinions, CNIL deliberations, doctrine), an AI note, a skill proposal (inactive until the user activates it). Never changes existing content. Fields marked "kind: …" apply to that k...
assistantstringcase_file_idstringfamilystring · jud · adm · ce · euitem_idstringkind*stringcase_file · subfolder · reference · note · skill_proposalnamestringpinnedbooleanreferencesarrayreplacesstringscopestringgeneral · case_filesubfolder_idstringsubtitlestringtextstringtitlestringupdate_account_itemSets the state of an existing case file (title, subtitle, case sheet), subfolder (name), saved reference (subfolder, set aside with a reason) or AI note (text, pinned, set aside). Only the fields given change; giving the same values again changes nothing. Overwrites the previo...19 params
Sets the state of an existing case file (title, subtitle, case sheet), subfolder (name), saved reference (subfolder, set aside with a reason) or AI note (text, pinned, set aside). Only the fields given change; giving the same values again changes nothing. Overwrites the previo...
assistantstringcase_file_idstringdeadlinesarrayfamilystring · jud · adm · ce · euid*stringjurisdictionstringkind*stringcase_file · subfolder · item · notenamestringnumberstringpartiesarraypinnedbooleanreasonstringset_asidebooleanstagestringsubfolder_idstringsubtitlestringsummarystringtextstringtitlestringopen_ticketOpens a ticket with the JusticeLibre team ON BEHALF of the user (marked "via AI") to report wrong data, a missing source, a bug, or an idea. Use only if the user asks for it or approves it. Permission tickets; AI limits on top of the user's own: 3 tickets a day, 5 messages an...5 params
Opens a ticket with the JusticeLibre team ON BEHALF of the user (marked "via AI") to report wrong data, a missing source, a bug, or an idea. Use only if the user asks for it or approves it. Permission tickets; AI limits on top of the user's own: 3 tickets a day, 5 messages an...
attachmentsarraymessage*stringtargetstringtitle*stringtype*stringerror · missing · bug · ideareply_ticketAdds a message to an existing ticket of the user ON THEIR BEHALF (marked "via AI"). Use only if the user asks for it or approves it. Permission tickets; 5 messages an hour for the AI; 3 plain-text attachments at most. Requires a JusticeLibre account (OAuth sign-in); without on...3 params
Adds a message to an existing ticket of the user ON THEIR BEHALF (marked "via AI"). Use only if the user asks for it or approves it. Permission tickets; 5 messages an hour for the AI; 3 plain-text attachments at most. Requires a JusticeLibre account (OAuth sign-in); without on...
attachmentsarraymessage*stringticket_id*stringSponsors
Readme
justicelibre.org
⚠️ Le code de ce dépôt n'est plus à jour. Le développement se poursuit dans un dépôt privé, le temps de stabiliser la nouvelle version. Le code ici est l'archive de la première version (septembre 2026). Cette page, elle, décrit le service actuel.
Le service, lui, continue sur justicelibre.org, et chaque résultat y renvoie à sa source officielle.
L'accès libre à toute la jurisprudence et la loi françaises publiées en données ouvertes, pour Claude, ChatGPT et votre IA.
Se connecter
Adresse du serveur MCP (HTTP « streamable ») :
https://justicelibre.org/mcp
Aucune installation : ajoutez cette adresse comme connecteur dans votre client (Claude, ChatGPT, Cursor, VS Code…). Les outils de recherche fonctionnent sans compte ; un compte justicelibre (connexion OAuth) ajoute les dossiers et références enregistrées.
Instructions détaillées : justicelibre.org/#connect
Sources
Details
- Repository
- github.com/dahliyaal/justicelibre
- Transport
- HTTP
- Registry
- MCP registry, active
- Resources
- 3
- Prompts
- 3
- Tools verified
- Nov 6, 2026