{
  "markdown": "# JusticeLibre\n\n> 🌐 **Site officiel : [https://justicelibre.org](https://justicelibre.org/)**\n> 📡 **Endpoint MCP : [`https://justicelibre.org/mcp`](https://justicelibre.org/mcp)** (Streamable HTTP, sans clé)\n\n> **L'accès libre à la jurisprudence française et européenne. Alternative open source à Doctrine, Lexis et Légifrance.**\n\n[![Site](https://img.shields.io/badge/site-justicelibre.org-1a4e4e?style=flat-square)](https://justicelibre.org/)\n[![MCP Server](https://img.shields.io/badge/MCP-Streamable_HTTP-1a4e4e?style=flat-square)](https://justicelibre.org/mcp)\n[![Décisions](https://img.shields.io/badge/Décisions-~3.3_M-1a4e4e?style=flat-square)](https://justicelibre.org)\n[![Articles de loi](https://img.shields.io/badge/Articles_de_loi-1.5_M%2B-1a4e4e?style=flat-square)](https://justicelibre.org)\n[![Licence](https://img.shields.io/badge/Licence-MIT-c79e3a?style=flat-square)](LICENSE)\n\nServeur **Model Context Protocol** (MCP) qui expose **~3,3 M décisions de justice** + **~1,5 M articles de loi consolidés** + ~700 k textes annexes (KALI/JORF/CNIL) de la France, de l'UE et du Conseil de l'Europe — gratuit, sans authentification, indexé sur Google.\n\n| Source | Volume | Couverture |\n|---|---:|---|\n| Cour de cassation + cours d'appel + Conseil constitutionnel | 1 169 102 | DILA bulks + Judilibre PISTE |\n| Conseil d'État + 9 CAA + 40 TA (JADE bulk) | 552 576 | DILA bulk |\n| Open data justice administrative (CE/CAA/TA récents) | 985 996 | API justice-administrative.fr |\n| ArianeWeb (Conseil d'État) | 70 396 | scrape Sinequa |\n| Cour Européenne des Droits de l'Homme | 76 051 | HUDOC (FR + fallback EN) |\n| Cour de Justice de l'Union Européenne | 44 270 | EUR-Lex / Cellar |\n| INCA (jurisprudence judiciaire ancienne) | 382 480 | DILA bulk |\n| **TOTAL décisions** | **~3,28 M** | |\n| Articles de loi en vigueur (LEGI) | 1 481 309 | DILA bulk |\n| Conventions collectives (KALI) | 286 732 | DILA bulk |\n| JO (textes non codifiés) | 409 564 | DILA bulk |\n| Délibérations CNIL | 8 126 | DILA bulk |\n\n---\n\n## Pourquoi JusticeLibre\n\nLes outils juridiques propriétaires (**Pappers Justice**, **Doctrine.fr**, **Lexis 360**, **Dalloz**) coûtent 50-200 €/mois et ferment l'accès au droit derrière un paywall. L'open data juridique français existe (loi 2016 République Numérique, loi 2019 réforme de la justice) mais reste techniquement inaccessible :\n\n- Légifrance n'expose que ~25% de la jurisprudence en open data, fragmenté\n- Judilibre nécessite OAuth2 PISTE (frictionnel, oublie ChatGPT/Claude classique)\n- Les bulks DILA arrivent en ZIPs XML bruts de plusieurs Go, inutilisables sans pipeline ETL\n- Les TAs ne sont diffusés que par une API Elasticsearch non documentée\n\n**JusticeLibre** rend cette donnée immédiatement utilisable par tout LLM ou humain :\n\n- ✅ **Aucune clé, aucun compte** : utilisable depuis Claude.ai, ChatGPT, Cursor, Zed, Continue immédiatement\n- ✅ **Couverture unique** : Cour de cassation + Conseil d'État + Conseil constitutionnel + 9 CAA + 40 TA + **CEDH** + **CJUE** + délibérations CNIL\n- ✅ **Articles de loi avec versions historiques** : \"quel était l'article 1382 CC en 1992 ?\" → texte napoléonien, pas la réforme 2016\n- ✅ **Indexable Google** : ~3 M URLs SSR exposées (sitemap), pas un SPA bot-blind\n- ✅ **Open source MIT** : auto-hébergeable\n\n---\n\n## Comparaison\n\n| | JusticeLibre | Pappers Justice | OpenLegi | mcp-juridique.fr | Doctrine.fr |\n|---|:-:|:-:|:-:|:-:|:-:|\n| Gratuit | ✅ | ❌ payant | partiel | ❌ payant | ❌ 50€/mois |\n| Sans inscription | ✅ | ❌ | ❌ | ❌ | ❌ |\n| **Cour EDH** | ✅ 76k décisions | ❌ | ❌ | ❌ | ⚠️ partiel |\n| **CJUE** | ✅ 44k arrêts | ❌ | ❌ | ❌ | ⚠️ partiel |\n| **Conseil constit.** | ✅ 7k décisions + tool dédié | ⚠️ | ❌ | ⚠️ | ✅ |\n| **40 TA en parallèle** | ✅ fan-out | ⚠️ partiel | ❌ | ❌ | ✅ |\n| **9 CAA en parallèle** | ✅ fan-out | ⚠️ | ❌ | ❌ | ✅ |\n| **CNIL délibérations** | ✅ ~8k | ❌ | ❌ | ⚠️ | ❌ |\n| **Articles loi versionnés** | ✅ 1.5M | ⚠️ | ⚠️ Légifrance brut | ⚠️ | ✅ |\n| **BM25 pertinence** | ✅ | ⚠️ | ⚠️ | ⚠️ | ✅ |\n| **Open source** | ✅ MIT | ❌ | ⚠️ | ❌ | ❌ |\n| **MCP natif** | ✅ Streamable HTTP | ✅ | ✅ | ✅ | ❌ (REST seul) |\n| **Indexable Google** | ✅ 3M SSR pages | ❌ SPA | ❌ | ❌ | ❌ |\n\n---\n\n## Outils MCP exposés (29)\n\n### Recherche fédérée\n\n| Outil | Description |\n|---|---|\n| `search_all` | Fan-out parallèle sur toutes les sources, ranking BM25 + bonus autorité (CE +20%, Cass +15%, CEDH +15%, CAA +10%) |\n| `about_justicelibre` | Présentation des tools, hiérarchie d'autorité, workflow recommandé |\n\n### Jurisprudence judiciaire (PISTE Judilibre + bulk DILA)\n\n| Outil | Description |\n|---|---|\n| `search_judiciaire_libre` | 1.17M décisions (Cass + CA + Conseil constit.) - bulk DILA, sans auth |\n| `get_decision_judiciaire_libre` | Texte intégral via JURITEXT/CONSTEXT id |\n| `search_judiciaire` | Live PISTE Judilibre (besoin OAuth) |\n| `get_decision_judiciaire` | Texte via PISTE |\n| `search_cc` | Conseil constitutionnel dédié (7112 décisions, filtre par nature : QPC/DC/L/SEN/AN/PDR) |\n| `get_cc_decision` | **Cette** décision CC, par son numéro (ex: \"2023-1048 QPC\"). Lookup exact : un numéro porté par plusieurs natures (2019-778 existe en DC *et* en QPC) est refusé tant que `nature` n'est pas précisé, plutôt que de servir un voisin. Pour la **postérité** d'une décision (qui la cite, la confirme, la renverse) : `search_cc(query='\"2019-778 DC\"')` |\n\n### Jurisprudence administrative (CE + 9 CAA + 40 TA)\n\n| Outil | Description |\n|---|---|\n| `search_admin` | BM25 pondéré sur 552k décisions admin bulk JADE |\n| `get_admin_decision` | Lookup par numéro de requête (désambiguïsation par juridiction). Échoue si le numéro est introuvable — ne sert jamais la décision « la plus proche » |\n| `get_ce_decision` | CE spécifique, avec repli ArianeWeb si le numéro n'est pas dans le bulk. Idem : pas de résultat approchant |\n| `search_conseil_etat` | ~270k CE via Sinequa (moteur sémantique natif) |\n| `get_decision_text` | Texte intégral via DCE/DTA/DCAA id |\n| `search_admin_recent` / `_all_caa` / `_all_ta` | Tri date desc pour l'actualité |\n| `list_juridictions` | 51 codes juridiction (CE, CAA13...78, TA06...109) |\n\n### Jurisprudence européenne\n\n| Outil | Description |\n|---|---|\n| `search_cedh` | 76k décisions Cour EDH avec sémantique ECHR |\n| `get_decision_cedh` | Texte via itemid (ex: \"001-249914\") |\n| `search_cjue` | 44k arrêts CJUE + Tribunal UE |\n| `get_decision_cjue` | Via CELEX ou ECLI |\n\n### Articles de loi (killer feature)\n\n| Outil | Description |\n|---|---|\n| `get_law_article` | Article à une date donnée. Ex: `(\"CC\",\"1128\",\"1992-05-15\")` -> texte napoléonien ; `(\"CC\",\"1128\",\"2024-01-01\")` -> texte post-réforme. `titre_texte` = titre du texte parent ; la hiérarchie des sections (partie/livre/titre/chapitre) n'est pas ingérée du bulk LEGI et n'est donc **pas** renvoyée |\n| `get_law_versions` | Timeline complète des versions d'un article |\n| `search_legi` | BM25 sur 1.5M articles consolidés (79 codes + Constitution + lois non codifiées). Un sigle `code` inconnu renvoie une erreur, jamais une recherche non filtrée déguisée en succès |\n| `search_decisions_citing` | Cross-référence inverse : \"quelles décisions citent l'article X ?\" |\n| `resolve_law_number` | Numéro loi/ord/décret -> LEGITEXT/JORFTEXT |\n| `build_source_url` | URL Légifrance canonique pour un identifier |\n\n### Droit positif complémentaire\n\n| Outil | Description |\n|---|---|\n| `search_jorf` | 1.24M textes JO (lois, décrets, arrêtés, circulaires depuis 1990) |\n| `search_kali` | 335k conventions collectives + accords de branche |\n| `search_cnil` | ~8k délibérations CNIL (RGPD, données personnelles) |\n\n---\n\n## Quick start\n\n### Claude Desktop / Claude.ai\n\nDans **Settings -> Connectors -> Add custom connector** :\n```\nURL : https://justicelibre.org/mcp\nAuth : aucune\n```\n\n### ChatGPT / Cursor / Zed / Continue\n\nAjoute le serveur MCP `https://justicelibre.org/mcp` à ta config (cf doc de chaque client).\n\n### Auto-hébergement\n\n```bash\ngit clone https://github.com/Dahliyaal/justicelibre.git\ncd justicelibre\npip install -r requirements.txt\n\n# Mode stdio (Claude Desktop)\npython3 server.py\n\n# Mode Streamable HTTP (Claude.ai web, OpenAI connectors)\npython3 server.py http   # listen 0.0.0.0:8765\n```\n\n---\n\n## Exemples d'usage\n\n### Contentieux QPC\n```python\n# Toutes les QPC sur l'article 8 DDHC ces 2 dernières années\nsearch_cc(query=\"proportionnalité\", nature=\"QPC\",\n          date_min=\"2024-01-01\", date_max=\"2026-01-01\")\n```\n\n### Recours CEDH\n```python\n# Décisions CEDH France sur la garde à vue\nsearch_cedh(query=\"garde à vue France\")\n# Texte intégral\nget_decision_cedh(itemid=\"001-249914\")\n```\n\n### Recherche jurisprudence administrative ciblée\n```python\n# Tous les TA + CAA en parallèle sur \"harcèlement institutionnel\"\nsearch_admin(query=\"harcèlement institutionnel université\",\n             sort=\"relevance\", limit=30)\n# TA Lyon spécifique\nget_admin_decision(numero=\"2200433\", juridiction=\"Tribunal Administratif de Lyon\")\n```\n\n### Article de loi à une date précise\n```python\n# L. 262-8 CASF en vigueur au 1er janvier 2023\nget_law_article(code=\"CASF\", num=\"L262-8\", date=\"2023-01-01\")\n# Toutes les versions historiques\nget_law_versions(code=\"CC\", num=\"1128\")\n```\n\n---\n\n## Architecture\n\n```\n                        +---------------------+\n                        |   Client MCP        |\n                        | (Claude/ChatGPT/.)  |\n                        +----------+----------+\n                                   | Streamable HTTP\n                                   v\n                  +--------------------------------+\n                  |  justicelibre.org/mcp          |\n                  |  (FastMCP + nginx + cloudflare)|\n                  +--+-------+--------+--------+---+\n                     |       |        |        |\n        +------------+       |        |        +------------+\n        v                    v        v                     v\n  +--------------+  +--------------+ +--------------+  +--------------+\n  | Bulks DILA   |  | ArianeWeb    | | HUDOC API    |  | InforCuria   |\n  | (SQLite +    |  | (Sinequa CE) | | (CEDH)       |  | (CJUE)       |\n  |  FTS5 BM25)  |  |              | |              |  |              |\n  +--------------+  +--------------+ +--------------+  +--------------+\n       ~2.4M            ~270k           76k                44k\n```\n\n- Bulks XML DILA téléchargés en local sur al-uzza (Hetzner) avec parsers Python\n- Index FTS5 SQLite par fond (jade.db, legi.db, jorf.db, kali.db, cnil.db)\n- Fallback live API pour la fraîcheur\n- Indexation Google : 3M+ URLs SSR via sitemap (vs SPA bot-blind chez les concurrents)\n\n---\n\n## Sources de données\n\n| Source | Volume | Auth | URL |\n|---|---|---|---|\n| DILA bulks (CASS/CAPP/CONSTIT/JADE/JORF/KALI/CNIL/LEGI) | ~6 M docs | Aucune | [echanges.dila.gouv.fr](https://echanges.dila.gouv.fr/OPENDATA/) |\n| ArianeWeb Conseil d'État | ~270k | Aucune | [conseil-etat.fr](https://www.conseil-etat.fr/arianeweb/) |\n| opendata.justice-administrative.fr | ~1.5M | Aucune | [opendata.justice-administrative.fr](https://opendata.justice-administrative.fr/) |\n| HUDOC Cour EDH | 76k | Aucune | [hudoc.echr.coe.int](https://hudoc.echr.coe.int/) |\n| InforCuria CJUE | 44k | Aucune | [curia.europa.eu](https://curia.europa.eu/) |\n| PISTE Judilibre (optionnel) | toutes nouvelles décisions | OAuth2 | [piste.gouv.fr](https://piste.gouv.fr/) |\n\nDonnées sous **Licence Ouverte 2.0 (Etalab)** - réutilisation libre avec mention de la source.\n\n---\n\n## Limites légales respectées\n\nJusticeLibre respecte strictement :\n- **Article 226-18, 226-24, 226-31 Code pénal** : interdiction de profiler les magistrats (jamais de stats par juge dans les outils exposés)\n- **Loi 78-17 Informatique et Libertés** : pseudonymisation respectée (ne pas ré-identifier les personnes anonymisées par DILA)\n- **Licence Ouverte 2.0** : mention de source et date sur chaque page\n\n---\n\n## Status & roadmap\n\n- [x] V1 : 6 tools sur opendata.justice-administrative.fr (avril 2026)\n- [x] V2 : +CEDH, CJUE, Légifrance/PISTE codes consolidés\n- [x] V3 : Killer features articles loi + cross-référence décisions citant\n- [x] V4 : Bulks DILA en MCP (BM25 admin, judiciaire libre, CC, CNIL, JORF, KALI)\n- [x] V5 : Thésaurus FR (495 entrées) + search_all unifié + bonus autorité\n- [x] V6 : SSR + sitemap (~3M URLs indexables Google), citations cliquables Légifrance dated, source attribution\n- [ ] Crawl complet TAs opendata (~1,5M en cours)\n- [ ] LLM extraction citations contextuelles (\"même code\", \"présent code\")\n- [ ] Embeddings BGE-M3 sur tout le corpus pour recherche sémantique\n\n---\n\n## Communauté\n\n- **Issues / suggestions** : [GitHub Issues](https://github.com/Dahliyaal/justicelibre/issues)\n- **MCP Registry** : [PulseMCP](https://www.pulsemcp.com/servers/gh-dahliyaal-justice-libre)\n- **Built by** : [@Dahliyaal](https://github.com/Dahliyaal) - projet né d'un usage personnel sur 8 fronts contentieux en parallèle (MDPH, RSA, Barreau, etc.). Outil né d'un besoin réel, pas d'un wrapper Légifrance pondu pour le SEO.\n\n---\n\n## Contribuer\n\nTout PR bienvenue : nouveaux scrapers, fixes, traductions, exemples d'usage, intégrations clients MCP.\n\n```bash\ngit clone https://github.com/Dahliyaal/justicelibre.git\ncd justicelibre\nbash tests/run_all.sh   # tests\n```\n\n---\n\n## Licence\n\nMIT - Logiciel libre. Données sous Licence Ouverte 2.0 (Etalab).\n",
  "bytes": 13278,
  "sha": "dbbeeb4ceeb11800bacc9c28760c94e43e3a2a798ca5c88b3a374cba10518a60",
  "repo_slug": "dahliyaal/justicelibre",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_dahliyaal_justicelibre_60a18cc9/readme"
}