Skip to main content
Glama

get_tax_procedure

Retrieve official French tax procedure information from service-public.fr by specifying the procedure name to understand required steps and documentation.

Instructions

Get information about a tax procedure from service-public.fr

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
ctxNo
procedure_nameYes

Implementation Reference

  • Registration of the MCP tool 'get_tax_procedure' via @mcp.tool decorator, including a thin wrapper function that delegates to the scraper implementation.
    @mcp.tool( name="get_tax_procedure", description="Get information about a tax procedure from service-public.fr", ) async def get_tax_procedure_wrapper( procedure_name: str, ctx: Optional[Context] = None, ) -> Optional[Dict]: """Get information about a tax procedure from service-public.fr. Args: procedure_name: Name of the procedure (e.g., 'declaration_revenus', 'credit_impot') ctx: MCP context for logging Returns: Dict: Dictionary containing procedure information """ try: if ctx: await ctx.info(f"Getting tax procedure information for {procedure_name}") from french_tax_mcp.scrapers.service_public_scraper import get_tax_procedure result = await get_tax_procedure(procedure_name) return result except Exception as e: if ctx: await ctx.error(f"Failed to get tax procedure: {e}") return { "status": "error", "message": f"Error getting tax procedure: {str(e)}", }
  • Core handler logic: ServicePublicScraper.get_tax_procedure method performs web scraping for the specified tax procedure, maps name to URL, fetches and parses the page, extracts structured info (title, steps, etc.), and formats the result.
    async def get_tax_procedure(self, procedure_name: str) -> Dict: """Scrape information about a tax procedure from service-public.fr. Args: procedure_name: Name of the procedure (e.g., 'declaration_revenus', 'credit_impot') Returns: Dictionary containing information about the procedure """ logger.info(f"Scraping information for procedure {procedure_name}") try: # Map procedure name to URL url = self._get_procedure_url(procedure_name) if not url: return self.format_result( status="error", message=f"Unknown procedure: {procedure_name}", data={"procedure": procedure_name}, ) # Get the page response = await self.get_page(url) # Parse HTML soup = self.parse_html(response.text) # Extract procedure information procedure_info = self._extract_procedure_info(soup, procedure_name) return self.format_result( status="success", data=procedure_info, message=f"Successfully retrieved information for procedure {procedure_name}", source_url=f"{BASE_URL}{url}", ) except Exception as e: logger.error(f"Error scraping procedure information: {e}") return self.format_result( status="error", message=f"Failed to retrieve procedure information: {str(e)}", data={"procedure": procedure_name}, error=e, )
  • Helper wrapper function exported from the scraper module, creating a standalone async function that invokes the singleton scraper instance's method.
    async def get_tax_procedure(procedure_name: str) -> Dict: """Scrape information about a tax procedure from service-public.fr. Args: procedure_name: Name of the procedure (e.g., 'declaration_revenus', 'credit_impot') Returns: Dictionary containing information about the procedure """ return await service_public_scraper.get_tax_procedure(procedure_name)
  • Singleton instance of ServicePublicScraper used by the exported helper function.
    service_public_scraper = ServicePublicScraper()

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/cornelcroi/french-tax-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server