Serveur MCP pour FisPro : lire, expliquer et exécuter des systèmes d'inférence floue
fispro-mcp defines 6 tools with clear, domain-specific purposes (fuzzy logic inference). All tools have descriptions (avg ~120 chars) and input schemas with types. However, schemas lack depth: most parameters are minimally described (e.g., 'chemin du fichier .fis' without format/validation hints), and output schemas are not documented. Error handling returns structured dicts with 'ok' and 'error' fields but lacks recovery guidance. Tool names are verb-driven (check_, list_, describe_, infer_, explain_) and follow single-responsibility principle. No security issues detected (read-only tools, one WRITE tool properly marked). Composition is sound, tools chain logically (list_fis → describe_fis → infer). Main gaps: parameter constraints (enums, ranges), output schema documentation, and actionable error messages.
Vérifie la configuration : racine autorisée, disponibilité de R et du paquet FisPro.
Décrit un système : variables, partitions floues, opérateurs, règles en clair.
Explique le raisonnement : degrés d'appartenance et règles déclenchées. C'est l'outil à privilégier pour comprendre *pourquoi* le système produit une sortie donnée. Calculé par le moteur Python.
Calcule les sorties du système flou pour un vecteur d'entrées.
Applique le système flou à toutes les lignes d'un fichier CSV.
Liste les fichiers .fis disponibles sous la racine autorisée.
Output schemas not documented. Tools return dicts with 'ok', 'error', and domain fields, but LLMs cannot predict structure. E.g., infer() returns {ok, engine, inputs, outputs, warnings}, outputs field structure is undocumented.
Parameter descriptions lack format/constraint details. 'path' param described as 'chemin du fichier .fis' but no mention of relative vs absolute, required suffixes, or validation. 'inputs' is 'une valeur par entrée' without type hints (float vs int), range, or order guarantees.
Error messages lack recovery guidance. _error() returns {ok: false, error: msg, hint?} but hints are sparse. E.g., 'Invalid status: got X, must be one of Y' pattern not applied. Errors like 'n valeur(s) fournie(s) pour m entrée(s)' are French-only and don't guide LLM retry.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 66 | 2026-07-28+ | v2 |
No pagination or result limits documented. list_fis() recursively globs all .fis files without a limit parameter. If a user has thousands of FIS files, response could explode context. infer_dataset() has max_preview but no total count or cursor.
backend parameter accepts free-form string ('auto', 'r', 'python') without enum constraint. LLMs may hallucinate 'julia' or 'cpp'. Should be enum: ['auto', 'r', 'python'].