Skip to main content
Glama

search

Perform web searches with customizable parameters including categories, search engines, language, time range, and safe search settings.

Instructions

Search using SearXNG

Args:
    query: The search query
    categories: Optional comma-separated list of categories
    engines: Optional comma-separated list of engines
    language: Optional language code
    page: Page number (default: 1)
    time_range: Optional time range (day, month, year)
    safe_search: Safe search level (0, 1, 2)

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
queryYes
categoriesNo
enginesNo
languageNo
pageNo
time_rangeNo
safe_searchNo

Implementation Reference

  • server.py:37-87 (handler)
    The search tool handler, decorated with @mcp.tool(). It performs an HTTP request to a SearXNG instance using parameters provided to the tool.
    @mcp.tool()
    def search(query: str, categories: Optional[str] = None, engines: Optional[str] = None, 
               language: Optional[str] = None, page: int = 1, time_range: Optional[str] = None,
               safe_search: int = 1) -> Dict[str, Any]:
        """
        Search using SearXNG
        
        Args:
            query: The search query
            categories: Optional comma-separated list of categories
            engines: Optional comma-separated list of engines
            language: Optional language code
            page: Page number (default: 1)
            time_range: Optional time range (day, month, year)
            safe_search: Safe search level (0, 1, 2)
        """
        logger.info(f"Received search request - Query: {query}")
        
        params = {
            "q": query,
            "format": "json",
            "pageno": page,
            "safesearch": safe_search
        }
        
        if categories:
            params["categories"] = categories
            logger.debug(f"Categories specified: {categories}")
        if engines:
            params["engines"] = engines
            logger.debug(f"Engines specified: {engines}")
        if language:
            params["language"] = language
            logger.debug(f"Language specified: {language}")
        if time_range:
            params["time_range"] = time_range
            logger.debug(f"Time range specified: {time_range}")
            
        logger.debug(f"Making request to SearXNG with params: {params}")
        try:
            response = client.get(urljoin(SEARXNG_URL, "/search"), params=params)
            response.raise_for_status()
            result = response.json()
            logger.info(f"Search completed successfully - Found {len(result.get('results', []))} results")
            return result
        except httpx.HTTPError as e:
            logger.error(f"HTTP error occurred during search: {str(e)}")
            raise
        except Exception as e:
            logger.error(f"Unexpected error during search: {str(e)}")
            raise
Install Server

Other Tools

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/maccam912/searxng-mcp-server'

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