Skip to main content
Glama
robbyczgw-cla

web-search-plus-mcp

🔍 web-search-plus-mcp

PyPI version Python 3.10+ MCP License: MIT Glama

MCP-сервер для многопровайдерного веб-поиска и извлечения данных с интеллектуальной автоматической маршрутизацией.

web-search-plus-mcp — это автономный MCP-пакет Web Search Plus. Он предоставляет Claude Desktop, NanoBot, Cursor и другим MCP-совместимым хостам доступ к тому же семейству механизмов маршрутизации на Python, которое используется в инструментах Hermes/OpenClaw Web Search Plus.

✨ Функции

  • 10 поисковых провайдеров — Serper, Brave, Tavily, Exa, Querit, Linkup, Firecrawl, Perplexity, You.com, SearXNG

  • 5 провайдеров извлечения данных — Firecrawl, Linkup, Tavily, Exa, You.com

  • Интеллектуальная автоматическая маршрутизация — оценивает намерение запроса и автоматически выбирает провайдера

  • Отчеты о качестве — опциональная диагностика маршрутизации/результатов

  • Режим исследования — опциональный поиск через нескольких провайдеров + извлечение данных из лучших источников с ограничением по времени

  • Запуск без установки — uvx web-search-plus-mcp

  • MCP-native — stdio-сервер, предоставляющий web_search и web_extract

Related MCP server: OneSearch MCP Server

🚀 Быстрый старт

# Run instantly with uvx
uvx web-search-plus-mcp

# Or install globally
pip install web-search-plus-mcp
web-search-plus-mcp

Для поиска требуется как минимум один учетный ключ провайдера. Для извлечения данных необходим как минимум один ключ провайдера, поддерживающего эту функцию.

⚙️ Конфигурация Claude Desktop

Добавьте в ~/Library/Application Support/Claude/claude_desktop_config.json на macOS или %APPDATA%\Claude\claude_desktop_config.json на Windows:

{
  "mcpServers": {
    "web-search-plus": {
      "command": "uvx",
      "args": ["web-search-plus-mcp"],
      "env": {
        "LINKUP_API_KEY": "your_linkup_key",
        "TAVILY_API_KEY": "your_tavily_key",
        "EXA_API_KEY": "your_exa_key",
        "FIRECRAWL_API_KEY": "your_firecrawl_key",
        "BRAVE_API_KEY": "your_brave_key",
        "SERPER_API_KEY": "your_serper_key",
        "QUERIT_API_KEY": "your_querit_key",
        "PERPLEXITY_API_KEY": "your_perplexity_key",
        "YOU_API_KEY": "your_you_key",
        "SEARXNG_INSTANCE_URL": "https://your-searxng-instance.example.com"
      }
    }
  }
}

Вы также можете разместить файл .env рядом с пакетом/проектом с теми же переменными.

🔎 Поисковые провайдеры

  • Serper — факты в стиле Google, новости, покупки, локальные запросы

  • Brave — независимый веб-индекс общего назначения

  • Tavily — исследования и анализ

  • Exa — семантический поиск, сходство, глубокий синтез/рассуждения

  • Querit — многоязычный ИИ-поиск в реальном времени

  • Linkup — обоснование/цитирование на основе источников

  • Firecrawl — веб-поиск плюс контент, готовый к парсингу

  • Perplexity — прямые синтезированные ответы

  • You.com — сниппеты в реальном времени, готовые для LLM

  • SearXNG — метапоиск с упором на конфиденциальность, размещаемый на своем сервере

📄 Провайдеры извлечения данных

  • Linkup — рекомендуемый первый выбор для чистого markdown и низкой стоимости

  • Firecrawl — надежный резервный вариант для парсинга, полезен для страниц с большим количеством JS или заблокированных страниц

  • Tavily — API для извлечения/контента

  • Exa — API для содержимого

  • You.com — сниппеты/контент, готовые для LLM, где это доступно

🛠 Справочник инструментов MCP

Параметры:

  • query — обязательный поисковый запрос

  • provider — auto, serper, brave, tavily, exa, querit, linkup, firecrawl, perplexity, you, searxng

  • count — количество возвращаемых результатов, по умолчанию 5, максимум 20

  • depth — глубина Exa: normal, deep, deep-reasoning

  • time_range — hour, day, week, month, year

  • include_domains / exclude_domains — списки разрешенных/запрещенных доменов

  • mode — normal или research

  • quality_report — включить диагностику маршрутизации/результатов

  • research_time_budget — бюджет времени (в реальном времени) для режима исследования

Пример аргументов MCP:

{
  "query": "latest Hermes Agent release",
  "provider": "linkup",
  "count": 5,
  "quality_report": true
}

web_extract

Параметры:

  • urls — обязательный список URL-адресов

  • provider — auto, firecrawl, linkup, tavily, exa, you

  • format — markdown или html

  • include_images — включить метаданные изображений, если поддерживается

  • include_raw_html — включить необработанный HTML, если поддерживается

  • render_js — отрисовать JavaScript перед извлечением, если поддерживается

Пример аргументов MCP:

{
  "urls": ["https://example.com"],
  "provider": "linkup",
  "format": "markdown"
}

🧠 Примеры автоматической маршрутизации

  • iPhone 16 Pro price → поиск в стиле покупок Serper/Brave

  • how does TCP/IP work → поиск в стиле исследований Tavily

  • latest multilingual EV market updates → поиск в реальном времени/на основе источников Querit/Linkup

  • companies like Stripe → поисковое обнаружение Exa

  • what is quantum computing → поиск с прямыми ответами Perplexity/You.com

  • privacy focused search results → SearXNG при настройке

Авторы

Построено на логике маршрутизации Web Search Plus, изначально разработанной для OpenClaw/Clawhub и позже портированной в Hermes как hermes-web-search-plus.

Лицензия

MIT © 2026 robbyczgw-cla

Available Tools

2 tools
web_extractB

Source-only URL extraction through 9 Web Search Plus v3 providers. Responses preserve bounded-context limits, truncation warnings, evidence, and page-on-demand stored-content references.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlsYesURLs to extract
spansNoSelect deterministic semantic spans from extracted text.
formatNomarkdown
providerNoauto
render_jsNo
spans_queryNoOptional query used to rank semantic spans.
include_imagesNo
include_raw_htmlNo

TDQS

B3.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure, and it does a solid job: it reveals that responses preserve bounded-context limits, include truncation warnings, retain evidence, and reference page-on-demand stored-content. These are genuinely useful behavioral traits an agent needs to anticipate before calling, going beyond a mere 'extracts pages' statement.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is tight at two sentences, front-loading the core purpose before the behavioral notes. No filler or redundant phrasing, though the second sentence is dense with jargon (bounded-context limits, page-on-demand stored-content) that could be simplified.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 8 parameters, no annotations, and no output schema, the description is too thin. It explains provider-source behavior but omits guidance on key options like rendering JavaScript, image/raw-HTML inclusion, or the semantic-span selection feature. An agent cannot infer how renders_js or include_raw_html affect output from this text.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 38% across 8 parameters, and eight parameters (spans, format, render_js, include_images, include_raw_html, spans_query, provider) receive no explanation in the description. The only link is the mention of '9 providers', which loosely maps to the provider enum, but the description does not compensate for the heavy schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource pair ('source-only URL extraction' from URLs) and names the 9 providers behind it. 'Source-only' clearly implies the tool works from given URLs rather than search terms, which helps distinguish it from its only sibling web_search, though it never names that sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Source-only URL extraction' implies the tool is for extracting content from URLs you already have, and by contrast web_search would be for discovering URLs via queries. However, the description never explicitly states 'use this when you have URLs' or 'use web_search when you need to find pages', leaving the routing decision to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool updatev4.3.1
    • Changedweb_search2 fields changed
      • addedInput schema / properties / cache_ttl
        Added value: +{
        +  "description": "Search-cache TTL in seconds. Default is 3600 if omitted.",
        +  "maximum": 86400,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / no_cache
        Added value: +{
        +  "default": false,
        +  "description": "Bypass the search cache and fetch live results. Use for recency queries when a cached hit would be stale.",
        +  "type": "boolean"
        +}
  2. 2 tool updatesv4.0.2
    • Changedweb_extract1 field changed
      • changedInput schema / properties / provider / enum
        Previous value: -[
        -  "auto",
        -  "tavily",
        -  "exa",
        -  "linkup",
        -  "parallel",
        -  "firecrawl",
        -  "you",
        -  "keenable",
        -  "serper",
        -  "hound"
        -]New value: +[
        +  "auto",
        +  "tavily",
        +  "exa",
        +  "linkup",
        +  "parallel",
        +  "firecrawl",
        +  "you",
        +  "keenable",
        +  "serper",
        +  "donsetch"
        +]
    • Changedweb_search1 field changed
      • changedInput schema / properties / provider / enum
        Previous value: -[
        -  "auto",
        -  "serper",
        -  "serpbase",
        -  "brave",
        -  "tavily",
        -  "querit",
        -  "linkup",
        -  "exa",
        -  "firecrawl",
        -  "parallel",
        -  "you",
        -  "searxng",
        -  "keenable",
        -  "hound",
        -  "octen",
        -  "tinyfish"
        -]New value: +[
        +  "auto",
        +  "serper",
        +  "serpbase",
        +  "brave",
        +  "tavily",
        +  "querit",
        +  "linkup",
        +  "exa",
        +  "firecrawl",
        +  "parallel",
        +  "you",
        +  "searxng",
        +  "keenable",
        +  "donsetch",
        +  "octen",
        +  "tinyfish"
        +]
  3. 1 tool updatev3.6.0
    • Changedweb_search2 fields changed
      • changedInput schema / properties / provider / enum
        Previous value: -[
        -  "auto",
        -  "serper",
        -  "serpbase",
        -  "brave",
        -  "tavily",
        -  "querit",
        -  "linkup",
        -  "exa",
        -  "firecrawl",
        -  "parallel",
        -  "you",
        -  "searxng",
        -  "keenable",
        -  "hound",
        -  "octen"
        -]New value: +[
        +  "auto",
        +  "serper",
        +  "serpbase",
        +  "brave",
        +  "tavily",
        +  "querit",
        +  "linkup",
        +  "exa",
        +  "firecrawl",
        +  "parallel",
        +  "you",
        +  "searxng",
        +  "keenable",
        +  "hound",
        +  "octen",
        +  "tinyfish"
        +]
      • changedInput schema / properties / search_type / description
        Previous value: -"Search vertical. Serper serves news natively; other providers report unsupported metadata."New value: +"Search vertical. Serper and TinyFish serve news natively; other providers report unsupported metadata."
  4. 2 tool updatesv3.3.1
    • Changedweb_extract3 fields changed
      • changedInput schema / properties / provider / enum
        Previous value: -[
        -  "auto",
        -  "tavily",
        -  "exa",
        -  "linkup",
        -  "parallel",
        -  "firecrawl",
        -  "you",
        -  "keenable",
        -  "serper"
        -]New value: +[
        +  "auto",
        +  "tavily",
        +  "exa",
        +  "linkup",
        +  "parallel",
        +  "firecrawl",
        +  "you",
        +  "keenable",
        +  "serper",
        +  "hound"
        +]
      • addedInput schema / properties / spans
        Added value: +{
        +  "default": false,
        +  "description": "Select deterministic semantic spans from extracted text.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / spans_query
        Added value: +{
        +  "description": "Optional query used to rank semantic spans.",
        +  "type": "string"
        +}
    • Changedweb_search1 field changed
      • changedInput schema / properties / provider / enum
        Previous value: -[
        -  "auto",
        -  "serper",
        -  "serpbase",
        -  "brave",
        -  "tavily",
        -  "querit",
        -  "linkup",
        -  "exa",
        -  "firecrawl",
        -  "parallel",
        -  "you",
        -  "searxng",
        -  "keenable"
        -]New value: +[
        +  "auto",
        +  "serper",
        +  "serpbase",
        +  "brave",
        +  "tavily",
        +  "querit",
        +  "linkup",
        +  "exa",
        +  "firecrawl",
        +  "parallel",
        +  "you",
        +  "searxng",
        +  "keenable",
        +  "hound",
        +  "octen"
        +]
  5. 1 tool update
    • Changedweb_search2 fields changed
      • changedInput schema / properties / depth / description
        Previous value: -"Exa depth: normal, deep synthesis, or deep-reasoning."New value: +"Exa depth: normal, deep multi-source search, or deep-reasoning."
      • changedInput schema / properties / provider / enum
        Previous value: -[
        -  "auto",
        -  "serper",
        -  "serpbase",
        -  "brave",
        -  "tavily",
        -  "querit",
        -  "linkup",
        -  "exa",
        -  "firecrawl",
        -  "parallel",
        -  "perplexity",
        -  "kilo-perplexity",
        -  "you",
        -  "searxng",
        -  "keenable"
        -]New value: +[
        +  "auto",
        +  "serper",
        +  "serpbase",
        +  "brave",
        +  "tavily",
        +  "querit",
        +  "linkup",
        +  "exa",
        +  "firecrawl",
        +  "parallel",
        +  "you",
        +  "searxng",
        +  "keenable"
        +]
  6. 2 tool updatesv0.16.0
    • Changedweb_extract1 field changed
      • changedInput schema / properties / provider / enum
        Previous value: -[
        -  "auto",
        -  "tavily",
        -  "exa",
        -  "linkup",
        -  "parallel",
        -  "firecrawl",
        -  "you",
        -  "keenable"
        -]New value: +[
        +  "auto",
        +  "tavily",
        +  "exa",
        +  "linkup",
        +  "parallel",
        +  "firecrawl",
        +  "you",
        +  "keenable",
        +  "serper"
        +]
    • Changedweb_search4 fields changed
      • addedInput schema / properties / country
        Added value: +{
        +  "description": "ISO 3166-1 alpha-2 country override (e.g. at, fr).",
        +  "type": "string"
        +}
      • addedInput schema / properties / freshness
        Added value: +{
        +  "description": "Unified recency filter alias for providers that support freshness.",
        +  "enum": [
        +    "day",
        +    "week",
        +    "month",
        +    "year"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / language
        Added value: +{
        +  "description": "ISO 639-1 language override (e.g. de), or auto via config defaults.",
        +  "type": "string"
        +}
      • addedInput schema / properties / search_type
        Added value: +{
        +  "default": "search",
        +  "description": "Search vertical. Serper serves news natively; other providers report unsupported metadata.",
        +  "enum": [
        +    "search",
        +    "news"
        +  ],
        +  "type": "string"
        +}
  7. 2 tool updatesv0.13.0
    • Changedweb_extract1 field changed
      • changedInput schema / properties / provider / enum
        Previous value: -[
        -  "auto",
        -  "tavily",
        -  "exa",
        -  "linkup",
        -  "parallel",
        -  "firecrawl",
        -  "you"
        -]New value: +[
        +  "auto",
        +  "tavily",
        +  "exa",
        +  "linkup",
        +  "parallel",
        +  "firecrawl",
        +  "you",
        +  "keenable"
        +]
    • Changedweb_search1 field changed
      • changedInput schema / properties / provider / enum
        Previous value: -[
        -  "auto",
        -  "serper",
        -  "serpbase",
        -  "brave",
        -  "tavily",
        -  "querit",
        -  "linkup",
        -  "exa",
        -  "firecrawl",
        -  "parallel",
        -  "perplexity",
        -  "kilo-perplexity",
        -  "you",
        -  "searxng"
        -]New value: +[
        +  "auto",
        +  "serper",
        +  "serpbase",
        +  "brave",
        +  "tavily",
        +  "querit",
        +  "linkup",
        +  "exa",
        +  "firecrawl",
        +  "parallel",
        +  "perplexity",
        +  "kilo-perplexity",
        +  "you",
        +  "searxng",
        +  "keenable"
        +]
  8. 1 tool updatev0.12.0
    • Changedweb_search1 field changed
      • changedInput schema / properties / provider / enum
        Previous value: -[
        -  "auto",
        -  "serper",
        -  "brave",
        -  "tavily",
        -  "exa",
        -  "linkup",
        -  "firecrawl",
        -  "parallel",
        -  "perplexity",
        -  "kilo-perplexity",
        -  "you",
        -  "searxng",
        -  "serpbase",
        -  "querit"
        -]New value: +[
        +  "auto",
        +  "serper",
        +  "serpbase",
        +  "brave",
        +  "tavily",
        +  "querit",
        +  "linkup",
        +  "exa",
        +  "firecrawl",
        +  "parallel",
        +  "perplexity",
        +  "kilo-perplexity",
        +  "you",
        +  "searxng"
        +]
  9. 2 tool updatesv0.9.0
    • Changedweb_extract1 field changed
      • changedInput schema / properties / provider / enum
        Previous value: -[
        -  "auto",
        -  "tavily",
        -  "exa",
        -  "linkup",
        -  "firecrawl",
        -  "you"
        -]New value: +[
        +  "auto",
        +  "tavily",
        +  "exa",
        +  "linkup",
        +  "parallel",
        +  "firecrawl",
        +  "you"
        +]
    • Changedweb_search1 field changed
      • changedInput schema / properties / provider / enum
        Previous value: -[
        -  "auto",
        -  "serper",
        -  "brave",
        -  "tavily",
        -  "exa",
        -  "linkup",
        -  "firecrawl",
        -  "perplexity",
        -  "kilo-perplexity",
        -  "you",
        -  "searxng",
        -  "serpbase",
        -  "querit"
        -]New value: +[
        +  "auto",
        +  "serper",
        +  "brave",
        +  "tavily",
        +  "exa",
        +  "linkup",
        +  "firecrawl",
        +  "parallel",
        +  "perplexity",
        +  "kilo-perplexity",
        +  "you",
        +  "searxng",
        +  "serpbase",
        +  "querit"
        +]
  10. 2 tool updatesv0.8.0
    • Addedweb_extract
    • Addedweb_search
  11. 2 tool updatesv0.7.0
    • Removedweb_extract
    • Removedweb_search
  12. 1 tool updatev0.5.1
    • Changedweb_search1 field changed
      • changedInput schema / properties / provider / enum
        Previous value: -[
        -  "auto",
        -  "serper",
        -  "brave",
        -  "tavily",
        -  "exa",
        -  "querit",
        -  "linkup",
        -  "firecrawl",
        -  "perplexity",
        -  "you",
        -  "searxng"
        -]New value: +[
        +  "auto",
        +  "serper",
        +  "brave",
        +  "tavily",
        +  "exa",
        +  "querit",
        +  "linkup",
        +  "firecrawl",
        +  "perplexity",
        +  "kilo-perplexity",
        +  "you",
        +  "searxng"
        +]

TDQS

B3.4/5.0

Scored across 2 tools

Disambiguation5/5

The two tools, web_search and web_extract, have clearly distinct purposes: one performs searches, the other extracts content from a given URL. No overlap or ambiguity exists.

Naming Consistency5/5

Both tools follow a consistent 'web_' prefix followed by a verb: search and extract. This is a clear and predictable pattern.

Tool Count3/5

With only 2 tools, the server is on the thin side. While the two tools cover the core search+extract workflow, most servers for this domain offer a few more (e.g., search options, deep links, or cached pages). It's borderline but acceptable for a minimal implementation.

Completeness5/5

For a web search and extraction service, these two operations—searching and extracting—form a complete core lifecycle. There are no missing essential operations for the stated purpose.

Maintenance

ActivityNo data
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    🔍 A Model Context Protocol (MCP) server providing unified access to multiple search engines (Tavily, Brave, Kagi), AI tools (Perplexity, FastGPT), and content processing services (Jina AI, Kagi). Combines search, AI responses, content processing, and enhancement features through a single interface.
    3
    885 npm
    355
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    A Model Context Protocol server that enables AI assistants to perform web searches using SearXNG, a privacy-respecting metasearch engine.
    1
    43
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A production-ready Model Context Protocol server that brings AI-powered web search directly into development environments, providing intelligent search results with proper citations in Claude Desktop, Cursor, or any MCP-compatible client.
    73 npm
    23
    MIT