Skip to main content
Glama

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 dialectes .fis

Le format .fis existe en deux variantes, et le serveur lit les deux — le dialecte est détecté à la lecture et exposé dans describe_fis.

MATLAB

FisPro natif

Écrit par

Fuzzy Logic Toolbox, exports tiers

le logiciel FisPro lui-même

Compteurs

NumInputs, NumMFs

Ninputs, NMFs, Nexceptions

Opérateur ET

AndMethod dans [System]

Conjunction dans [System]

Défuzzification

DefuzzMethod dans [System]

Defuzzification dans [Output*]

Agrégation

AggMethod

Disjunction dans [Output*]

Sous-ensemble

MF1='sec':'trimf',[0 0 40]

MF1='sec','triangular',[0 0 40]

Règle

1 2, 4 (1) : 1

1, 2, 4.000 ,

Formes

trimf, trapmf, gaussmf, gbellmf, si, sd

triangular, trapezoidal, SemiTrapezoidalInf/Sup, door

En dialecte FisPro, une sortie Nature='crisp' porte ses conclusions directement dans les règles (Sugeno d'ordre 0) ; une sortie Nature='fuzzy' se défuzzifie sur une surface. Disjunction décide du sort des règles qui partagent une conclusion : max les fusionne au degré le plus fort, sum les additionne — un choix qui change le résultat, pas un détail.

Les opérateurs area, MeanMax, MaxCrisp et sugeno de FisPro sont calculés analytiquement, sans discrétisation. Sur le contrôleur de chauffage de référence, les dix combinaisons possibles donnent la même valeur que le moteur C++ officiel, au dernier chiffre affiché.

Related MCP server: PCM

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 anomalies relevées à la lecture du fichier (règle tronquée, section inconnue…). Elles ne font pas é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 points sur le domaine de chaque entrée. Un creux signale une partition non forte, une somme nulle une zone qu'aucun sous-ensemble ne représente, une somme supérieure à 1 un recouvrement 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 — celles où 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 reste le maillon fragile. Les deux dialectes sont couverts et les 15 fichiers d'exemple livrés avec FisPro se lisent sans avertissement, mais le format admet 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 côté MATLAB ; triangular, trapezoidal, SemiTrapezoidalInf/Sup, door côté FisPro ; et les conséquents constant / linear. Les formes sinus, discrete et gaussian de FisPro ne sont pas implémentées : elles lèvent une erreur explicite plutôt que de renvoyer un nombre faux.

  • MeanMax a un cas limite connu. L'opérateur est reproduit comme la moyenne de l'alpha-coupe de la conclusion la mieux notée, écrêtée à min(1, degré). Sur les 150 lignes du jeu iris et les onze systèmes d'exemple de FisPro, une seule inférence diverge (configfpa.fis, ligne 107, 2,00 contre 2,49) : deux conclusions y sont presque à égalité et FisPro semble alors agréger différemment. Les autres opérateurs sont exacts.

  • Côté Mamdani MATLAB, la défuzzification reste discrétisée. La grille est adaptée à la finesse de la partition de sortie, mais centroid demeure une approximation ; attendez-vous à un écart de l'ordre du pas de grille. Les systèmes en dialecte FisPro, eux, ne passent pas par la grille.

  • 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.

Available Tools

7 tools
check_environmentA

Vérifie la configuration : racine autorisée, disponibilité de R et du paquet FisPro.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It adds context by naming the specific checks (authorized root, R/FisPro availability), which goes beyond the tool name, but it does not disclose the return/error behavior or explicitly state that the check is non-destructive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded French sentence naming the verb and the three specific checks. Every word earns its place; there is no filler or redundant content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 0-parameter environment check with no output schema and no annotations, the description adequately covers purpose and scope, telling the agent exactly what is verified. The only gap is the lack of result-format details, which could help the agent interpret the outcome, but the simplicity of the tool makes this a minor omission.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero properties, making schema coverage trivially 100%. With 0 parameters, the baseline is 4, and the description correctly avoids inventing parameter details, providing no additional syntactical burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'Vérifie' (checks) with a clear resource ('la configuration' — the environment configuration) and lists concrete aspects verified (authorized root, R availability, FisPro package). This clearly distinguishes it from sibling tools like list_fis and infer, which operate on FIS objects rather than the runtime environment.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is a preflight check (verifying R and FisPro availability) before using the sibling FIS tools, but it does not explicitly state when to invoke it or when to prefer alternatives. No exclusions, prerequisites, or explicit 'use this when' guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

describe_fisB

Décrit un système : variables, partitions floues, opérateurs, règles en clair.

Args: path: chemin du fichier .fis. include_rules: inclure la liste des règles rédigées en français.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
include_rulesNo

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states that the tool describes a system, but does not explicitly confirm it is read-only, mention side effects, or describe error handling (e.g., missing file). The operational behavior of reading a file is only implied via the parameter description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, using a single sentence for the core purpose and a structured Args block for parameters. It avoids unnecessary verbosity while conveying essential information. The structure is easy to parse, though the Args block partially duplicates schema information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-parameter tool with no output schema, the description covers the main purpose and parameters, but lacks details about the return value format (though 'en clair' hints at human-readable output). It also does not situate the tool within its sibling set, missing an opportunity to clarify when this description is needed versus other FIS-related operations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage, so the description compensates by providing clear meanings for both parameters: 'path' is the .fis file path and 'include_rules' indicates whether to include the list of rules in French. This goes beyond the schema's bare titles and types, though it doesn't mention the default value for include_rules.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Décrit un système' (describes a system) and enumerates the specific components covered: variables, fuzzy partitions, operators, and rules in plain language. This distinguishes it from sibling tools like 'infer' or 'list_fis' which serve different functions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no explicit guidance on when to use this tool versus alternatives. It implies usage through the 'path' argument but does not mention exclusion criteria or conditions under which other tools (e.g., explain_inference, validate_fis) would be more appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

explain_inferenceA

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.

Args: path: chemin du fichier .fis. inputs: une valeur par entrée. top_k: nombre maximum de règles détaillées, triées par force décroissante.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
top_kNo
inputsYes

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It discloses that the tool explains reasoning and is 'Calculé par le moteur Python,' but it does not explicitly state whether it is read-only or describe side effects. This is a moderate level of transparency, covering what it does but not a full safety profile.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently structured, starting with the core purpose, followed by a usage recommendation and a brief implementation note, then a compact Args list. Every sentence earns its place without unnecessary fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the moderate complexity (3 params, no output schema, no annotations), the description covers purpose, usage, and all parameters, and hints at output content (membership degrees and rules). It would benefit from a more explicit description of the return format or potential errors, but it is sufficiently complete for an explanation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate fully. It does so by explaining each parameter: path ('chemin du fichier .fis'), inputs ('une valeur par entrée'), and top_k ('nombre maximum de règles détaillées, triées par force décroissante'). This adds meaning beyond the bare schema types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Explique le raisonnement : degrés d'appartenance et règles déclenchées' and positions it as the tool for understanding *why* the system produces a given output. This distinguishes it from siblings like infer and describe_fis, making the scope explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says 'C'est l'outil à privilégier pour comprendre *pourquoi* le système produit une sortie donnée,' providing a clear when-to-use directive. However, it does not mention exclusions or alternatives by name, so it lacks the full when-not/alternatives guidance for a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

inferA

Calcule les sorties du système flou pour un vecteur d'entrées.

Args: path: chemin du fichier .fis. inputs: une valeur par entrée, dans l'ordre déclaré dans le fichier. backend: "auto" (R si disponible), "r" ou "python".

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
inputsYes
backendNoauto

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must carry full behavioral disclosure. It only states 'Calcule les sorties', implying a non-destructive computation, but does not describe return value format, error handling, or backend behavior (e.g., what happens if R is unavailable).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and well-structured: a single purpose sentence followed by a concise args list. No redundant or irrelevant content; every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple inference tool with three parameters, the description covers purpose and all parameters, including the backend default. However, it does not describe the output format or error scenarios, though the output is implied by 'sorties'. Given the lack of an output schema, a bit more detail on the return value would improve completeness, but it is mostly sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description fully explains each parameter beyond the bare schema names: 'path: chemin du fichier .fis', 'inputs: une valeur par entrée, dans l'ordre déclaré dans le fichier', and 'backend: "auto" (R si disponible), "r" ou "python"'. This adds critical meaning about input ordering and backend options, compensating for the 0% schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Calcule les sorties du système flou pour un vecteur d'entrées' identifies a specific verb (Calcule), resource (système flou), and scope (vecteur d'entrées). This clearly differentiates from the sibling 'infer_dataset' by explicitly focusing on a single input vector.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'infer_dataset' or 'explain_inference'. The description lacks explicit context, prerequisites, or exclusions, leaving the agent to infer usage only from the parameter list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

infer_datasetA

Applique le système flou à toutes les lignes d'un fichier CSV.

Args: path: chemin du fichier .fis. csv_path: CSV dont les colonnes correspondent aux entrées (par nom, sinon par ordre). output_csv: si fourni, écrit le résultat complet dans ce fichier. backend: "auto", "r" ou "python". max_preview: nombre de lignes retournées dans la réponse.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
backendNoauto
csv_pathYes
output_csvNo
max_previewNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses key behaviors like writing a full result to an optional output file and returning a preview limited by max_preview, but does not mention side effects such as file overwriting or error handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-organized with a clear purpose statement followed by a parameter list. It is concise and relevant, though the 'Args:' header could be considered unnecessary structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the main flow of input files, optional output, backend, and preview size, but lacks details on the exact output structure and potential file system side effects. Given the absence of an output schema, this is a notable gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description provides thorough explanations for all five parameters, including file paths, column matching, optional output, backend choices, and preview size. This fully compensates for the 0% schema description coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool applies the fuzzy system to all rows of a CSV file, using a specific verb and resource. It distinguishes from sibling tools like 'infer' by the explicit batch scope, though it does not name alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance is given on when to use this tool versus alternatives such as 'infer' for single inferences. The description implies batch usage but lacks context about when not to use it or how it fits into the workflow.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_fisB

Liste les fichiers .fis disponibles sous la racine autorisée.

Args: directory: sous-répertoire à explorer (relatif à la racine). recursive: explorer aussi les sous-dossiers.

ParametersJSON Schema
NameRequiredDescriptionDefault
directoryNo.
recursiveNo

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits. It only states what the tool lists and defines parameters, but does not mention return format, error behavior, or that the operation is read-only. The agent is left without critical operational context such as what 'available' means or what the response contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately short: one purpose sentence followed by a clean argument list. Every part earns its place, and the structure front-loads the main verb and resource. No unnecessary information is present.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple but the description omits information about the output format or how the return value is structured. Since there is no output schema, the agent cannot predict whether paths, filenames, or other details are returned. The authorized root is also left undefined, making the tool's behavior incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema only provides titles and defaults, but the description's Args section explains that 'directory' is a sub-directory relative to root and 'recursive' controls sub-folder exploration. This adds meaningful semantics that the schema lacks, fully compensating for the 0% schema description coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function using the specific verb 'Liste' and the resource '.fis files'. It also mentions the constrained scope of 'sous la racine autorisée', which adds precision. This clearly distinguishes it from sibling tools like describe_fis or validate_fis, which operate on files rather than listing them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives. The description only provides parameter definitions and does not mention use cases, prerequisites, or exclusions. Sibling tools are not referenced, leaving the agent without context for tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_fisA

Contrôle la santé d'un système : partitions, couverture des règles, incohérences.

Signale notamment les sous-ensembles flous jamais utilisés par une règle, les doublons de prémisses et les plages incohérentes.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of disclosure. It adds meaningful behavioral detail by specifying exactly what the tool detects and reports (unused subsets, duplicate premises, incoherent ranges). It does not mention side effects, but 'validate' and 'signale' strongly imply a read-only reporting operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise, front-loaded sentences: the first states the purpose and main categories, the second adds concrete examples of detected problems. Every sentence adds value and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description gives a strong overview of the tool's behavior and checks, but lacks guidance on the meaning of the required 'path' parameter and the exact return/error behavior. Given there are no annotations or output schema, the description is adequate but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not mention the 'path' parameter at all. The only available meaning is the schema title 'Path', which is insufficient to clarify what path should point to (e.g., a file, directory, or system definition). The description fails to compensate for the low schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Contrôle') and enumerates concrete validation targets: partitions, rule coverage, inconsistencies, unused fuzzy subsets, duplicate premises, and incoherent ranges. This clearly distinguishes validate_fis from sibling tools like list_fis, describe_fis, and infer, which serve different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies when to use the tool: to check the health of a fuzzy inference system and detect structural problems. It does not explicitly mention alternatives or when not to use it, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 7 tool updatesv0.3.0
    • First observedcheck_environment
    • First observeddescribe_fis
    • First observedexplain_inference
    • First observedinfer
    • First observedinfer_dataset
    • First observedlist_fis
    • First observedvalidate_fis

TDQS

A4/5.0

Scored across 7 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: environment check, file listing, system description, single inference, inference explanation, dataset inference, and validation. There is no overlap; even infer and explain_inference are clearly separated by output (results vs. reasoning).

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun or verb pattern (check_environment, list_fis, describe_fis, infer, explain_inference, infer_dataset, validate_fis). The only minor deviation is the bare verb 'infer', but it is clean and understandable in context.

Tool Count5/5

Seven tools is a well-scoped count for a fuzzy inference system server. Each tool covers a distinct operation needed to work with FIS files, and none feel redundant or excessive.

Completeness5/5

The tool surface covers the full workflow for the domain: preparing/checking the environment, discovering and inspecting FIS files, running single and batch inferences, understanding inference results, and validating system integrity. No obvious dead ends or missing core operations.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    F
    maintenance
    MCP server for reverse engineering that enables interaction with IDA Pro for analysis tasks such as decompilation, disassembly, and memory engagement reports.
    24
    46
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    A FastMCP-based server that enables interaction with MySQL databases, supporting client-server communication for querying and analyzing MySQL data.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server for performing filesystem operations, enabling file management and manipulation through natural language.
    MIT