De quoi s'agit-il
MCP (Model Context Protocol) permet à un assistant d'IA d'appeler des outils sur un serveur au lieu de deviner à partir de ses données d'entraînement. Connectez-en un ici : il peut chercher dans ce fonds, ouvrir une loi, lire le texte exact d'un article (en arabe et en français, tel que l'a publié le Centre de recherches et d'études en informatique juridique de l'Université libanaise) et parcourir le graphe des citations entre textes.
Les outils MCP et l'API ne réécrivent jamais une loi. Chaque texte qu'ils renvoient est copié de la base, le même texte que celui des pages de ce site. L'encadré de réponse de la page de recherche est différent : Gemini le rédige à partir de passages de nos textes, lie chaque source, et peut se tromper. Tout ce qu'une IA vous dit au-delà du texte peut être faux. Vérifiez l'article qu'elle cite, et le Journal officiel, avant de vous y fier.
Le serveur
Une seule adresse, sans compte ni clé :
https://lebaneselegislation.com/mcp
Il parle Streamable HTTP, en JSON-RPC 2.0 sans état (version 2025-06-18 du protocole MCP ; 2025-03-26 fonctionne aussi). Pas de connexion, pas de session à garder ouverte. Il tourne sur Cloudflare : un Worker en façade, puis le même serveur Go et la même base PostgreSQL que la recherche du site, dans un Cloudflare Container. Le code est ouvert sur GitHub.
Claude (claude.ai et Claude Desktop)
- Ouvrez Settings, puis Connectors.
- Cliquez sur Add custom connector.
- Nommez-le « Lebanese Legislation ».
- Collez l'URL ci-dessus comme URL du serveur MCP distant et cliquez sur Add.
Claude Code
claude mcp add --transport http lebanese-legislation https://lebaneselegislation.com/mcp
ChatGPT
- Ouvrez Settings, puis Connectors. Avec une offre payante, ouvrez d'abord Advanced et activez Developer mode.
- Cliquez sur Add connector (ou Create).
- Nommez-le « Lebanese Legislation » et collez l'URL ci-dessus comme URL du serveur MCP.
- Cliquez sur Create, puis activez le connecteur dans une nouvelle conversation.
Cursor et VS Code (mcp.json)
{
"mcpServers": {
"lebanese-legislation": {
"url": "https://lebaneselegislation.com/mcp"
}
}
}
Gemini CLI (settings.json)
{
"mcpServers": {
"lebanese-legislation": {
"httpUrl": "https://lebaneselegislation.com/mcp"
}
}
}
Ce qu'il sait faire
- search_legislation: cherche des lois, des articles, des décisions ou des numéros du Journal officiel par mot-clé, en arabe ou en français, ou une loi par son identifiant.
- get_law: les métadonnées d'une loi, son statut, son sommaire, et les textes qu'elle a modifiés ou qui l'ont modifiée.
- get_article: le texte exact d'un article, son statut, l'historique de ses modifications et sa source.
- get_law_texts: tous les articles d'une loi dans l'ordre, une page à la fois, pour lire ou comparer un code entier.
- get_ruling: une décision de justice, avec sa numérisation et, une fois lue, sa lecture par machine (elle peut contenir des erreurs ; la numérisation fait référence).
- get_gazette_issue: un numéro du Journal officiel et ce qu'il a publié.
- list_legislation: lois, décrets et arrêtés par date, les plus récents d'abord (date du Journal officiel, à défaut date du texte), avec since, until, kind, order, limit et cursor. Les textes lus sur les numérisations du Journal officiel sont inclus.
- list_gazette_issues: les numéros du Journal officiel par date, chacun avec son nombre de textes et sa source : le Centre, ou les numérisations pour les numéros récents.
- get_links: les arêtes du graphe qui entrent dans une loi, un article, une décision, un avis, une étude ou un numéro du Journal officiel, ou qui en sortent, pour parcourir directement citations et modifications.
- possibly_affected: les abrogations générales qui peuvent toucher une loi : une liste à vérifier, jamais le constat qu'un texte a bien été abrogé.
Chaque résultat porte l'adresse de cette loi, de cet article, de cette décision ou de ce numéro sur ce site, la page source du Centre lorsqu'elle est connue, et la mention « pas un avis juridique ».
L'API JSON
Les mêmes données, en simple HTTP, pour tout ce qui n'est pas un client MCP :
GET /api/v1/search/?q=&type=laws|rulings|gazette|articles&year=&limit=&cursor=
GET /api/v1/law/{id}/
GET /api/v1/law/{id}/article/{n}/
GET /api/v1/ruling/{id}/
GET /api/v1/gazette/{id}/
GET /api/v1/laws/?since=&until=&kind=&order=newest|oldest&limit=&cursor=
GET /api/v1/gazette/?since=&until=&order=newest|oldest&limit=&cursor=
curl "https://lebaneselegislation.com/api/v1/search/?q=%D9%85%D9%88%D8%AC%D8%A8%D8%A7%D8%AA&limit=5"
Tout ce qui a été publié depuis janvier 2025 : since=2025-01. since et until acceptent YYYY, YYYY-MM ou YYYY-MM-DD, bornes incluses. Jusqu'à 100 par page ; pour la suivante, passez next_cursor comme cursor, tant qu'il est présent. Les outils MCP list_legislation et list_gazette_issues prennent les mêmes paramètres.
curl "https://lebaneselegislation.com/api/v1/laws/?since=2025-01"
get_links accepte cursor, order (newest ou oldest) et, pour une loi, scope : « all » (par défaut) ajoute les liens de ses articles, « law » se limite à la loi. Il répond avec total et next_cursor.
Dans get_law et /api/v1/law/{id}/, amended_by et amended donnent chaque texte avec sa relation, sa date et ses articles : les articles de cette loi qu'il modifie (ceux de l'autre texte, pour amended). Sans articles, la modification porte sur le texte entier.
Toute l'API, avec chaque point d'accès, paramètre et champ, en description OpenAPI 3.1 pour les générateurs de code et les agents d'IA : /openapi.json
updated_at est le jour où la page d'un enregistrement a changé pour la dernière fois sur ce site : une modification entrée en vigueur, la lecture d'une décision, une correction. Ce n'est jamais la date du texte lui-même, et le champ est absent lorsque nous ne la connaissons pas.
Limites
- 60 appels par minute et par adresse, et au plus 30 par tranche de 10 secondes à la périphérie de Cloudflare. Au-delà, un 429.
- Les requêtes de plus de 64 Ko sont rejetées.
- Résultats de recherche : 20 à la fois au plus.
- Chaque texte juridique est repris mot pour mot de la base. Aucun outil ne paraphrase ni ne résume une loi.
- Pas un avis juridique. Textes officiels du Centre de recherches et d'études en informatique juridique de l'Université libanaise.
Voir les téléchargements de données et les conditions de réutilisation
vectors/vectors.parquet contient 1,547,937 segments vectorisés avec gemini-embedding-001 en 768 dimensions. Colonnes : id, document, model, hash et values (FLOAT[768]). La recherche sémantique hébergée utilise Cloudflare Vectorize.
L'installer chez vous
Vous voulez le site, l'API et ce serveur MCP sur votre propre machine, avec votre propre copie des données ? Lire comment l'installer chez vous.
Suivre les changements
Suivez le dépôt sur GitHub pour les nouvelles versions, ou suivez taktekhq sur Hugging Face pour les nouvelles données.