MCP server for French tax calculations and information retrieval with focus on individual taxpayers
The server provides 6 tools with functional descriptions and basic parameter documentation. However, critical gaps limit production readiness: (1) No visible input schemas in the provided source code, only parameter names and descriptions are shown, preventing verification of formal JSON Schema definitions; (2) Parameter descriptions lack specificity around constraints, ranges, and valid values; (3) Output schemas are not documented; (4) Error handling is not visible in the provided code; (5) Tool composition could be improved, 'get_tax_info_from_web' and 'get_cached_tax_info' are closely related and could share parameters more explicitly. The server demonstrates competent naming (all tools start with action verbs: get_, calculate_, generate_) and reasonable descriptions (avg ~100-150 chars), placing it in the 'Fair' range. The detailed MCP instructions are helpful but do not compensate for missing schema documentation and weak parameter constraints.
Calculate income tax based on net taxable income and household composition
Generate a comprehensive tax information report
Get previously cached tax information data as fallback when web scraping fails
Get detailed information about a specific tax form including fields and instructions
Get income tax brackets (tranches d'imposition) for a specific year
Get tax information from official French government websites like impots.gouv.fr, service-public.fr, or legifrance.gouv.fr
Input schemas not visible in provided source code. No JSON Schema parameter definitions shown, only inline parameter descriptions. Cannot verify type constraints, enums, or ranges.
Output schemas and return types are not documented. LLMs cannot infer what fields the tools return or plan downstream tool calls effectively.
Parameter descriptions lack specificity. 'year' is described as 'defaults to current year if not specified' but no minimum/maximum bounds are defined. 'form_number' accepts strings but valid format/examples are missing. 'tax_data' in generate_tax_report is vague ('object').
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 54 | <=2025-11-25 | v2 |
| 2026-03-09 | D | 55 | - | v1 |
No error handling guidance visible. Error responses likely do not inform LLMs of retry strategies, user-fixable vs. fatal errors, or recovery paths (e.g., when web scraping fails, how should the agent proceed?).
Tool cohesion issue: 'get_tax_info_from_web' and 'get_cached_tax_info' are fallback pairs but do not share a unified parameter schema. LLMs may struggle to orchestrate the fallback workflow cleanly.
Potential information leakage: 'generate_tax_report' accepts 'output_file' parameter pointing to local file paths. No sanitization hints visible; path traversal risk if user input is not validated.
No pagination or result limiting documented. Tools like 'get_tax_info_from_web' may return large amounts of text; no limit, offset, or pagination mechanism is described.
Missing input validation rules. 'year' parameter has no explicit bounds (e.g., 1900 - 2100). 'household_parts' in calculate_income_tax accepts 'number' but range and increment (0.5, 1.0, 1.5, 2.0) are not specified.