Kofi04

fispro-mcp

Community Kofi04
Updated

Interrogez vos systèmes d'inférence floue FisPro en langage naturel, via MCP.

fispro-mcp

Serveur MCP pour FisPro, le logiciel libre de systèmes d'inférence floue développé par l'INRAE et l'Institut Agro (Serge Guillaume, Brigitte Charnomordic).

Il permet à un assistant compatible MCP — Claude Desktop, Claude Code, Cursor, VS Code… — de lire vos fichiers .fis, d'exécuter des inférences, et surtout d'expliquer quelles règles se déclenchent et pourquoi. C'est là tout l'intérêt : la logique floue produit des modèles interprétables, encore faut-il pouvoir interroger cette interprétabilité en langage naturel.

Vous  : Pourquoi mon système recommande 55 minutes d'arrosage à 15 % d'humidité et 32 °C ?
Claude: [explain_inference] Une seule règle se déclenche, R1 (« SI humidite_sol est sec
        ET temperature est chaude »), avec une force de 0,625 — le sol est « sec » à 62,5 %
        et la température « chaude » à 100 %. Comme aucune autre règle n'est active, la
        sortie vaut exactement le conséquent de R1, soit 55.

Deux moteurs, deux usages

Moteur R (FisPro sur CRAN) Moteur Python (intégré)
Rôle inférence faisant foi introspection et explication
Socle bibliothèque C++ officielle réimplémentation lisible
Dépendances R ≥ 3.6 + paquet FisPro aucune
Explique le raisonnement non oui

Par défaut (backend="auto"), le serveur utilise R s'il est disponible et bascule sinon sur Python en le signalant. Les résultats numériques restent donc traçables.

Installation

git clone https://github.com/Kofi04/fispro-mcp.git
cd fispro-mcp
pip install -e .

Backend R (recommandé, optionnel) :

install.packages("FisPro")

Configuration du client

Dans claude_desktop_config.json (Claude Desktop) ou tout autre client MCP :

{
  "mcpServers": {
    "fispro": {
      "command": "fispro-mcp",
      "env": {
        "FISPRO_MCP_ROOT": "/chemin/vers/vos/modeles"
      }
    }
  }
}

Pour Claude Code, voir la procédure d'ajout de serveurs MCP dans la documentation officielle.

Variables d'environnement

Variable Défaut Rôle
FISPRO_MCP_ROOT . Racine autorisée. Aucun fichier hors de cette arborescence n'est lisible.
FISPRO_MCP_RSCRIPT Rscript Exécutable R à utiliser
FISPRO_MCP_R_TIMEOUT 120 Délai maximal d'un appel R, en secondes

Outils exposés

Outil Ce qu'il fait
check_environment Racine autorisée, disponibilité de R et du paquet FisPro
list_fis Inventaire des .fis avec entrées, sorties et nombre de règles
describe_fis Variables, partitions floues, opérateurs, règles rédigées en français
infer Sorties pour un vecteur d'entrées (backend auto / r / python)
explain_inference Degrés d'appartenance et règles déclenchées, triées par force
infer_dataset Inférence par lot sur un CSV, avec export optionnel
validate_fis Audit : sous-ensembles inutilisés, prémisses dupliquées, partitions non fortes, trous de la base de règles

Toutes les réponses d'inférence portent un champ warnings : ce sont les anomaliesrelevées à la lecture du fichier (règle tronquée, section inconnue…). Elles ne fontpas échouer le calcul mais peuvent le fausser — lisez-les avant d'exploiter un résultat.

Ce que validate_fis contrôle exactement

  • Partitions : la somme des degrés d'appartenance est échantillonnée en 101 pointssur le domaine de chaque entrée. Un creux signale une partition non forte, une sommenulle une zone qu'aucun sous-ensemble ne représente, une somme supérieure à 1 unrecouvrement excessif.
  • Base de règles : l'espace d'entrée est balayé sur une grille (budget de 4096 points,réparti sur les axes) pour repérer les régions où aucune règle ne se déclenche — cellesoù le système ne sait rien répondre.
  • Cohérence : sous-ensembles jamais employés en prémisse, prémisses dupliquées,plages invalides.

S'y ajoutent une ressource fispro://systems (inventaire) et une invite audit_prompt (audit guidé d'un modèle).

Exemple

Le dépôt contient tests/data/irrigation.fis, un système Sugeno à deux entrées (humidité du sol, température) et une sortie (durée d'arrosage) :

FISPRO_MCP_ROOT=tests/data fispro-mcp

Limites, en toute franchise

  • Le lecteur .fis est le maillon fragile. Le format est sectionné façon INI et largement compatible MATLAB, mais FisPro accepte des variantes que ce lecteur ne connaît peut-être pas. Tout ce qu'il ne comprend pas atterrit dans warnings plutôt que d'être deviné en silence — lisez-les. Si vos fichiers déclenchent des avertissements, ouvrez une issue avec un extrait anonymisé : c'est la contribution la plus utile au projet.
  • Le moteur Python couvre un sous-ensemble des fonctions d'appartenance : trimf, trapmf, gaussmf, gbellmf, si, sd, universal, et les conséquents constant / linear. Tout autre type lève une erreur explicite au lieu de renvoyer un nombre faux.
  • Côté Mamdani, la défuzzification est discrétisée sur 201 points du domaine de sortie ; centroid et mom sont implémentées, l'agrégation accepte max, sum et probor. Attendez-vous à un écart de l'ordre du pas de grille par rapport au backend R.
  • Pas d'apprentissage automatique. Induction de règles, génération de partitions, réduction d'espace : ces algorithmes vivent dans la bibliothèque C++ et ne sont pas exposés par le paquet R. Les brancher demanderait un binding pybind11 ou un appel aux exécutables en ligne de commande — c'est la prochaine étape naturelle du projet.
  • Le serveur lit et calcule ; il n'écrit pas de .fis. Concevez vos systèmes dans FisPro, exploitez-les ici.

Développement

pip install -e ".[dev]"
pytest          # sans dépendance à R
ruff check .

Arborescence :

src/fispro_mcp/   config.py, fis_model.py, inference.py, r_backend.py, server.py
tests/            tests unitaires + tests/data/irrigation.fis

Licence

Code de ce serveur : MIT (voir LICENSE).

FisPro lui-même est distribué sous licence CeCILL et n'est pas redistribué ici : le backend R appelle une installation que vous réalisez vous-même. Si vous publiez des travaux s'appuyant sur FisPro, citez Guillaume & Charnomordic, Fuzzy Inference Systems: an integrated modelling environment for collaboration between expert knowledge and data using FisPro, Expert Systems with Applications 39(10), 2012.

Ce projet n'est pas affilié à l'INRAE ni aux auteurs de FisPro.

MCP Server · Populars

MCP Server · New

    talivia-group

    Talivia Agent Kit

    Revenue-first website analytics installed and verified by AI agents through MCP

    Community talivia-group
    gura105

    Operational Ontology

    A minimal, readable reference implementation of the Operational Ontology pattern. Palantir Foundry is one implementation; this is the concept, minimized.

    Community gura105
    EllisMorrow

    Caelune

    Caelune (星野) — Local-first retrieval for private Markdown, PDF, and Tika documents, with a Windows desktop app and read-only MCP server.|本地优先的私人知识检索工具。

    Community EllisMorrow
    vmware-skills

    VMware AIops

    VMware vCenter/ESXi AI-powered monitoring and operations. Two skills: vmware-monitor (read-only, safe) and vmware-aiops (full operations) | Claude Code Skill

    Community vmware-skills
    asdecided

    AsDecided

    Native deterministic requirements-as-code engine and read-only MCP server.

    Community asdecided