Skip to main content
Glama
netixc

SearXNG MCP Server

search_media

Find images or videos using a privacy-focused search tool that aggregates results from multiple engines without tracking user data.

Instructions

Search for images or videos.

Use this when:

  • User wants to find images or photos

  • Looking for video content

  • "show me pictures of..." or "find videos about..."

Parameters: query* - What to find media_type - "images" or "videos" (default: images) engines - Optional: Specific engines max_results - Number of results (default: 10, max: 50)

Returns: Media URLs with thumbnails and sources

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
queryYesMedia search query
media_typeNoType of mediaimages
enginesNoComma-separated engine list
max_resultsNoMaximum results

Implementation Reference

  • The core handler function implementing the search_media tool logic. It queries the SearXNG API with the specified media category (images/videos), processes the results, and formats them into a markdown-style TextContent response.
    def search_media(
        self,
        query: str,
        media_type: Literal["images", "videos"] = "images",
        engines: Optional[str] = None,
        max_results: int = 10
    ) -> List[TextContent]:
        """Search for images or videos.
    
        Args:
            query: Search query
            media_type: "images" or "videos"
            engines: Comma-separated engine list
            max_results: Maximum results to return
    
        Returns:
            Formatted media search results
        """
        results = self._search(query, category=media_type, engines=engines)
    
        if media_type == "images":
            output = f"🖼️ Image Results for: {query}\n\n"
            for i, result in enumerate(results.get("results", [])[:max_results], 1):
                output += f"{i}. **{result.get('title', 'No title')}**\n"
                output += f"   URL: {result.get('img_src', 'N/A')}\n"
                output += f"   Source: {result.get('url', 'N/A')}\n"
                if result.get('thumbnail_src'):
                    output += f"   Thumbnail: {result['thumbnail_src']}\n"
                output += "\n"
        else:  # videos
            output = f"🎥 Video Results for: {query}\n\n"
            for i, result in enumerate(results.get("results", [])[:max_results], 1):
                output += f"{i}. **{result.get('title', 'No title')}**\n"
                output += f"   {result.get('url', '')}\n"
                if result.get('content'):
                    output += f"   {result['content']}\n"
                if result.get('publishedDate'):
                    output += f"   Published: {result['publishedDate']}\n"
                output += "\n"
    
        if not results.get("results"):
            output += f"No {media_type} found.\n"
    
        return [TextContent(type="text", text=output)]
  • MCP tool registration for search_media using FastMCP decorator, including input schema via Annotated Fields. Delegates execution to the SearchTools instance.
    @self.mcp.tool(description=SEARCH_MEDIA_DESC)
    def search_media(
        query: Annotated[str, Field(description="Media search query")],
        media_type: Annotated[Literal["images", "videos"], Field(description="Type of media")] = "images",
        engines: Annotated[Optional[str], Field(description="Comma-separated engine list")] = None,
        max_results: Annotated[int, Field(description="Maximum results", ge=1, le=50)] = 10
    ):
        return self.search_tools.search_media(query, media_type, engines, max_results)
  • Tool description string providing usage guidelines, parameters, and return format for the search_media tool.
    SEARCH_MEDIA_DESC = """Search for images or videos.
    
    Use this when:
    - User wants to find images or photos
    - Looking for video content
    - "show me pictures of..." or "find videos about..."
    
    Parameters:
    query* - What to find
    media_type - "images" or "videos" (default: images)
    engines - Optional: Specific engines
    max_results - Number of results (default: 10, max: 50)
    
    Returns: Media URLs with thumbnails and sources"""

Tool Definition Quality

Score is being calculated. Check back soon.

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/netixc/SearxngMCP'

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