Skip to main content

Multi-provider web search, extraction, optional cited answers, and onboarding for MCP clients

Project description

๐Ÿ” web-search-plus-mcp

web search plus logo

PyPI version Python 3.10+ MCP License: MIT Glama

Multi-provider web search, URL extraction, and optional cited answers for MCP clients.

web-search-plus-mcp is the standalone MCP packaging of Web Search Plus. It gives Claude Desktop, Cursor, NanoBot, Hermes native MCP, and other MCP-compatible hosts the same provider family used by the Hermes/OpenClaw Web Search Plus tools.

Version note: web-search-plus-mcp uses its own MCP package version (0.5.1) while tracking the Web Search Plus engine family (v1.9.x). The Hermes plugin is versioned separately as hermes-web-search-plus v1.9.x.

โœจ Features

  • 11 search providers โ€” Serper, Brave, Tavily, Exa, Querit, Linkup, Firecrawl, native Perplexity, Kilo Perplexity, You.com, SearXNG
  • 5 extract providers โ€” Linkup, Firecrawl, Tavily, Exa, You.com
  • Optional beta web_answer โ€” cited source-backed briefs when you explicitly want synthesis instead of raw results
  • Intelligent auto-routing โ€” scores query intent and picks a provider automatically
  • Quality reports โ€” optional routing/result diagnostics
  • Research mode โ€” opt-in multi-provider search + top-source extraction with a time budget
  • Onboarding CLI โ€” status, list, setup, and persistent routing config helpers for MCP env/config wiring
  • Zero-install run โ€” uvx web-search-plus-mcp
  • MCP-native โ€” stdio server exposing web_search, web_extract, and opt-in web_answer

๐Ÿš€ Quick Start

# Run the MCP server instantly with uvx
uvx web-search-plus-mcp

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

At least one provider credential is required for search. Extraction needs at least one extraction-capable provider key.

๐Ÿงญ Easier onboarding

Check configured providers:

web-search-plus-mcp status

List providers or presets:

web-search-plus-mcp list providers
web-search-plus-mcp list presets

Write a starter .env template and print a canonical MCP stdio snippet:

web-search-plus-mcp setup --preset starter

The recommended starter preset is Tavily + Linkup + Brave. It gives a practical baseline for search, extraction, and cited-answer experiments without wiring every provider on day one.

Add --enable-answer if you want the generated .env and snippet to opt into the beta web_answer tool:

web-search-plus-mcp setup --preset starter --enable-answer

status returns a non-zero exit code when no search provider is configured, which makes it usable as a config check in scripts.

Persistent routing preferences live in config.json rather than .env:

web-search-plus-mcp config show
web-search-plus-mcp config set-default brave      # strict fixed-provider mode
web-search-plus-mcp config set-routing on         # restore auto-routing
web-search-plus-mcp config set-priority tavily,linkup,brave
web-search-plus-mcp config set-fallback tavily
web-search-plus-mcp config disable perplexity
web-search-plus-mcp config enable perplexity
web-search-plus-mcp config disable kilo-perplexity
web-search-plus-mcp config set-threshold 0.45
web-search-plus-mcp config reset --yes

Use --config-path /path/to/config.json or WEB_SEARCH_PLUS_CONFIG=/path/to/config.json for isolated MCP host installs. Provider secrets stay in environment variables; routing behavior stays in config.json.

Other presets:

  • minimal โ€” Brave only
  • lean โ€” Tavily + Linkup
  • starter โ€” Tavily + Linkup + Brave
  • all โ€” every supported provider env var

โš™๏ธ MCP host config

Canonical stdio snippet for Claude Desktop, Cursor, NanoBot, or Hermes native MCP:

{
  "mcpServers": {
    "web-search-plus": {
      "command": "uvx",
      "args": ["web-search-plus-mcp"],
      "env": {
        "LINKUP_API_KEY": "your_linkup_key",
        "TAVILY_API_KEY": "your_tavily_key",
        "BRAVE_API_KEY": "your_brave_key"
      }
    }
  }
}

WSP_ENABLE_WEB_ANSWER=1 is optional. Without it, the MCP server exposes only the stable web_search and web_extract tools.

Common places to paste this snippet:

  • Claude Desktop macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Claude Desktop Windows: %APPDATA%\\Claude\\claude_desktop_config.json
  • Claude Desktop Linux: ~/.config/Claude/claude_desktop_config.json
  • Cursor: project/user MCP config using the same mcpServers shape
  • Hermes native MCP: ~/.hermes/config.yaml under mcp_servers with equivalent command/env fields

You can also place a .env file next to the package/project with the same variables.

๐Ÿ”Ž Search Providers

  • Serper โ€” Google-style facts, news, shopping, local queries
  • Brave โ€” general-purpose independent web index
  • Tavily โ€” research and analysis
  • Exa โ€” semantic discovery, similarity, deep/deep-reasoning synthesis
  • Querit โ€” multilingual, real-time AI search
  • Linkup โ€” source-backed grounding/citations
  • Firecrawl โ€” web search plus scrape-ready content
  • Perplexity โ€” native Perplexity API direct synthesized answers (PERPLEXITY_API_KEY, sonar-pro)
  • Kilo Perplexity โ€” Perplexity via Kilo gateway (KILOCODE_API_KEY, perplexity/sonar-pro)
  • You.com โ€” LLM-ready real-time snippets
  • SearXNG โ€” privacy-first self-hosted meta-search

๐Ÿ“„ Extract Providers

  • Linkup โ€” recommended first choice for clean markdown and low cost
  • Firecrawl โ€” robust scrape fallback, useful for JS-heavy/blocked pages
  • Tavily โ€” extraction/content API
  • Exa โ€” contents API
  • You.com โ€” LLM-ready snippets/content where available

๐Ÿ›  MCP Tool Reference

This MCP server exposes web_search and web_extract by default. It exposes web_answer only when WSP_ENABLE_WEB_ANSWER=1 is set.

The Hermes plugin exposes the same capability as web_search_plus, web_extract_plus, and web_answer_plus; the names differ because MCP and Hermes use different tool surfaces.

web_search

Use for source discovery, current events, prices, weather, sports lineups, schedules, and whenever you want the raw search landscape first.

Parameters:

  • query โ€” required search query
  • provider โ€” auto, serper, brave, tavily, exa, querit, linkup, firecrawl, perplexity, kilo-perplexity, you, searxng
  • count โ€” results to return, default 5, max 20
  • depth โ€” Exa depth: normal, deep, deep-reasoning
  • time_range โ€” hour, day, week, month, year
  • include_domains / exclude_domains โ€” domain allow/deny lists
  • mode โ€” normal or research
  • quality_report โ€” include routing/result diagnostics
  • research_time_budget โ€” best-effort wall-clock budget for research mode

Example MCP arguments:

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

web_extract

Parameters:

  • urls โ€” required list of URLs
  • provider โ€” auto, firecrawl, linkup, tavily, exa, you
  • format โ€” markdown or html
  • include_images โ€” include image metadata when supported
  • include_raw_html โ€” include raw HTML when supported
  • render_js โ€” render JavaScript before extraction when supported

Example MCP arguments:

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

web_answer optional beta

Use when you specifically want a short cited synthesis. Do not use it as a default replacement for web_search.

web_answer is slower than web_search because it searches, selects sources, and may extract top URLs. Its freshness default is none to avoid over-triggering recency filters on evergreen questions.

Parameters:

  • query โ€” required question/topic
  • mode โ€” quick or deep, default quick
  • sources โ€” citation-ready source target, default 3, max 10
  • freshness โ€” none, auto, day, week, month, year, default none
  • max_extracts โ€” top URLs to extract, default 2, max 5
  • output โ€” answer, brief, sources, or json

Enable it:

{
  "env": {
    "WSP_ENABLE_WEB_ANSWER": "1",
    "LINKUP_API_KEY": "your_linkup_key",
    "TAVILY_API_KEY": "your_tavily_key"
  }
}

Example MCP arguments:

{
  "query": "What changed in Hermes Agent's latest release?",
  "mode": "quick",
  "sources": 3,
  "freshness": "none"
}

๐Ÿง  Auto-Routing Examples

  • iPhone 16 Pro price โ†’ Serper/Brave shopping-style search
  • how does TCP/IP work โ†’ Tavily research-style search
  • latest multilingual EV market updates โ†’ Querit/Linkup real-time/source-backed search
  • companies like Stripe โ†’ Exa discovery search
  • what is quantum computing โ†’ Perplexity/You.com direct-answer style search
  • privacy focused search results โ†’ SearXNG when configured

Credits

Built on the Web Search Plus routing logic originally developed for OpenClaw/Clawhub and later ported to Hermes as hermes-web-search-plus.

License

MIT ยฉ 2026 robbyczgw-cla

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

web_search_plus_mcp-0.5.1.tar.gz (948.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

web_search_plus_mcp-0.5.1-py3-none-any.whl (51.9 kB view details)

Uploaded Python 3

File details

Details for the file web_search_plus_mcp-0.5.1.tar.gz.

File metadata

  • Download URL: web_search_plus_mcp-0.5.1.tar.gz
  • Upload date:
  • Size: 948.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for web_search_plus_mcp-0.5.1.tar.gz
Algorithm Hash digest
SHA256 55af81e9d9ba0f843decb6385fc4ebe2517257544ef8dcb6485fdb2cc6cb927f
MD5 4558eb27408baac6efbddca153d95cfa
BLAKE2b-256 066fcda88ce164f3e42fafb04205bfc06f064c8640d877911cb76c337a08d8b3

See more details on using hashes here.

File details

Details for the file web_search_plus_mcp-0.5.1-py3-none-any.whl.

File metadata

File hashes

Hashes for web_search_plus_mcp-0.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b32f79c9f55b16093b72bea2fbe8d25d98d1e1b7a58822ad400fc978cf47f675
MD5 45a3075f954a2faeb1d3253591349389
BLAKE2b-256 14899aaddf518fe96f360fc075a8c25deb61ad8a829f290b4c0cf9860e780376

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page