FastMCP demonstration server providing mathematical tools, authentication middleware, and structured logging for agent tool-calling validation
Server exposes 11 tools with basic schemas and descriptions, but significant quality gaps undermine production readiness. Tool naming lacks action verbs (hello_world, unstable_tool, timeout_tool are vague). Descriptions are present but generic, most under 100 chars, lacking context on WHEN to use each tool or what happens on error. Parameter descriptions are minimal (e.g., 'nom à saluer' vs actionable guidance). No output schemas documented. Error handling is mentioned in docstrings (divide, factorial, mean, variance) but not structured for LLM recovery. Duplicate tool 'hello_world' (tools 1 and 9) signals poor composition. Test/mock tools (unstable_tool, timeout_tool) should not be exposed in production. Math tools (add, multiply, divide, power, factorial, mean, variance) are well-typed but lack real-world context, no guidance on precision, overflow, or when to use each. Overall: functional but not LLM-optimized.
Additionne deux nombres réels. Paramètres: - a (float): premier nombre - b (float): second nombre Retour: - float: somme de a et b
Divise deux nombres réels. Paramètres: - a (float): numérateur - b (float): dénominateur (non nul) Retour: - float: quotient de a par b Erreurs: - ValueError: si le dénominateur est nul
Calcule la factorielle d'un entier positif. Paramètres: - n (int): entier supérieur ou égal à 0 Retour: - int: factorielle de n Erreurs: - ValueError: si n est négatif
Renvoie une salutation incluant l'identifiant de l'agent appelant. Paramètres: - name (str): nom à saluer Retour: - str: "Hello <name> ! Agent: <agent_id>"
Return a greeting message.
Calcule la moyenne arithmétique d'une liste de nombres. Paramètres: - values (List[float]): liste non vide de valeurs Retour: - float: moyenne des valeurs Erreurs: - ValueError: si la liste est vide
Duplicate tool 'hello_world' (tools 1 and 9) with different descriptions and implementations. Violates single-responsibility principle and confuses LLM tool selection.
Tool names lack action verbs. 'hello_world', 'unstable_tool', 'timeout_tool' are vague and do not signal intent. Should be 'greet_user', 'simulate_failure', 'simulate_latency' or removed if test-only.
No output schemas documented. Math tools (add, multiply, divide, power, factorial, mean, variance) return numbers but LLM cannot infer structure, precision, or error format. Breaks downstream tool chaining.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
Multiplie deux nombres réels. Paramètres: - a (float): premier nombre - b (float): second nombre Retour: - float: produit de a et b
Élève un nombre à une puissance. Paramètres: - base (float): base - exponent (float): exposant Retour: - float: base élevée à la puissance exponent
Fake slow tool used for testing latency handling.
Tool that simulates a failure when input is 'error'.
Calcule la variance (population) d'une liste de nombres. Paramètres: - values (List[float]): liste non vide de valeurs Retour: - float: variance des valeurs Erreurs: - ValueError: si la liste est vide
Error handling documented in descriptions (e.g., 'ValueError: si le dénominateur est nul') but not structured for LLM recovery. No guidance on what to do next or how to self-correct.
Test/mock tools (unstable_tool, timeout_tool) exposed in production server. These should be removed or gated behind a debug flag. They add noise and confuse LLM tool selection.