Integrates with the Brave Search API to provide real-time web search capabilities, allowing AI assistants to retrieve up-to-date information from the web with customizable result limits
Contains a link to a detailed article about the MCP Web Search Tool's capabilities and how it enhances AI-driven web search
Mentioned in the context of a demonstration video showing the MCP Web Search Tool in action for real-time AI browsing
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Web Search ToolWhat are the latest developments in quantum computing?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Web Search Tool
An MCP server that gives an assistant live web search, full-page reading, and source citations. Stdio transport, pluggable providers, no scraper dependencies.
๐ CI
๐ License: MIT
๐ Node
Quick start ยท Tools ยท Configuration ยท Clients ยท Security ยท Changelog
Overview
Five tools: web_search, news_search, image_search, fetch_url, list_providers. Search returns ranked summaries with stable ids; fetch_url reads the page behind any id. Brave Search is the primary provider; DuckDuckGo runs without a key as a fallback.
Related MCP server: Bing Search MCP Server
Requirements
Node.js |
|
npm |
|
Brave Search API key | optional. Without it, DuckDuckGo handles |
Quick start
git clone https://github.com/gabrimatic/mcp-web-search-tool.git
cd mcp-web-search-tool
npm install
cp .env.example .env # edit BRAVE_API_KEY if you have one
npm run build
npm startRun with Docker:
docker build -t mcp-web-search .
docker run --rm -i -e BRAVE_API_KEY mcp-web-searchFor Claude Desktop, Claude Code, Codex, VS Code, Cursor, or Windsurf integration, see MCP_CLIENTS.md.
Tools
Each tool returns two content blocks: a Markdown rendering for the model and a fenced JSON block with the structured payload. Errors come back as isError: true content with an actionable message; only unknown-tool calls throw a protocol error.
web_search
Live web search. Use first for current, source-backed answers.
Parameter | Type | Description |
| string, required | Query string. |
| enum |
|
| int (1โ20) | Number of results. Default 10. |
| int | Pagination offset (web only). |
| string | Opaque cursor from a previous response. |
| string |
|
| string | ISO country code. |
| string | UI language, e.g. |
| enum |
|
| string[] | Restrict results to these hosts. |
| string[] | Drop results from these hosts (hostname-suffix match). |
news_search
Recent news with source name and publish date. Brave only.
image_search
Image results with thumbnails. Brave only.
fetch_url
Reads a search result or arbitrary http(s) URL. Pass a result id from a previous search (preferred) or a full URL.
Parameter | Type | Description |
| string | A result id (e.g. |
| string | Deprecated alias for |
| int (200โ200 000) | Soft cap on returned characters. Default 8000. |
| string | Cursor from a previous response to continue reading. |
Returns the page title, readable text (scripts, styles, nav, footer, and aside stripped), the first 25 outbound links, HTTP status, content-type, byte length, and a nextCursor when truncated.
Refuses non-http(s) schemes and any host that resolves to a private, loopback, link-local, multicast, or IPv4-mapped IPv6 private address. Details: SECURITY.md.
list_providers
Returns the registered providers and the current default. Call this once if you are unsure whether news_search or image_search are available in this session.
Configuration
All configuration is environment-driven. Reference: .env.example.
Variable | Default | Purpose |
| empty | Brave Search API key. When unset, DuckDuckGo is used. |
|
| Default result count (clamped 1โ50). |
|
| Per-request timeout in ms (1 000โ60 000). |
| auto | Force a specific provider (e.g. |
|
| When |
|
| Search cache. |
|
| URL-fetch cache. |
|
| Per-request budget for |
Project layout
src/
โโโ index.ts MCP server: tool registry, dispatch, rendering
โโโ config.ts env loader, validation, defaults
โโโ providers/
โ โโโ SearchProvider.ts abstract contract and shared types
โ โโโ SearchProviderFactory registry and default selection
โ โโโ BraveSearchProvider web/news/images via Brave API
โ โโโ DuckDuckGoProvider keyless HTML-lite fallback
โโโ services/
โ โโโ SearchService.ts provider dispatch, LRU+TTL cache
โ โโโ FetchService.ts safe URL fetch, readable extraction
โโโ utils/
โโโ http.ts native fetch, retry/backoff/timeout
โโโ html.ts zero-dep HTML to text + links
โโโ cache.ts LRU+TTL cache
โโโ ids.ts stable result-id minting and resolution
tests/ vitest suiteAdd a provider
import { SearchProvider, SearchResponse, SearchOptions } from './SearchProvider.js';
export class MyProvider extends SearchProvider {
getName() { return 'My Provider'; }
override requiresApiKey() { return true; }
async search(query: string, _opts: SearchOptions = {}): Promise<SearchResponse> {
const out = this.emptyResponse(query, 'web');
out.results = mapped; // shape: SearchResult[]
return out;
}
}Register it in SearchProviderFactory.setupDefaults. Result ids are minted automatically when you call mintResultId(url) on each entry.
Development
npm run dev # tsx watch mode
npm test # vitest (23 tests)
npm run lint
npm run format
npm run buildCI runs on Node 20, 22, and 24, plus a Docker image build. Tests cover the LRU+TTL cache, HTML extractor, DuckDuckGo parser, search-service caching, HTTP retry/backoff, SSRF guard, domain match, and the result-id resolver.
Example prompts
"What are analysts saying about the MVP race after tonight's NBA games?"
"Summarise the top three results for
RAG benchmarks 2025and pull the abstract from the first paper.""Find images of the Webb telescope's latest deep field, then open the NASA page and quote the caption."
"What's the weather in Berlin right now?"
License
Developer
© All rights reserved.
YouTube Video
A short demo of MCP Web Search Tool with Claude:
Claude + MCP Web Search โ Live Demo
Medium Article
Background on the project and how it works:
Deep Dive into MCP Web Search Tool
Support
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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/gabrimatic/mcp-web-search-tool'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
