generate_tax_report
Generate detailed French tax reports on specific topics using provided tax data, with options for output format and file saving.
Instructions
Generate a detailed report about a specific tax topic
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| ctx | No | ||
| format | No | markdown | |
| output_file | No | ||
| tax_data | Yes | ||
| topic_name | Yes |
Implementation Reference
- french_tax_mcp/server.py:560-593 (registration)MCP tool registration for generate_tax_report with a wrapper function that calls the core generate_tax_report from report_generator@mcp.tool( name="generate_tax_report", description="Generate a detailed report about a specific tax topic", ) async def generate_tax_report_wrapper( tax_data: Dict[str, Any], topic_name: str, output_file: Optional[str] = None, format: str = "markdown", ctx: Optional[Context] = None, ) -> str: """Generate a tax information report. Args: tax_data: Tax information data topic_name: Name of the tax topic output_file: Optional path to save the report format: Output format ('markdown' or 'csv') ctx: MCP context for logging Returns: str: The generated report """ try: if ctx: await ctx.info(f"Generating report for {topic_name}") report = await generate_tax_report(tax_data, topic_name, output_file, format) return report except Exception as e: if ctx: await ctx.error(f"Failed to generate tax report: {e}") return f"Error generating report: {str(e)}"
- french_tax_mcp/report_generator.py:43-89 (handler)Main handler implementation in ReportGenerator class: determines report type, generates markdown or CSV content, and handles file output.async def generate_tax_report( self, tax_data: Dict[str, Any], topic_name: str, output_file: Optional[str] = None, format: str = "markdown", ) -> str: """Generate a tax information report. Args: tax_data: Tax information data topic_name: Name of the tax topic output_file: Optional path to save the report format: Output format ('markdown' or 'csv') Returns: The generated report """ logger.info(f"Generating report for {topic_name}") try: # Determine report type based on tax_data report_type = self._determine_report_type(tax_data, topic_name) # Generate report based on type if format.lower() == "csv": report = self._generate_csv_report(tax_data, topic_name, report_type) else: report = self._generate_markdown_report(tax_data, topic_name, report_type) # Save to file if output_file is specified if output_file: try: output_path = Path(output_file) output_path.parent.mkdir(parents=True, exist_ok=True) with open(output_file, "w", encoding="utf-8") as f: f.write(report) logger.info(f"Report saved to {output_file}") except Exception as e: logger.error(f"Failed to save report to {output_file}: {e}") return report except Exception as e: logger.error(f"Error generating tax report: {e}") return f"Error generating report: {str(e)}"
- Singleton instance of ReportGenerator and top-level function wrapper used by server.py wrapper.report_generator = ReportGenerator() async def generate_tax_report( tax_data: Dict[str, Any], topic_name: str, output_file: Optional[str] = None, format: str = "markdown", ) -> str: """Generate a tax information report. Args: tax_data: Tax information data topic_name: Name of the tax topic output_file: Optional path to save the report format: Output format ('markdown' or 'csv') Returns: The generated report """ return await report_generator.generate_tax_report(tax_data, topic_name, output_file, format)