Skip to main content
Glama

MCP MixSearch

A comprehensive Model Context Protocol (MCP) server for advanced web search functionality with multi-engine support and intelligent backend selection.

Features

  • Multi-Engine Search: Access to multiple search engines (Brave, DuckDuckGo, Google, Bing, Yandex) via DDGS library

  • Advanced Filtering: Time-based, geographic, language, and content type filtering

  • Intelligent Backend Selection: Automatically chooses optimal search engine based on parameters

  • Full Content Extraction: Extract readable content from search results and specific URLs

  • Dual Interface: Both MCP protocol and REST API with identical functionality

  • Graceful Fallbacks: Browser-based search for reliability when APIs fail

Quick Start

Install and Run

# Install uv sync # Run in MCP stdio mode (default) uv run mcp-mixsearch # Run in MCP HTTP mode uv run mcp-mixsearch --mode mcp # Or run with REST API uv run mcp-mixsearch --mode rest

Configuration

Set environment variables in a .env file or export them:

# Server Configuration MCP_HOST=localhost MCP_PORT=3000 MCP_TRANSPORT=stdio # or 'http' MCP_AUTH_ENABLED=true MCP_CORS_ORIGINS="http://localhost:3000,http://localhost:5173" # Web Search Configuration BRAVE_API_KEY=your_brave_api_key_here MAX_CONTENT_LENGTH=500000 MAX_CONCURRENT_REQUESTS=5 # Logging LOG_LEVEL=INFO

Running Modes

mcp-mixsearch supports three distinct running modes:

1. MCP HTTP Mode

Runs MCP server over HTTP without REST API endpoints.

uv run mcp-mixsearch --mode mcp

2. MCP Stdio Mode (Default)

Runs MCP server over stdio without REST API endpoints.

uv run mcp-mixsearch --mode stdio # Or just run without flags (default) uv run mcp-mixsearch

3. REST API + MCP Mode

Runs both REST API endpoints and MCP protocol over HTTP.

uv run mcp-mixsearch --mode rest

Environment Variables

You can also control modes using environment variables:

# MCP over HTTP MCP_TRANSPORT=http MCP_ONLY=true uv run mcp-mixsearch # MCP over stdio MCP_TRANSPORT=stdio MCP_ONLY=true uv run mcp-mixsearch # REST API + MCP over HTTP MCP_TRANSPORT=http MCP_ONLY=false uv run mcp-mixsearch

In HTTP modes, the server runs on http://localhost:3000 with:

  • MCP endpoint: http://localhost:3000/mcp

  • REST API docs: http://localhost:3000/docs (when REST API enabled)

  • Health check: http://localhost:3000/health (when REST API enabled)

Available Tools

MCP Tools

  1. full_web_search

    • Comprehensive web search with content extraction

    • Multi-engine search with intelligent backend selection

    • Advanced filtering: time, language, geographic, content type filters

    • Args: query, limit (1-10), include_content, max_content_length, top_n, recency_days, source, language, country

  2. get_web_search_summaries

    • Lightweight search returning only summaries

    • Same advanced filtering capabilities as full_web_search

    • Args: query, limit (1-10), top_n, recency_days, source, language, country

  3. get_single_web_page_content

    • Extract content from a specific URL

    • Args: url, max_content_length

REST API Endpoints

  • GET /search/full_web_search - Same as full_web_search with identical parameters

  • GET /search/get_web_search_summaries - Same as get_web_search_summaries with identical parameters

  • GET /search/get_single_web_page_content - Same as get_single_web_page_content

Advanced Search Features

Multi-Engine Architecture

  • Primary: DDGS library with multiple backend support (Brave, DuckDuckGo, Google, Bing, Yandex)

  • Intelligent backend selection: Automatically chooses best engine based on parameters

  • Fallbacks: Browser-based search for reliability

Supported Parameters

  • Core: query (required), limit/top_n, include_content, max_content_length

  • Time filtering: recency_days (1=day, 7=week, 30=month, 365=year)

  • Content type: source ("news", "images", "videos", "web")

  • Language filtering: language (e.g., "en", "es", "fr", "de")

  • Geographic filtering: country (e.g., "US", "GB", "FR", "DE")

Usage Examples

Basic search:

# MCP {"query": "AI developments", "limit": 5} # REST GET /search/get_web_search_summaries?query=AI%20developments&limit=5

Advanced filtering:

# MCP {"query": "climate policy", "country": "FR", "language": "fr", "recency_days": 30, "source": "news"} # REST GET /search/get_web_search_summaries?query=climate%20policy&country=FR&language=fr&recency_days=30&source=news

Project Structure

mcp-mixsearch/ ├── features/ # Feature implementations │ └── web_search/ # Web search feature │ ├── __init__.py │ ├── models.py # Pydantic models │ ├── service.py # Multi-engine search logic │ ├── tool.py # MCP tool registrations │ ├── routes.py # REST API routes │ ├── instructions.md # Full web search documentation │ ├── instructions_summaries.md # Search summaries documentation │ └── instructions_single_page.md # Single page extraction documentation ├── config.py # Configuration management ├── server.py # Main server entry point ├── pyproject.toml # Project configuration ├── uv.lock # Dependency lock file ├── README.md └── LICENSE

Development

Testing

pytest

Building

uv build

Dependencies

  • mcp-weather: Core MCP infrastructure

  • fastmcp: MCP protocol implementation

  • httpx: HTTP client for content extraction

  • playwright: Browser automation for dynamic content

  • beautifulsoup4: HTML parsing

  • fake-useragent: Random user agents

License

See LICENSE file.

-
security - not tested
A
license - permissive license
-
quality - not tested

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/geosp/mcp-mixsearch'

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