Skip to content

MCP : 3 prompts (workflows utilisateur) + 3 resources (catalogues)#7

Open
hermias1 wants to merge 1 commit into
Dahliyaal:mainfrom
hermias1:feat/mcp-prompts-resources
Open

MCP : 3 prompts (workflows utilisateur) + 3 resources (catalogues)#7
hermias1 wants to merge 1 commit into
Dahliyaal:mainfrom
hermias1:feat/mcp-prompts-resources

Conversation

@hermias1

Copy link
Copy Markdown

Motivation

JusticeLibre expose des tools, mais ni prompts ni resources — les deux autres primitives MCP. Cette PR complète le serveur :

  • Les prompts sont invoqués par l'utilisateur (slash-commands / menu dans Claude Desktop, Claude.ai…), contrairement aux tools pilotés par le modèle. Ils packagent en une commande des workflows qui exigent une discipline d'enchaînement que seul un utilisateur averti sait demander aujourd'hui. Coût nul en contexte tant qu'ils ne sont pas invoqués.
  • Les resources sont le pattern "content catalog" recommandé par la doc du Connectors Directory : des catalogues consultables sans appels de tools exploratoires.

Les 3 prompts

Prompt Ce qu'il packe
verifier_citation(reference, citation?) L'anti-hallucination juridique : "la partie adverse cite l'arrêt X / l'article Y — existe-t-il et dit-il bien cela ?" → résolution de l'identifiant, TEXTE INTÉGRAL, confrontation, verdict ✅/⚠️/❌, URL officielle via build_source_url. Aucun outil concurrent n'offre ça en une commande.
droit_applicable(code, article, date_des_faits) La killer feature packagée : version en vigueur à la date des faits (le piège classique — ex. 1382→1240), timeline get_law_versions, décisions citantes, URL Légifrance datée.
dossier_jurisprudence(sujet, contexte?) Recherche fédérée → lecture des textes intégraux (jamais les snippets — la règle impérative des instructions, ici imposée côté utilisateur) → synthèse hiérarchisée par autorité, sourcée.

Les 3 resources

Calculées depuis les sources uniques (legi.SUPPORTED_CODES, juriadmin.*) — pas des copies de chiffres qui dériveraient :

  • justicelibre://codes-supportes — les 26 codes/textes acceptés, avec LEGITEXT
  • justicelibre://juridictions — CE + 9 CAA + 40 TA
  • justicelibre://formats-identifiants — la matrice identifiant → tool d'extraction (la connaissance que get_decision_text ne redonne aujourd'hui qu'en message d'erreur, ici consultable a priori)

Vérification

  • tests/test_prompts_resources.py (offline, style maison, branché dans run_all.sh) : enregistrement, rendu des prompts avec/sans arguments optionnels, validité JSON, et un verrou de cohérence — chaque tool référencé par la matrice doit exister sur le serveur (un renommage de tool casse le test).
  • Round-trip client MCP réel : serveur lancé en stdio, interrogé par le client MCP officiel → 30 tools + 3 prompts + 3 resources, arguments requis/optionnels corrects, mime application/json.
  • test_source_url et test_citations toujours verts.

Notes

Prompts — invocables par l'utilisateur (slash-commands des clients MCP),
chacun packe un workflow qui exige une discipline d'enchaînement de tools :
- verifier_citation(reference, citation?) : une référence invoquée
  existe-t-elle et dit-elle bien cela ? Texte intégral à l'appui, verdict
  explicite, URL officielle. L'anti-hallucination juridique.
- droit_applicable(code, article, date_des_faits) : version en vigueur
  À LA DATE DES FAITS (le piège des versions), timeline, décisions
  citantes, URL Légifrance datée.
- dossier_jurisprudence(sujet, contexte?) : recherche fédérée → lecture
  des TEXTES INTÉGRAUX (jamais les snippets) → synthèse hiérarchisée par
  autorité avec identifiants et liens.

Resources — catalogues consultables sans appel de tool (pattern 'content
catalog' de la doc du Connectors Directory), calculés depuis les sources
uniques (legi.SUPPORTED_CODES, juriadmin.*) pour ne jamais dériver :
- justicelibre://codes-supportes (26 codes + LEGITEXT)
- justicelibre://juridictions (CE + 9 CAA + 40 TA)
- justicelibre://formats-identifiants (matrice identifiant → tool)

tests/test_prompts_resources.py verrouille le rendu des prompts, la
validité JSON des resources, et surtout la cohérence : chaque tool
référencé par la matrice doit exister sur le serveur. Vérifié aussi par
un round-trip client MCP réel en stdio (30 tools + 3 prompts +
3 resources).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant