serper-search-mcp-server
Uses the Brave Search API as an independent-index fallback provider in the server's auto-failover chain, serving web search results when the primary provider fails or returns empty results.
Wraps the Serper API to return Google Search results, exposing tools for web, image, video, news, shopping, places, scholar, patent, and autocomplete queries, including Knowledge Graph, Answer Box, People Also Ask, and related searches.
Optionally supplies the LLM used by the deep_research tool to synthesize multi-step, cited research reports from parallel sub-query searches.
Returns local business and point-of-interest data including addresses, phone numbers, full 7-day opening hours, GPS coordinates, and directions links.
Provides academic paper search returning authors, journal, publication year, and citation counts for scholarly research queries.
π Serper Search MCP Server v4.0
The First Universal Search Gateway for AI Agents β Google (Serper), Tavily, Brave, Exa, and Firecrawl with auto-failover, 14 tools, and token-smart verbosity.
What this does
This MCP server wraps the Serper API (Google Search results) and exposes 14 tools that any MCP-compatible AI client (Claude, Cursor, Windsurf, KiloCode, n8n, etc.) can call in real time β including web, image, video, news, shopping, places, scholar, patents, autocomplete, full-page scraping, and batch search.
Tool | What you get |
| Unified search |
| Organic results + Knowledge Graph + Answer Box + "People Also Ask" + Related Searches |
| Image URLs, thumbnails, dimensions, source pages + |
| Titles, channels, durations, links |
| Headlines, sources, dates β freshness-filtered |
| Products, prices, ratings, delivery info (always rich) |
| Local businesses & POIs with address, phone, full 7-day hours, GPS + Directions (always rich) |
| Academic papers with authors, journal, year, and citation counts |
| Patents with publication number, assignee, inventor, dates |
| Query completions β cheap, no LLM needed |
| Full page content as markdown β read articles found via search |
| 1β10 parallel web searches with automatic cross-query dedupe |
| Multi-step research: auto sub-queries β parallel searches β LLM-synthesized cited report |
| Clean chunked text with metadata for embedding pipelines & vector DBs β no LLM needed |
| Turn |
Verbosity (token-smart, auto by default)
Mode | Who | What | Tokens |
| server picks | devβcompact, chatβstandard, scholar/researchβfull, places/shopping/imagesβalways rich | varies |
| dev coding | title+URL+1-line snippet, no KG/PAA/Related | ~800 |
| normal chat | KG + Answer Box + 10 organic | ~4k |
| researcher | everything + citations | ~5k |
Credit rule:
compactfetchesnum=5(never fetch-10-show-3). 1 search = 1 credit, cache hit = 0, scrape β 2.deep_research: basic 3cr / standard 5cr / deep 8cr.
Providers (universal gateway β auto-failover)
Provider | Cost per 1k | When to use |
Serper (default) | $3-5, 2500 free/mo | Cheapest Google truth β keep first |
Tavily fallback | $8-16 | AI-reranked, finance/news topics |
Brave fallback | $5 | Independent index, private, 669ms |
Exa fallback | $4-7 | Neural semantic when keywords fail |
Firecrawl fallback | ~$3-4 eff | JS-rendered scraping & search upgrade |
SEARCH_PROVIDER_ORDER=serper,tavily,brave,exa # failover chain
SEARCH_FALLBACK=true # on 402/429/5xx/emptyCLI (dev power-tool β 4-32x cheaper than MCP schemas)
npx serper-search-mcp search "react server components" --compact --limit 5
npx serper-search-mcp scrape https://example.com --max-chars 8000
npx serper-search-mcp research "RAG limits" --depth basic
npx serper-search-mcp rag "transformer" --format json
npx serper-search-mcp providers --statusFree to start: Serper gives you 2,500 free queries/month. No credit card required.
Related MCP server: Argus
Quick start
π Provider Keys & Universal Gateway Configuration
This server functions as a Universal Search Gateway. Only SERPER_API_KEY is required. You can add any combination of the other 4 search providers and LLM keys to enable automatic multi-provider failover, semantic search, and scraping upgrades:
Variable | Provider / Purpose | Default / Priority |
| Serper (Google Search baseline) | Required (serper.dev) |
| Tavily (AI-reranked fallback) | Optional (tavily.com) |
| Brave (Independent web index fallback) | Optional (brave.com/search/api) |
| Exa (Neural semantic search fallback) | Optional (exa.ai) |
| Firecrawl (JS-rendered scraping & search upgrade) | Optional (firecrawl.dev) |
| LLM for | Optional (takes priority over Gemini) |
| LLM for | Optional (used when OpenRouter is absent) |
Failover Control:
SEARCH_PROVIDER_ORDER=serper,tavily,brave,exa # custom failover priority chain
SEARCH_FALLBACK=true # auto-failover on 402/429/5xx/empty (default: true)Option 1 β npx (MCP Client Configuration)
Add this to your MCP client config file (Claude Desktop, Cursor, Windsurf, KiloCode).
π Full Universal Gateway Config (All 5 Providers + Failover):
{
"mcpServers": {
"serper-search": {
"command": "npx",
"args": ["-y", "serper-search-mcp"],
"env": {
"SERPER_API_KEY": "${SERPER_API_KEY}",
"TAVILY_API_KEY": "${TAVILY_API_KEY}",
"BRAVE_API_KEY": "${BRAVE_API_KEY}",
"EXA_API_KEY": "${EXA_API_KEY}",
"FIRECRAWL_API_KEY": "${FIRECRAWL_API_KEY}",
"OPENROUTER_API_KEY": "${OPENROUTER_API_KEY}",
"SEARCH_PROVIDER_ORDER": "serper,tavily,brave,exa",
"SEARCH_FALLBACK": "true"
}
}
}
}(You can omit any provider keys you don't use; the server automatically detects configured providers and skips unconfigured ones).
Minimal Config (Serper Only):
{
"mcpServers": {
"serper-search": {
"command": "npx",
"args": ["-y", "serper-search-mcp"],
"env": {
"SERPER_API_KEY": "your_serper_key_here"
}
}
}
}Option 2 β Docker
docker run -i --rm \
-e SERPER_API_KEY \
-e TAVILY_API_KEY \
-e BRAVE_API_KEY \
-e EXA_API_KEY \
-e FIRECRAWL_API_KEY \
-e OPENROUTER_API_KEY \
smjahid/server-serper-search:4For HTTP mode (remote server or cloud):
docker run --rm -p 8080:8080 \
-e SERPER_API_KEY \
-e SERPER_MCP_TRANSPORT=http \
-e SERPER_MCP_HOST=0.0.0.0 \
-e SERPER_MCP_AUTH_TOKEN="your_secure_bearer_token" \
smjahid/server-serper-search:4Option 3 β Shell & CLI (PowerShell / Bash / CMD)
PowerShell (Windows):
$env:SERPER_API_KEY = "your_key"
$env:TAVILY_API_KEY = "your_key" # optional
$env:OPENROUTER_API_KEY = "your_key" # optional
node index.jsBash / macOS / Linux:
export SERPER_API_KEY="your_key"
export TAVILY_API_KEY="your_key" # optional
export OPENROUTER_API_KEY="your_key" # optional
node index.jsWindows Command Prompt:
set SERPER_API_KEY=your_key
node index.jsπ‘ AI-powered research is free.
deep_researchuses Gemini's free tier by default. SetGEMINI_API_KEYabove to unlock it.
Config file locations
Client | Config path |
Claude Desktop (Mac) |
|
Claude Desktop (Win) |
|
Cursor |
|
Windsurf |
|
KiloCode |
|
n8n | MCP Client node β Server URL |
Tool reference
search_web
Google web search with the full SERP breakdown.
{
"query": "best mechanical keyboards 2025", // required
"num_results": 10, // 1β20, default 10
"country": "US", // ISO 3166-1 alpha-2
"search_lang": "en", // language code
"freshness": "pw", // "pd" day Β· "pw" week Β· "pm" month Β· "py" year
"safesearch": "moderate",// "off" Β· "moderate" Β· "strict"
"autocorrect": true,
"summary": false, // Serper AI summary
"page": 1, // pagination
"link_resolution": "auto" // "auto" Β· "all" Β· "none" β see Google redirect links below
}Response includes:
π― Answer Box β direct answer when available
π§ Knowledge Graph β entity info (type, description, rating, website, attributes)
π Organic results β title, URL, snippet, sitelinks, date
π¬ People Also Ask β up to 4 follow-up questions with answers
π Related Searches β up to 6 suggestions
search_images
{
"query": "minimalist desk setup",
"num_results": 10,
"country": "US",
"safesearch": "moderate"
}Returns: image URL, thumbnail, dimensions (width Γ height), source domain, source page URL.
search_videos
{
"query": "react server components tutorial",
"num_results": 5,
"freshness": "pm"
}Returns: title, channel, duration, publish date, video URL.
search_news
{
"query": "OpenAI GPT-5 release",
"num_results": 10,
"freshness": "pd", // default is past day for news
"country": "US"
}Returns: headline, source publication, date, snippet, URL.
search_shopping
{
"query": "Sony WH-1000XM5 headphones",
"num_results": 8,
"country": "US"
}Returns: product name, price, seller, star rating + review count, delivery info, product URL.
search_places β unique to this server
{
"query": "ramen restaurants in Shibuya Tokyo",
"num_results": 5,
"country": "JP"
}Returns: business name, category, address, phone, website, star rating + review count, opening hours, GPS coordinates + Google Maps link.
Example use cases:
"Find the top-rated coffee shops near Times Square"
"What dentists are open on Sundays in Austin TX?"
"List coworking spaces in Dhaka"
search_scholar π v4.0.0
Google Scholar search for academic literature.
{
"query": "attention is all you need",
"num_results": 10,
"country": "US"
}Returns: title, link, authors/journal/year (publicationInfo), snippet, and citation count.
scrape π v4.0.0
Fetch the full contents of a single URL (Serper Scrape API β scrape.serper.dev).
{
"url": "https://example.com/article", // required
"include_markdown": true, // default true β markdown rendering
"include_images": false,
"include_links": false,
"include_videos": false,
"max_chars": 50000 // 1000β200000, default 50000
}Returns the page as markdown (falls back to plain text), truncated for context safety. Costs ~2 credits per page β typical flow is search_web β scrape the best result.
search_many π v4.0.0
Run 1β10 web searches in one call, in parallel.
{
"queries": ["react server components", "vue server components", "sveltekit ssr"],
"num_results": 5,
"country": "US"
}Duplicate URLs across queries are removed automatically; per-query failures are reported inline without failing the batch. One credit per query.
Google redirect links & resolve_links π
Since 2026-10-30, Serper may return Google result links beyond the top 3 as https://www.google.com/goto?url=β¦ redirects. Opening one right after the search lands on Google's "Verifying your request" page instead of the site. Serper's free /resolve endpoint turns them back into real URLs (serper.dev/google-links).
search, search_web, search_images, search_videos, search_news, search_shopping and search_rag_context take a link_resolution parameter:
Mode | Behaviour |
| Serper's default: top 3 resolved. If the shown results still contain redirect links, the output says how many and gives a |
| Also calls |
| Sends |
resolve_links resolves a search later by search_id (the last 50 searches with redirect links are kept in memory) or from a list of goto links:
{ "search_id": "Xq3vβ¦" } // re-renders that search with real URLs
{ "links": ["https://www.google.com/goto?url=β¦"], "max_wait_seconds": 60 }Links that are not ready yet stay goto links and Serper suggests a wait (often 90 s); it is honoured only if it fits in max_wait_seconds. /resolve failures never fail a search: the original results are kept and the error is shown. deep_research resolves its sources before building the prompt and lists any citation that is still a redirect.
Environment variables
Search Providers & Universal Gateway
Variable | Required | Default | Description |
| β | β | Primary search provider key (serper.dev β 2,500 free queries/mo) |
| β | β | Tavily fallback provider key (tavily.com β AI-reranked search) |
| β | β | Brave Search fallback provider key (brave.com/search/api β independent index) |
| β | β | Exa neural search fallback key (exa.ai β semantic search & highlights) |
| β | β | Firecrawl JS-rendered scraping & search upgrade key (firecrawl.dev) |
| β |
| Comma-separated failover priority chain ( |
| β |
| Auto-failover on 402/429/5xx/empty response ( |
Server & Transport
Variable | Required | Default | Description |
| β |
| MCP transport mode: |
| β |
| Port for HTTP transport mode (1β65535) |
| β |
| Host interface to bind for HTTP mode |
| β | β | If set, HTTP |
| β |
| Logging verbosity: |
Cache & Resilience Tuning
Variable | Required | Default | Description |
| β |
| Search-result cache TTL in ms ( |
| β |
| Maximum cached responses (LRU eviction) |
| β |
| Per-request timeout for Serper calls in ms |
| β |
| Retries on 429 / 5xx / network errors (honors |
| β |
| Base backoff delay in ms (exponential backoff + jitter) |
| β |
| Default |
| β |
| Seconds |
Deep Research LLM Synthesis
Variable | Required | Default | Description |
| β | β | LLM key for |
| β |
| OpenRouter model override |
| β | β | LLM key for |
| β |
| Gemini model override |
| β |
| Per-request timeout for LLM synthesis calls in ms |
| β |
| Retries for LLM calls on rate-limit or network errors |
HTTP transport (remote / Docker)
Run as a stateless Streamable HTTP server (this is also how the Docker image runs):
npx serper-search-mcp --transport http --port 8080
# or via env: SERPER_MCP_TRANSPORT=http SERPER_MCP_PORT=8080 npx serper-search-mcpMCP endpoint:
POST http://localhost:8080/mcpHealth probe:
GET http://localhost:8080/health
Point any Streamable HTTP capable MCP client at http://<host>:8080/mcp.
Optional bearer auth
Set SERPER_MCP_AUTH_TOKEN (or --auth-token) to require authentication on /mcp:
SERPER_MCP_AUTH_TOKEN=secret npx serper-search-mcp --transport http --port 8080curl -X POST http://localhost:8080/mcp \
-H "Authorization: Bearer secret" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'Requests without the token get 401. /health stays unauthenticated for load balancers and reports auth_required.
Example prompts
Once connected to any MCP client:
Search for the latest news about Claude 4 and summarize the key points.
Find me 5 Italian restaurants in Warsaw with their ratings and phone numbers.
What is the current price of the MacBook Pro M4 on Google Shopping?
Search for YouTube tutorials on building agentic AI systems published this month.
Find images of brutalist architecture in Eastern Europe.deep_research
Runs multi-step AI research using your own LLM key. No LLM data leaves your environment.
Requires: OPENROUTER_API_KEY (free models at openrouter.ai) or GEMINI_API_KEY (free at aistudio.google.com)
{
"query": "What are the real-world limitations of RAG systems in production?",
"depth": "standard", // "basic" | "standard" | "deep"
"country": "US"
}Depth | Sub-queries | Results each | Best for |
| 3 | 3 | Quick overviews |
| 5 | 5 | Most use cases |
| 8 | 7 | Exhaustive research |
Output: Structured markdown report with inline citations + Sources section.
Supported LLMs via env (all vars documented in the table above):
Provider | Variable | Default |
OpenRouter |
| β |
|
| |
Google Gemini |
| β |
|
|
search_rag_context
Turns Google search results into embedding-ready chunks. No LLM needed β pure text processing.
{
"query": "transformer architecture explained",
"num_results": 10,
"max_chunk_words": 200,
"include_paa": true,
"output_format": "json" // "json" or "text"
}JSON output (for vector DB ingestion):
{
"query": "transformer architecture explained",
"total_sources": 10,
"total_chunks": 24,
"total_words": 4231,
"chunks": [
{
"chunk_index": 0,
"source_index": 1,
"title": "Attention Is All You Need",
"url": "https://arxiv.org/abs/1706.03762",
"domain": "arxiv.org",
"date": "2024-01-15",
"text": "The transformer architecture uses self-attention mechanisms...",
"word_count": 198,
"char_count": 1124
}
]
}Text output (for direct prompt injection):
--- Chunk 1 | Source 1 | arxiv.org | 2024-01-15 ---
Title: Attention Is All You Need
URL: https://arxiv.org/abs/1706.03762
The transformer architecture uses self-attention...Use cases:
Feed into Chroma, Pinecone, Qdrant, pgvector
Ground prompts with fresh web data
Build search-augmented RAG pipelines
Architecture
serper-search-mcp-server/
βββ index.js β Zero-build JS entry (npx / Docker) β generated from src/ via `npm run bundle`; never edit by hand
βββ src/
β βββ index.ts β TypeScript CLI entry
β βββ api/
β β βββ SerperAPI.ts β HTTP client (per-type endpoints, retry, timeout, TTL cache, scrape)
β β βββ LLMClient.ts β OpenRouter + Gemini client
β βββ server/
β β βββ SerperMCPServer.ts β MCP server, stdio + HTTP transport, bearer auth
β βββ tools/
β β βββ SearchTools.ts β All 15 tool definitions + validation
β β βββ BatchSearch.ts β search_many (parallel + dedupe)
β β βββ DeepResearch.ts β Multi-step research orchestration
β β βββ RAGContext.ts β Chunk + metadata formatter
β β βββ ResolveLinks.ts β link_resolution modes + resolve_links (Serper /resolve)
β βββ types/
β β βββ index.ts β Full TypeScript types
β βββ utils/
β βββ ResultFormatter.ts β Markdown formatting
β βββ HttpRetry.ts β Timeout + retry/backoff
β βββ TtlCache.ts β TTL + LRU cache
β βββ Logger.ts β Leveled stderr logger (+ request-id)
β βββ errors.ts β Typed error hierarchy
β βββ Metrics.ts β /health counters
β βββ EnvCheck.ts β Boot-time env validation
βββ scripts/
β βββ bundle.mjs β Builds index.js from src/ (`--check` mode for CI)
βββ tests/ β node:test suite (58 tests)
βββ .github/workflows/ci.yml β Node 18/20/22: build + bundle check + testsDual-file design: index.js runs without any build step (ideal for npx and Docker) and is generated from src/ β the TS tree is the only source of truth. npm run check:bundle fails CI if they drift.
Get a Serper API key
Go to serper.dev
Sign up (free β no credit card)
Copy your API key from the dashboard
You get 2,500 free queries/month
Version evolution
Feature | v1.0.0 | v2.0.1 | v3.0.0 | v4.0.0 |
Total tools | 5 | 5 | 8 | 14 |
| β | β | β | β auto-verbosity + provider failover |
| β organic only | β organic only | β + Answer Box, Knowledge Graph, PAA, Related | β |
| β | β | β + dimensions, domain | β + gallery layout |
| β | β | β + date field | β |
| β | β | β cleaner formatting | β + past-day default |
| β | β | β + delivery, offers | β (always rich) |
| β | β | β address, phone, hours, GPS, Maps link | β + full 7-day hours, directions |
| β | β | β | β papers + citation counts |
| β | β | β | β publication, assignee, dates |
| β | β | β | β fast query completions |
| β | β | β | β full page β markdown |
| β | β | β | β batch + cross-query dedupe |
| β | β | β sub-queries β parallel search β LLM report | β |
| β | β | β chunked text + metadata, JSON/text output | β |
API endpoints | all hitting | all hitting | β correct per-type endpoints | β + scholar + scrape host |
Answer Box / KG / PAA | β | β | β full SERP extraction | β |
Pagination | β | β | β
| β |
Autocorrect param | β | β | β | β |
LLM support | β | β | β OpenRouter + Gemini (user's own key) | β |
LLM-free RAG output | β | β | β JSON + plain text | β |
TypeScript types | partial (heavy | partial (heavy | β full types for every result shape | β + scholar/scrape |
MCP SDK version | ^0.5.0 | ^0.5.0 or ^1.0.0 | ^1.0.0 | ^1.0.0 |
Node requirement | >=16 | >=16 | >=18 (native | >=18 |
HTTP transport | β | β | β | β stateless Streamable HTTP |
HTTP bearer auth | β | β | β | β optional |
Retry + timeout | β | β | β | β 429/5xx/network |
Response cache | β | β | β | β TTL + LRU |
Log levels | β | β | β | β error/warn/info/debug/silent |
Tests + CI | β | β | β | β node:test + GitHub Actions |
Docker | β | β | β | β |
npx | β | β | β | β |
Client configs | Claude Desktop only | Claude Desktop + a few | Claude Desktop + Cursor + Windsurf + KiloCode + n8n | β |
Telemetry | β none | β none | β none (intentional β privacy win) | β none |
Changelog
v4.0.0 β Universal Search Gateway (Multi-Provider, 14 Tools, CLI, Resilience, Tests)
β Universal Multi-Provider Gateway β failover chain: Serper β Tavily β Brave (+ Exa/Firecrawl) with
provider=allreciprocal-rank fusionβ 14 MCP Tools β including unified
search(token-smart auto-verbosity),search_scholar,search_patents,autocomplete,scrape,search_manyβ Developer CLI β
search,scrape,research,rag,providers,statussubcommandsβ
search_scholartool β Google Scholar with authors, journal, year, citation countsβ
scrapetool β full page content as markdown viascrape.serper.dev(truncation-safe)β
search_manytool β 1β10 parallel web searches, cross-query URL dedupe, per-query failure isolationβ Retry + timeout β 429/5xx/network retries with exponential backoff + jitter (Retry-After honored)
β Response cache β in-memory TTL + LRU (
SERPER_CACHE_TTL_MS=0disables)β Optional HTTP bearer auth β
SERPER_MCP_AUTH_TOKENguards/mcp;/healthstays openβ Real log levels β
SERPER_MCP_LOG_LEVELnow controls error/warn/info/debug/silentβ Test suite + CI β 58
node:testtests (no extra deps, incl. real-HTTP e2e) + GitHub Actions matrix (Node 18/20/22)π§ HTTP transport now works on Node 18 β WebCrypto shim for the MCP SDK (
crypto.randomUUID); Docker base image bumped tonode:20-alpineπ§
search_langis now correctly mapped to Serper'shl(was previously ignored)π§ News results default to past-day freshness as documented
π§
max_chunk_wordsclamped 50β1000 (fixes a hang on zero/negative values)π§ Unknown
depthfalls back tostandardindeep_researchπ§ Unknown tools return
MethodNotFoundinstead ofInternalErrorπ§
--api-keywithout a value no longer breaks startupπ§
index.jsis generated fromsrc/via esbuild;npm run check:bundleguards driftπ§ Windows-compatible npm scripts;
npm auditreports 0 vulnerabilities
v3.0.0 β Places + Deep Research + RAG
β
search_placestool β local businesses with address, phone, hours, GPSβ Knowledge Graph extraction in web search
β Answer Box extraction in web search
β People Also Ask + Related Searches in web results
β Pagination support (
pageparam)β
autocorrectparam on web searchπ§ Corrected per-type Serper endpoints (images/videos/news/shopping now use dedicated endpoints)
π§ Full TypeScript types for all result shapes
β
deep_researchtool β multi-step research with LLM synthesis (OpenRouter / Gemini)β
search_rag_contexttool β embedding-ready chunks with metadata (no LLM needed)π§ Node β₯ 18 requirement (native
fetch)
v2.0.1
HTTP/SSE transport mode
Docker Compose support
CLI flags
v1.0.0
Initial release: web, images, videos, news, shopping
Contributing
PRs and issues are welcome. Please open an issue before large changes.
git clone https://github.com/smjahid012/serper-search-mcp-server.git
cd serper-search-mcp-server
npm install
export SERPER_API_KEY="your_key"
node index.js # test immediately, no build requiredLicense
Apache 2.0 β see LICENSE
Built by SMLabs AI Β· smjahid012
If this saved you time, a β on GitHub helps others find it.
Available Tools
15 toolsautocompleteB
Google Autocomplete suggestions via Serper API. Returns query completions β cheap, no LLM needed.
Inputs: query (required), country, ui_lang, num_results, +1 more.
deep_researchA
AI-powered deep research tool. Breaks your question into sub-queries, runs multiple Google searches, then synthesizes a cited research report using your LLM (OpenRouter or Gemini). Requires OPENROUTER_API_KEY or GEMINI_API_KEY environment variable.
Inputs: query (required), depth, country.
resolve_linksA
Turn google.com/goto redirect links from a recent search into real URLs via Serper /resolve (free, 0 credits). Pass the search_id a search result asked for, or a list of goto links. Right after a search one call takes ~20β30 s. Links not ready yet stay goto links; Serper then suggests a wait (often 90 s), which is only honoured if it fits in max_wait_seconds β otherwise call again later.
Inputs: links, search_id, max_wait_seconds.
scrapeA
Fetch and extract the full contents of a single URL via Serper Scrape API. Returns the page content as markdown (or plain text). Use after a search to read a promising page in full. Costs ~2 credits per page.
Inputs: url (required), max_chars, include_links, include_images, +2 more.
searchA
Unified search β one tool for all types (loads ~700 tokens instead of ~7k for 11 tools). Pick type=web|images|videos|news|shopping|places|scholar|patents|autocomplete and provider=auto|serper|tavily|brave|exa|firecrawl. Credit budget: basic 3 / standard 5 / deep 8 credits for deep_research; 1 credit per search; cache hits cost 0.
Inputs: query (required), type, country, ui_lang, +9 more.
search_imagesA
Google Image search via Serper API. Returns image URLs, thumbnails, dimensions, and source pages. Use layout=gallery for a renderable visual grid (designers/moodboards). Always rich β never compacted.
Inputs: query (required), site, size, color, +12 more.
search_manyB
Run multiple web searches in one call (parallel). Duplicate URLs across queries are removed automatically. Great for comparing topics, gathering multi-angle context, or fanning out sub-queries. Each query costs 1 credit.
Inputs: queries (required), country, ui_lang, freshness, +3 more.
search_newsB
Google News search via Serper API. Returns headlines, sources, and publication dates.
Inputs: query (required), country, ui_lang, freshness, +4 more.
search_patentsB
Google Patents search via Serper API. Returns patents with publication number, assignee, inventor, and dates. Always rich.
Inputs: query (required), country, ui_lang, provider, +5 more.
search_placesB
Google Places / Maps search via Serper API. Returns local businesses with address, phone, full 7-day hours, ratings, GPS + Directions links. Always rich β never compacted.
Inputs: query (required), country, sort_by, ui_lang, +8 more.
search_rag_contextA
Returns Google search results as clean, chunked, metadata-rich text optimized for embedding pipelines and vector databases. No LLM required. Each chunk includes: text, source URL, domain, title, date, word count, and chunk index. Perfect for RAG pipelines, semantic search, and AI grounding.
Inputs: query (required), country, freshness, include_paa, +4 more.
search_scholarA
Google Scholar search via Serper API. Returns academic publications with authors, journal, year, and citation counts. Ideal for research papers and literature reviews.
Inputs: query (required), country, ui_lang, freshness, +2 more.
search_shoppingA
Google Shopping search via Serper API. Returns products with prices, ratings, and delivery info.
Inputs: query (required), country, ui_lang, num_results, +2 more.
search_videosB
Google Video search via Serper API. Returns titles, channels, durations, and links.
Inputs: query (required), country, ui_lang, freshness, +4 more.
search_webB
Google web search via Serper API. Returns organic results plus Knowledge Graph, Answer Box, People Also Ask, and related searches.
Inputs: query (required), page, country, summary, +11 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelogβ¦
TDQS
Scored across 15 tools
The unified `search` tool with type=web|images|videos|news|shopping|places|scholar|patents|autocomplete directly duplicates eight dedicated sibling tools (search_web, search_images, etc.), so an agent must guess which of two identical capabilities to call. `search_many` overlaps with `search`, `search_rag_context` is `search` with different formatting, and `search`'s deep mode overlaps `deep_research`. Only `scrape`, `autocomplete`, and `resolve_links` have clearly unique boundaries.
All names are snake_case and the dominant pattern is a `search_` prefix plus resource noun, which is easy to scan. The handful of deviations (`search`, `autocomplete`, `scrape`, `deep_research`) are action-distinct rather than arbitrary, so they read fine despite breaking the prefix convention. It also makes `search` vs `search_web` look confusingly similar.
15 tools sit at the upper edge of a well-scoped set, and the surface is inflated by redundancy rather than coverage β the description itself says `search` replaces 11 tools, which implies roughly half the set could be retired. A leaner ~7-tool design (search, scrape, search_many, deep_research, resolve_links, search_rag_context) would serve the same purpose.
The search domain is well covered: web, images, news, videos, shopping, places, scholar, patents, autocomplete, page scraping, batch search, deep research, RAG chunking, and redirect resolution β no obvious dead end in the core workflow. Minor gaps: credits are referenced throughout the descriptions but no tool exposes balance or cache management.
Maintenance
Related MCP Connectors
Web search for AI agents β one tool across 6 engines, routed to the cheapest + cached.
Firecrawl, the context API for AI agents: search, scrape, interact with the web, plus paper search.
The best web search for your AI Agent
70+ pay-per-call tools for AI agents: web search, email verify, KYC, stocks, crypto, news, data
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceUnified web layer for AI agents. Search across 8 engines, stealth browse with Camoufox/Playwright, manage cookie auth, and act on 24 platforms.38 npm28MIT
- AlicenseCqualityBmaintenanceOne endpoint, five search providers. Search broker for AI agents with automatic fallback, RRF ranking, and budget enforcement. The LiteLLM of web search.1536 PyPI8MIT
- AlicenseAqualityDmaintenanceWeb search for AI agents across 6 engines (Serper, Brave, Exa, Tavily, Firecrawl, Perplexity) through one search tool. Routes each query to the cheapest engine that clears a quality bar and caches repeats. Hosted, streamable-HTTP, BYOK supported.11MIT
- AlicenseAqualityFmaintenanceFree multi-source web search server for AI agents, with confidence scoring and token optimization.3178 npmApache 2.0