Stable result ids mean the model can search, choose a result, and read that exact page without re-deriving a URL — and `max_chars` with a continuation cursor means a long page arrives in readable pieces rather than blowing the context in one go. The fetcher refuses non-http(s) schemes and any host resolving to a private, loopback, link-local or multicast address, which matters because a fetch tool is otherwise an easy way to reach a model's own network. Keyless mode works for plain web search; add a Brave key before planning on news or images.
An MCP server that pairs search with retrieval. Searches come back as ranked summaries with stable result ids, and the fetch tool reads the full page behind any id, so an answer can be grounded in the source text rather than a snippet. Brave Search is the primary provider; DuckDuckGo runs without a key.
- Web search with a deep filter set — result count from 1 to 20, pagination offset or cursor, freshness windows from the past day to the past year or an explicit date range, country, language, safesearch level, and include or exclude lists of hostnames — `web_search`
- Recent news with source name and publish date, and image results with thumbnails, both through Brave — `news_search`, `image_search`
- The page behind a result id or any http(s) URL, returned as readable text with scripts, styles, nav, footer and aside stripped, plus title, the first 25 outbound links, HTTP status, content type, byte length, and a cursor to continue when the text is longer than your character cap — `fetch_url`
- The registered providers and which one is currently the default, so you can tell whether news and image search are available in this session — `list_providers`
- Every tool returning two blocks: a Markdown rendering for the model, and a fenced JSON block with the structured payload
A Brave Search API key is optional: without it DuckDuckGo handles `web_search`, while `news_search` and `image_search` need the key. Set it as `BRAVE_API_KEY`, or set `ALLOW_KEYLESS` to false to make the server refuse to start without one. Node.js >= 20.18 and npm >= 10; the npm package name is `mcp-web-search-tool` (2.0.0), built from a clone with `npm install` and `npm run build`, or run as a Docker image. `MAX_RESULTS`, `REQUEST_TIMEOUT`, `DEFAULT_PROVIDER`, the two cache pairs and `FETCH_TIMEOUT_MS` / `FETCH_MAX_BYTES` set the defaults and budgets.
One command plus a key — npx -y github:gabrimatic/mcp-web-search-tool, then supply credentials
