MCP server that fetches product recall data from RappelConso API (data.economie.gouv.fr)
Single tool server with a clear domain focus (RappelConso product recalls). Tool name is reasonably action-oriented ('rappel-conso-tool'), description is present and adequate (87 chars), and input schema is properly defined with Zod. However, the tool name deviates from standard verb_noun conventions (missing a leading action verb like 'get_' or 'search_'), and the output schema is not explicitly documented in the tool definition. Parameter descriptions are present but minimal. No error guidance for LLMs, and destructive operations are not marked with tool annotations.
Récupère les derniers rappels de produits depuis l'API RappelConso de data.gouv.fr
Tool name lacks leading action verb. 'rappel-conso-tool' should be 'get_rappel_conso' or 'search_product_recalls' to signal the action and improve LLM tool selection.
Output schema not documented in tool definition. The tool returns RappelConsoResponse with total_count and results array, but this structure is not declared in the @Tool decorator or visible to LLMs calling the tool.
No tool annotations present. The tool is read-only (Risk: READ_ONLY declared in metadata), but the source code does not use @Tool decorator properties like readOnlyHint to signal this to MCP clients.
Error handling returns HTTP exceptions without actionable guidance for LLMs. Generic messages like 'API Error: <error.message>' or 'An unexpected error occurred' provide no recovery path. Should return error details with suggested next steps (e.g., 'API returned 400. Verify query syntax matches SQL WHERE clause format').
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 57 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 44 | - | v1 |
Parameter descriptions lack format and constraint details. 'Filtre de recherche. Exemple: ...' includes an example inline, which LLMs may reuse literally. Should use formal constraints: 'SQL WHERE clause fragment (e.g., field_name like \'value\' or field_name = 123). Valid fields: [list]'.