Ce guide explique comment packager les outils MCP openlegi dans un plugin Claude réutilisable. Un plugin permet de distribuer à plusieurs utilisateurs (équipe, cabinet, direction juridique) un ensemble cohérent de skills, d'agents planifiés et de connecteurs MCP, configurés une seule fois et personnalisés via un profil de pratique.
Pourquoi un plugin plutôt qu'un simple .mcp.json
Un fichier .mcp.json configure un serveur MCP pour une seule instance Claude. Un plugin Claude apporte trois éléments supplémentaires : un profil de pratique (CLAUDE.md) que tous les skills lisent en amont, des skills explicitement déclenchables via des slash commands (/<plugin>:<skill>), et des agents planifiés qui s'exécutent en arrière-plan selon une cadence cron. (Anthropic, Customize Claude Code with plugins)
Le format de référence est celui utilisé par Anthropic pour le repo claude-for-legal, publié sous licence Apache 2.0. (Anthropic, claude-for-legal) Aucune compilation n'est requise : tout est en markdown et JSON.
À noter. Les plugins fonctionnent sur Claude Cowork, Claude Code et Claude Desktop. Pour Claude Web (claude.ai) seuls les connecteurs MCP individuels sont disponibles, sans la couche plugin.
Prérequis
| Élément | Comment l'obtenir |
|---|---|
| Compte openlegi avec token actif | auth.openlegi.fr |
| Claude Code ou Claude Cowork installé | claude.com/download |
| Git (pour publication éventuelle) | Selon votre OS |
Vérifiez la disponibilité du service openlegi avant de commencer :
curl https://mcp.openlegi.fr/health
La réponse doit indiquer {"status": "ok", ...}. (openlegi, Health Check)
Architecture d'un plugin
Un plugin Claude est un répertoire avec une structure normalisée :
mon-plugin-openlegi/
.claude-plugin/
plugin.json # manifeste du plugin
CLAUDE.md # profil de pratique (template)
README.md
skills/ # skills déclenchables
veille-jorf/
SKILL.md
recherche-code/
SKILL.md
agents/ # agents planifiés (optionnel)
digest-hebdo.md
hooks/ # hooks pre/post tool (optionnel)
.mcp.json # déclaration des connecteurs MCP
Chaque fichier SKILL.md est un skill autonome. Chaque agent est un fichier markdown avec une frontmatter de planification.
Étape 1 : le manifeste plugin.json
Créez .claude-plugin/plugin.json :
{
"name": "veille-juridique-fr",
"version": "0.1.0",
"description": "Veille et recherche en droit français via openlegi",
"author": {
"name": "Cabinet Exemple",
"url": "https://exemple.fr"
},
"license": "MIT",
"keywords": ["droit-francais", "veille", "openlegi", "legifrance"]
}
Le champ name est utilisé comme préfixe pour toutes les slash commands. Un skill nommé veille-jorf deviendra /veille-juridique-fr:veille-jorf.
Étape 2 : la configuration MCP
Créez .mcp.json à la racine du plugin pour déclarer la dépendance à openlegi :
{
"mcpServers": {
"openlegi-legifrance": {
"command": "npx",
"args": [
"-y",
"mcp-remote@latest",
"https://mcp.openlegi.fr/legifrance/mcp?token=${OPENLEGI_TOKEN}"
]
},
"openlegi-rne": {
"command": "npx",
"args": [
"-y",
"mcp-remote@latest",
"https://mcp.openlegi.fr/inpi/mcp?token=${OPENLEGI_TOKEN}"
]
}
}
}
Les variables d'environnement comme ${OPENLEGI_TOKEN} sont résolues au moment de l'installation. (openlegi, Configuration Claude Desktop)
Sécurité. Ne jamais coder le token en dur dans
.mcp.json. Le plugin sera potentiellement partagé via Git ou un registry, et le token est personnel.
Étape 3 : le profil de pratique CLAUDE.md
Le fichier CLAUDE.md à la racine est un template. Il sera lu automatiquement par tous les skills du plugin avant chaque exécution. Voici un exemple minimal :
# Profil de pratique — Veille juridique FR
## Domaines de pratique
À compléter via /veille-juridique-fr:cold-start-interview
## Codes prioritaires
- Code du travail
- Code de commerce
- Code civil
## Juridictions suivies
- Cour de cassation (chambre sociale)
- Conseil d'État
## Style de restitution
- Note de synthèse en 5 points maximum
- Citation systématique de l'article source avec lien Légifrance
- Aucune paraphrase d'un texte légal sans contrôle préalable
## Garde-fous
- Toujours afficher le lien `article_lc` Légifrance pour vérification
- Signaler toute troncature (`...`) sans la corriger
- Refuser de donner un avis juridique : restitution factuelle uniquement
Le profil est rempli soit manuellement, soit via une cold-start interview (voir étape 5). Il survit aux mises à jour du plugin. (Anthropic, claude-for-legal)
Étape 4 : créer un skill
Un skill est un fichier SKILL.md placé dans skills/<nom-du-skill>/. La structure est imposée par Anthropic.
Exemple complet : skills/veille-jorf/SKILL.md
---
name: veille-jorf
description: Surveille les publications récentes au Journal Officiel selon les filtres définis dans le profil de pratique. Utiliser quand l'utilisateur demande une veille JORF, une revue des derniers décrets, ou un suivi des publications récentes du gouvernement français.
argument-hint: "[nombre_jours]"
---
# Veille JORF
Récupère les publications récentes du Journal Officiel français via openlegi
et produit une note de synthèse selon le style maison défini dans CLAUDE.md.
## Procédure
1. Lire le profil de pratique dans `~/.claude/plugins/config/veille-juridique-fr/CLAUDE.md`
pour identifier les ministères et types de textes prioritaires.
2. Appeler l'outil openlegi `recherche_journal_officiel` :
- text_types : selon le profil (par défaut DECRET et ARRETE)
- ministeres : selon le profil
- date_publication : [today - nombre_jours, today]
- sort : PUBLI_DATE_DESC
- max_results : 20
3. Pour chaque résultat, extraire :
- Titre
- Date de signature
- Ministère émetteur
- Lien Légifrance (champ `article_lc` des métadonnées)
4. Produire une note structurée :
- Titre : "Veille JORF — [date début] au [date fin]"
- 1 ligne par texte avec lien cliquable
- Aucune paraphrase du contenu : titre officiel uniquement
## Garde-fous
- Si un texte semble particulièrement pertinent, proposer à l'utilisateur
d'appeler `rechercher_dans_texte_legal` pour récupérer le texte intégral,
mais ne jamais reproduire le texte sans le lien de vérification.
- Si openlegi retourne une erreur de quota, suggérer de configurer
des clés API PISTE personnelles via le dashboard openlegi.
Points clés du format SKILL.md :
La frontmatter YAML contient name, description et argument-hint. Le champ description est le signal de déclenchement automatique du skill : Claude le lit pour décider si le skill s'applique au message en cours. Anthropic recommande de garder ce champ sous 1024 caractères. (Anthropic, claude-for-legal)
Le corps du skill est une procédure en langage naturel. Pas de DSL, pas de pseudo-code obligatoire. Claude exécute les étapes en appelant les outils MCP déclarés dans .mcp.json.
Étape 5 : le cold-start interview
C'est la convention Anthropic pour personnaliser le plugin lors du premier usage. Créez skills/cold-start-interview/SKILL.md :
---
name: cold-start-interview
description: Initialise le profil de pratique du plugin veille-juridique-fr. À exécuter une fois après l'installation. Pose des questions sur les domaines, juridictions et style attendu, puis écrit le profil dans CLAUDE.md.
---
# Cold-start interview — Veille juridique FR
## Objectif
Remplir le fichier `~/.claude/plugins/config/veille-juridique-fr/CLAUDE.md`
avec les paramètres spécifiques à l'utilisateur ou au cabinet.
## Procédure
1. Présenter brièvement le plugin et expliquer que l'interview dure 5 à 10 minutes.
2. Poser les questions suivantes, une par une :
a) Quels sont les 3 à 5 domaines de droit que vous suivez en priorité ?
b) Quels codes juridiques consultez-vous le plus souvent ?
c) Quelles juridictions surveillez-vous (Cour de cassation, Conseil d'État, etc.) ?
d) Quels ministères publient les textes qui vous concernent ?
e) Quel format de restitution préférez-vous (note courte, tableau, bullet points) ?
f) Avez-vous des garde-fous spécifiques (privilege, anonymisation, etc.) ?
3. Demander à l'utilisateur de fournir 2 à 3 exemples de notes de veille
passées (URL ou copier-coller) pour calibrer le style.
4. Écrire le fichier CLAUDE.md selon les réponses.
5. Tester immédiatement avec `/veille-juridique-fr:veille-jorf 7` pour valider.
Cette convention permet à un utilisateur non technique de configurer le plugin sans toucher au fichier CLAUDE.md directement.
Étape 6 : ajouter un agent planifié
Les agents planifiés s'exécutent en arrière-plan selon une cadence cron. Créez agents/digest-hebdo.md :
---
name: digest-hebdo
schedule: "0 8 * * 1"
description: Digest hebdomadaire de veille juridique, envoyé chaque lundi à 8h.
---
# Digest hebdomadaire
Chaque lundi matin, produire une note couvrant :
1. Les publications JORF de la semaine écoulée (appeler veille-jorf 7).
2. Les nouvelles décisions de la Cour de cassation dans les domaines suivis
(appeler rechercher_jurisprudence_judiciaire avec juridiction_judiciaire=["Cour de cassation"],
date_decision sur les 7 derniers jours, panorama=true).
3. Les éventuelles décisions du Conseil d'État en lien avec les domaines suivis.
Sortie attendue :
- Un fichier markdown nommé `digest-AAAA-MM-DD.md`
- Posté dans le canal Slack #veille-juridique si le connecteur Slack est configuré
- Sinon stocké dans `~/Documents/veille-juridique/`
La frontmatter schedule utilise une syntaxe cron standard. (Anthropic, claude-for-legal)
Pour un déploiement headless (sans interface), cet agent peut être converti en Managed Agent via l'API Claude. Cela suppose la création d'un cookbook séparé dans managed-agent-cookbooks/digest-hebdo/. La documentation Anthropic décrit cette opération via le script deploy-managed-agent.sh. (Anthropic, claude-for-legal)
Étape 7 : tester le plugin localement
Depuis Claude Code, ajoutez le marketplace local et installez le plugin :
# Pointer Claude Code vers le répertoire local du plugin
/plugin marketplace add /chemin/absolu/vers/mon-plugin-openlegi
# Installer
/plugin install veille-juridique-fr@local
# Redémarrer Claude Code, puis lancer la cold-start interview
/veille-juridique-fr:cold-start-interview
Sur Claude Cowork, l'installation se fait via l'onglet Customize > Browse plugins > Upload custom plugin file en uploadant le répertoire zippé.
Étape 8 : structurer les garde-fous spécifiques au droit français
openlegi documente plusieurs risques structurels lors de l'usage de Légifrance via un LLM, dont la troncature des textes longs, les références internes orphelines et les numéros d'articles réaffectés après renumérotation législative. (openlegi, Limitations connues)
Pour les couvrir au niveau plugin, ajoutez un hook pre-tool dans hooks/openlegi-guardrails.md :
---
name: openlegi-guardrails
type: pre-tool
applies-to: ["rechercher_code", "rechercher_dans_texte_legal"]
---
# Garde-fous openlegi
Avant tout appel à openlegi sur un code ou texte légal :
1. Si la requête concerne un article potentiellement renuméroté
(Code civil avant 2016, Code du travail avant 2008, Code de commerce),
demander à l'utilisateur de confirmer la version recherchée.
2. Après l'appel, si la réponse contient `...` ou se termine par des points
de suspension, signaler explicitement la troncature dans la restitution.
3. Toujours afficher le lien `article_lc` retourné dans les métadonnées,
sans exception.
4. Ne jamais paraphraser le texte d'un article. Reproduire le texte exact
retourné par l'outil. Toute reformulation est interdite.
Ces garde-fous reprennent textuellement les recommandations openlegi sur la prévention des hallucinations en droit français. (openlegi, Limitations connues)
Étape 9 : documenter le plugin
Le README.md à la racine du plugin doit minimalement contenir :
- Liste des skills exposés avec leur commande
- Liste des connecteurs MCP requis
- Exemples d'usage
- Mention du token openlegi nécessaire
Anthropic recommande également de garder la description de chaque skill sous 1024 caractères, car c'est le signal de déclenchement automatique. (Anthropic, claude-for-legal)
Étape 10 : publier le plugin
Trois options de distribution.
Privé (cabinet ou direction juridique) : héberger le repo sur un GitHub privé, ajouter le marketplace via /plugin marketplace add https://github.com/cabinet/mon-plugin-openlegi.
Public via le Legal Builder Hub : Anthropic propose un système de découverte et d'installation de skills communautaires avec contrôles de sécurité. (Anthropic, claude-for-legal) Le passage par ce hub implique de soumettre le plugin à un QA framework qui scanne le contenu, vérifie les licences et journalise les installations.
Public en dehors du hub : publication sur GitHub sous licence libre. C'est l'approche utilisée pour anthropics/claude-for-legal lui-même, sous Apache 2.0. (Anthropic, claude-for-legal)
Exemple complet : repo de référence
Un squelette minimal de plugin openlegi est disponible sous la forme suivante :
veille-juridique-fr/
.claude-plugin/
plugin.json
skills/
cold-start-interview/SKILL.md
veille-jorf/SKILL.md
recherche-code/SKILL.md
recherche-jurisprudence/SKILL.md
agents/
digest-hebdo.md
hooks/
openlegi-guardrails.md
.mcp.json
CLAUDE.md
README.md
LICENSE
Pour un exemple grandeur réelle de plugins exploitant des connecteurs MCP juridiques, consulter le repo anthropics/claude-for-legal qui contient 12 plugins de référence sous licence Apache 2.0 (5,2k étoiles, 726 forks au 16 mai 2026). (Anthropic, claude-for-legal)
Limites et points de vigilance
Les hooks pre-tool et la cadence des agents planifiés sont des fonctionnalités actives sur Claude Code et Cowork. Leur disponibilité sur d'autres clients MCP (Mistral Le Chat, Microsoft Copilot Studio) peut être partielle ou inexistante. (openlegi, Liste des services compatibles)
La délégation à des sous-agents (callable_agents) est en Research Preview au moment de la publication de ce guide et supporte un seul niveau de délégation. (Anthropic, claude-for-legal)
Tout output produit par un plugin construit sur openlegi reste un brouillon à valider. La règle openlegi est absolue : pour tout usage professionnel, vérifier le texte sur Légifrance via le lien article_lc fourni dans les métadonnées. (openlegi, Limitations connues)
Aller plus loin
| Sujet | Ressource |
|---|---|
| Outils openlegi exhaustifs | openlegi, Liste des outils |
| Référence Claude plugins | anthropics/claude-for-legal |
| API Claude Managed Agents | docs.claude.com/managed-agents |
| Spécification MCP | modelcontextprotocol.io |
| Clés API PISTE personnelles | openlegi, Clés API personnelles |