Google Search MCP Server
This MCP server enables comprehensive web searches through Google's Custom Search API with advanced content extraction capabilities.
Perform three types of searches:
google_searchfor quick snippet-only results (1-10 results),deep_searchfor comprehensive searches with full content extraction across web/news/images, anddeep_search_newsoptimized specifically for news articles and current eventsExtract clean article content using Mozilla's Readability algorithm (same as Firefox Reader View) to remove ads and clutter
Filter search results by including specific domains (e.g., only GitHub and Reddit) or excluding unwanted ones (e.g., block Pinterest and Facebook)
Search across different content types including general web pages, news articles, and images
Customize search parameters including number of results (1-10) and maximum content length per page (5,000-100,000 characters)
Override API credentials on a per-tool-call basis if needed
Deploy flexibly in local mode with your own Google API credentials or hosted mode with TUI AD authentication for enterprise deployments
Benefit from reliability features including automatic retries with exponential backoff and controlled concurrency to handle network issues gracefully
Performs comprehensive web, news, and image searches using the Google Custom Search API, offering features like snippet-only lookups, full content extraction from results, and domain-specific filtering.
Integrates with the Google Custom Search JSON API to enable programmatic access to web search results and advanced content retrieval.
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., "@Google Search MCP Serverdeep search for the latest news on generative AI breakthroughs"
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.
Google Search MCP Server
An MCP (Model Context Protocol) server that performs comprehensive web searches using Google Custom Search JSON API with advanced content extraction using Mozilla's Readability algorithm.
Features
Three Search Modes:
google_search- Fast snippet-only search for quick lookupsdeep_search- Full content extraction with Readability algorithmdeep_search_news- News-optimized deep search
Google Custom Search API - Uses official Google Custom Search JSON API
Advanced Content Extraction - Uses Mozilla's Readability algorithm (same as Firefox Reader View) for clean article extraction
Multiple Search Types - Web search, news search, and image search
Domain Filtering - Include or exclude specific domains from results
Retry Logic - Automatic retries with exponential backoff for reliability
Controlled Concurrency - Fetches pages in batches to avoid overwhelming servers
Related MCP server: DuckDuckGo MCP Server
Prerequisites
Get Google Custom Search API Credentials
Go to Google Cloud Console
Create a new project or select an existing one
Enable the "Custom Search API"
Go to "Credentials" and create an API key
Create a new search engine and get your Search Engine ID (CX)
You'll need:
GOOGLE_API_KEY- Your Google Cloud API keyGOOGLE_CX- Your Programmable Search Engine ID
Installation
Using npx (Recommended)
No installation needed - just configure your MCP client:
{
"mcpServers": {
"google-search": {
"command": "npx",
"args": ["-y", "@thejusdutt/google-search-mcp"],
"env": {
"GOOGLE_API_KEY": "your-google-api-key",
"GOOGLE_CX": "your-search-engine-id"
}
}
}
}Global Installation
npm install -g @thejusdutt/google-search-mcpThen configure:
{
"mcpServers": {
"google-search": {
"command": "google-search-mcp",
"env": {
"GOOGLE_API_KEY": "your-google-api-key",
"GOOGLE_CX": "your-search-engine-id"
}
}
}
}Tools
google_search
Simple Google search for quick lookups. Returns snippets only without fetching full page content.
Parameter | Type | Default | Description |
| string | required | The search query |
| number | 10 | Number of results (1-10) |
Example:
// Quick search with snippets only
google_search({ query: "React hooks tutorial" })deep_search
Comprehensive web search with full content extraction.
Parameter | Type | Default | Description |
| string | required | The search query |
| number | 10 | Number of results (1-10) |
| number | 50000 | Max characters per page (5000-100000) |
| string | "web" | Search type: "web", "news", or "images" |
| string | - | Comma-separated domains to include |
| string | - | Comma-separated domains to exclude |
Examples:
// Basic web search
deep_search({ query: "React best practices 2025" })
// News search
deep_search({ query: "AI announcements", search_type: "news" })
// Search specific sites only
deep_search({
query: "TypeScript tips",
include_domains: "github.com,dev.to"
})
// Exclude certain sites
deep_search({
query: "web development trends",
exclude_domains: "pinterest.com,facebook.com"
})deep_search_news
Convenience wrapper for news search. Equivalent to calling deep_search with search_type: "news" and optimized content limits.
Parameter | Type | Default | Description |
| string | required | The news topic to search |
| number | 10 | Number of articles (1-10) |
| number | 30000 | Max characters per article |
Example:
deep_search_news({ query: "OpenAI latest updates" })Configuration
Kiro
Add to ~/.kiro/settings/mcp.json:
{
"mcpServers": {
"google-search": {
"command": "npx",
"args": ["-y", "@thejusdutt/google-search-mcp"],
"env": {
"GOOGLE_API_KEY": "your-google-api-key",
"GOOGLE_CX": "your-search-engine-id"
}
}
}
}Claude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"google-search": {
"command": "npx",
"args": ["-y", "@thejusdutt/google-search-mcp"],
"env": {
"GOOGLE_API_KEY": "your-google-api-key",
"GOOGLE_CX": "your-search-engine-id"
}
}
}
}How It Works
Search - Queries Google Custom Search API to get top results
Fetch - Downloads each result page with retry logic
Extract - Uses Mozilla Readability to extract clean article content
Format - Returns consolidated markdown with full content from each page
Requirements
Node.js 18+
Google Cloud API key with Custom Search API enabled
Programmable Search Engine ID (CX)
License
MIT
Author
Contributing
Issues and PRs welcome at GitHub
Available Tools
3 toolsdeep_searchA
Performs a comprehensive web search using Google Custom Search API, fetching the FULL content from top results using advanced content extraction (Readability algorithm), and returning consolidated content. Supports web, news, and image search types. Includes retry logic for reliability.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | The search query to look up | |
| num_results | No | Number of results to fetch (1-10, default: 10) | |
| max_content_per_page | No | Maximum characters of content to return per page (5000-100000, default: 50000) | |
| search_type | No | Type of search: 'web' for general search, 'news' for news articles, 'images' for image search | web |
| include_domains | No | Comma-separated list of domains to include (e.g., 'reddit.com,github.com') | |
| exclude_domains | No | Comma-separated list of domains to exclude (e.g., 'pinterest.com,facebook.com') |
TDQS
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. It adds valuable context beyond basic functionality: it mentions 'retry logic for reliability,' 'advanced content extraction (Readability algorithm),' and 'fetching the FULL content from top results.' However, it doesn't cover potential limitations like rate limits, authentication needs, or error handling details, which would be helpful for a tool with no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded, with every sentence earning its place. It starts with the core purpose, adds key capabilities (content extraction, search types), and ends with reliability features. No wasted words, and the structure flows logically from general to specific aspects.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 parameters, no annotations, no output schema), the description does a good job covering the essential behavior and scope. It explains the comprehensive search nature, content extraction, search types, and reliability. However, without an output schema, it doesn't describe the return format (e.g., structure of consolidated content), which is a minor gap for a tool with rich functionality.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 6 parameters thoroughly. The description doesn't add any specific parameter semantics beyond what's in the schema (e.g., it doesn't explain how 'include_domains' or 'exclude_domains' affect results). Baseline 3 is appropriate when the schema does the heavy lifting, though the description could have enhanced understanding of parameter interactions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs 'comprehensive web search using Google Custom Search API' with specific capabilities like 'fetching the FULL content from top results using advanced content extraction (Readability algorithm)' and 'returning consolidated content.' It distinguishes from siblings by mentioning specific search types (web, news, images) and content extraction features that likely differentiate it from 'google_search' and 'deep_search_news'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool by stating it 'supports web, news, and image search types' and performs 'comprehensive web search' with 'advanced content extraction.' However, it doesn't explicitly mention when NOT to use it or provide direct alternatives to sibling tools like 'deep_search_news' or 'google_search,' though the mention of search types implies some differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deep_search_newsA
Searches for recent news articles on a topic using Google Custom Search API, fetches full article content, and returns consolidated results. Optimized for news and current events.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | The news topic to search for | |
| num_results | No | Number of news articles to fetch (1-10, default: 10) | |
| max_content_per_page | No | Maximum characters per article (default: 30000) |
TDQS
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. While it mentions the tool fetches full article content and returns consolidated results, it doesn't disclose important behavioral traits like rate limits, authentication requirements, error handling, or what 'consolidated results' actually means in terms of output format. For a tool that performs external API calls and content fetching, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly concise and well-structured in just two sentences. The first sentence explains the complete workflow, and the second sentence provides the optimization context. Every word earns its place with no redundancy or unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and no output schema that performs external API calls and content fetching, the description is incomplete. It doesn't explain what the output looks like (what 'consolidated results' means), doesn't mention authentication requirements, rate limits, or error conditions. The description should provide more context about the tool's behavior and limitations given the complexity of the operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters thoroughly. The description doesn't add any meaningful parameter semantics beyond what's in the schema - it mentions the general purpose but doesn't provide additional context about parameter usage, interactions, or best practices. The baseline of 3 is appropriate when the schema does all the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('searches for', 'fetches full article content', 'returns consolidated results') and distinguishes it from siblings by specifying 'optimized for news and current events' and mentioning the Google Custom Search API. It goes beyond just restating the name to explain the full workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context about when to use this tool ('optimized for news and current events'), which helps differentiate it from the generic 'deep_search' and 'google_search' siblings. However, it doesn't explicitly state when NOT to use it or provide specific alternatives for non-news searches.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_searchA
Simple Google search for quick lookups. Returns snippets only without fetching full page content. For deep research with full page content, use deep_search instead.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query | |
| num_results | No | Number of results to return (1-10, default: 10) |
TDQS
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. It effectively describes key behavioral traits: it's a read-only search operation (implied by 'search'), returns only snippets (not full content), and is optimized for quick lookups. However, it doesn't mention rate limits, authentication requirements, or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly concise with two sentences that each serve distinct purposes: the first defines the tool's purpose and behavior, the second provides usage guidance. There's zero wasted language and it's front-loaded with the core functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (search with two parameters), no annotations, and no output schema, the description does well by explaining the behavioral scope (snippets only) and providing clear usage guidelines. However, it doesn't describe the format or structure of the returned snippets, which would be helpful given the lack of output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, providing complete documentation for both parameters. The description doesn't add any parameter-specific information beyond what's in the schema, so it meets the baseline of 3 where the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs a 'Simple Google search for quick lookups' with the specific scope of 'Returns snippets only without fetching full page content.' It explicitly distinguishes from the sibling tool 'deep_search' by contrasting the snippet-only output versus full page content retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool ('for quick lookups') and when to use an alternative ('For deep research with full page content, use deep_search instead'). This clearly defines the appropriate context and excludes scenarios better handled by the sibling tool.
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. Dates show when Glama detected each change.
3 tool updates
v1.0.1- Changed
deep_search2 fields changed- removed
Input schema / properties / google_api_keyRemoved value: -{ - "description": "Google Custom Search API key (optional, uses server default if not provided)", - "type": "string" -} - removed
Input schema / properties / google_cxRemoved value: -{ - "description": "Google Custom Search Engine ID (optional, uses server default if not provided)", - "type": "string" -}
- Added
deep_search_news - Changed
google_search2 fields changed- removed
Input schema / properties / google_api_keyRemoved value: -{ - "description": "Google Custom Search API key (optional, uses server default if not provided)", - "type": "string" -} - removed
Input schema / properties / google_cxRemoved value: -{ - "description": "Google Custom Search Engine ID (optional, uses server default if not provided)", - "type": "string" -}
3 tool updates
- Changed
deep_search2 fields changed- added
Input schema / properties / google_api_keyAdded value: +{ + "description": "Google Custom Search API key (optional, uses server default if not provided)", + "type": "string" +} - added
Input schema / properties / google_cxAdded value: +{ + "description": "Google Custom Search Engine ID (optional, uses server default if not provided)", + "type": "string" +}
- Removed
deep_search_news - Changed
google_search2 fields changed- added
Input schema / properties / google_api_keyAdded value: +{ + "description": "Google Custom Search API key (optional, uses server default if not provided)", + "type": "string" +} - added
Input schema / properties / google_cxAdded value: +{ + "description": "Google Custom Search Engine ID (optional, uses server default if not provided)", + "type": "string" +}
3 tool updates
- First observed
deep_search - First observed
deep_search_news - First observed
google_search
TDQS
The tools have overlapping purposes that could cause misselection. Both deep_search and deep_search_news perform similar comprehensive searches with full content extraction, differing mainly in search type (general vs. news), while google_search is a simpler alternative. An agent might struggle to choose between deep_search and deep_search_news for news-related queries, as their descriptions suggest functional overlap.
The tool names follow a consistent snake_case pattern throughout, with clear and descriptive verbs (deep_search, deep_search_news, google_search). The naming is predictable and readable, making it easy for an agent to understand the tool set's structure without confusion.
With only 3 tools, the server feels thin for a Google Search domain, which typically involves more varied operations like filtering, pagination, or specialized searches (e.g., by date or region). While the tools cover basic search needs, the count is borderline for comprehensive search functionality, potentially limiting agent capabilities.
There are significant gaps in the tool surface for a Google Search server. Missing operations include advanced filtering options, image or video search handling beyond basic mentions, pagination support, and error handling tools. The server focuses on content retrieval but lacks tools for refining or managing search results, which could lead to agent failures in complex tasks.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Web search, fetch, extract, and research for AI agents. Markdown output + AI-synthesized answers.
Search Google straight from your AI agent. Web results, images, videos, news, products, scholarly ar
Web search, URL content extraction to Markdown, site mapping, and recursive web crawler.
Fetch pages as markdown, search web and news, extract structured data. For AI agents.
Related MCP Servers
- FlicenseBqualityDmaintenanceEnables web searching and content scraping through Google Custom Search API. Provides tools to search the internet, extract webpage content, and automatically scrape search results for comprehensive information gathering.3-
- AlicenseBqualityDmaintenanceEnables web search through DuckDuckGo and webpage content fetching with intelligent text extraction. Features built-in rate limiting and LLM-optimized result formatting for seamless integration with language models.2MIT
- AlicenseNot gradedqualityDmaintenanceEnables web searching through Google, DuckDuckGo, and Bing using a headless Chrome browser, returning structured results with titles, URLs, and snippets. Also supports fetching and extracting text content from any webpage.13MIT
- FlicenseNot gradedqualityDmaintenanceEnables web search and content extraction using Google's search engine, with customizable parameters for result count, content type, time range, and domain filtering.-
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/thejusdutt/google-search-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server