Serper MCP server for AI agents

Live

API KEY

WEB SEARCH

Search

Serper gives your agent web search through Google: run web, news, image, video, maps, places, shopping, Scholar, and patent searches, read place reviews, and scrape a public webpage into readable text.

  • Per-user credentials: each call uses the actual user's API key, never a shared bot.
  • Encrypted per-tenant vault: AES-256, resolved at request time, never in LLM context.
  • Scoped before every call: pre-call scope check, 90-day SIEM-exportable audit chain.
Serper
agent · Acme Q3
Run
What are the top news stories on AI agent security this week?
S
serper_search_news
98ms
Research agent
I found 10 recent articles. The newest covers a prompt injection report published 2 days ago.
Sources: Google News via Serper, 10 articles
serper
10 articles
18:29
Message Claude...

Tools your search agent reaches for on Serper, scoped per user.

CALL ANY TOOL
13 tools for web search through Serper: search Google web, news, images, videos, maps, places, shopping, Scholar, and Patents, get autocomplete suggestions, list place reviews, and scrape webpages.
serper_autocomplete
Autocomplete
Get Google's autocomplete suggestions for a partial query through Serper. Returns suggestions, each with the suggested query as value. Use this to expand or refine a search query, or for keyword research. Use serper_search to run the search itself.
Parameters
Name
Type
Required
Description
q
string
Required
The partial query to complete, as you would type it into Google. Google search operators such as site:, filetype: and quotes work. Example: how to build your own
gl
string
Optional
Two-letter country code (Google's gl parameter, lowercase) that sets which country's Google results to return. Serper uses us when omitted. Example: gb
hl
string
Optional
Google interface language code (Google's hl parameter) for the results, usually a two-letter language code, or language-region for a few languages such as zh-cn. Serper uses en when omitted. Example: fr
location
string
Optional
Place to run the search from, as a Google location name (city, region or country, comma-separated, most specific first). Results are localized as if searched from there. Example: Austin, Texas, United States
serper_list_place_reviews
List place reviews
serper_scrape_webpage
Scrape webpage
serper_search
Search
serper_search_by_image
Search by image
serper_search_images
Search images
serper_search_maps
Search maps
serper_search_news
Search news
serper_search_patents
Search patents
serper_search_places
Search places
serper_search_scholar
Search scholar
serper_search_shopping
Search shopping
serper_search_videos
Search videos
Build your Agent
Same auth pattern across LangChain, OpenAI, Anthropic, and Google ADK.
Python · LlamaIndex
import { ScalekitClient } from "@scalekit-sdk/node";
import { createReactAgent } from "@langchain/langgraph/prebuilt";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);

// Serper tools scoped to this user
const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["serper"], toolNames: [
    "serper_search",
    "serper_search_news",
    "serper_scrape_webpage"] },
  pageSize: 100,
});

const agent = createReactAgent({ llm, tools });
await agent.invoke({ messages: [{ role: "user", content: "Find this week's news on AI agent security and scrape the top article" }] });
import OpenAI from "openai";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);
const openai = new OpenAI();

const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["serper"] }, pageSize: 100,
});

const res = await openai.chat.completions.create({
  model: "gpt-5",
  messages: [{ role: "user", content: "Find this week's news on AI agent security and scrape the top article" }],
  tools,
});

// Execute the tool call with the user's vaulted Serper API key
await sk.tools.executeTool(res.choices[0].message.tool_calls[0], "user_123");
import Anthropic from "@anthropic-ai/sdk";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);
const anthropic = new Anthropic();

const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["serper"] }, pageSize: 100,
});

const msg = await anthropic.messages.create({
  model: "claude-sonnet-5",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Find this week's news on AI agent security and scrape the top article" }],
  tools,
});

// Tool call runs with the user's vaulted Serper API key
await sk.tools.executeTool(msg.content, "user_123");
import { Agent } from "@google/adk/agents";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);

const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["serper"] }, pageSize: 100,
});

const agent = new Agent({
  name: "search_agent",
  model: "gemini-2.5-pro",
  instruction: "Serper tools scoped to this user",
  tools,
});

await agent.run("Find this week's news on AI agent security and scrape the top article");
Try these prompts
Copy any prompt into your agent. Each maps directly to a Serper tool. Click to copy, paste into your agent, done.
Web and news
Copy the prompt
Copied
Search Google for this vendor's pricing page.
Copy the prompt
Copied
Find news coverage of our competitor from the past week.
Copy the prompt
Copied
Get autocomplete suggestions for 'mcp server'.
Local and shopping
Copy the prompt
Copied
Find coffee shops near this address with their ratings.
Copy the prompt
Copied
List the latest Google reviews for this place.
Copy the prompt
Copied
Compare prices for this laptop on Google Shopping.
Research
Copy the prompt
Copied
Search Google Scholar for papers on agent tool calling.
Copy the prompt
Copied
Find patents on wireless charging assigned to this company.
Copy the prompt
Copied
Scrape this public webpage and return it as markdown.
SEE HOW AUTH WORKS
Each user connects their own Serper API key once, and Scalekit sends it with every call. Keys stay vaulted, every call is scope checked, and every action is logged.
1
Authorize
Your user connects
Serper
once. We tie it to their identity and the meetings they approved — no shared bot account, no org-wide access
Who:
user ‘A’
when:
Once per user
access:
Limited to user
2
Store
Their
Serper
token lives in a vault scoped to them. User A's meetings are never reachable by an agent acting for user B, even on the same connection
vault:
encrypted
scope:
per-user
tokens:
auto-refreshed
3
Resolve
When your agent calls a
Serper
tool, we fetch the right token server-side. It never touches your agent, never appears in the LLM context, never shows up in your logs
speed:
~40ms
check:
before every call
seen by:
nobody
4
Audit
Every
Serper
tool call is logged — who triggered it, which meeting was fetched, what came back. 90 days of history, tied to the user who authorized it
history:
90 days
export:
SIEM-ready
logged:
every call
Test other agents
See the same per-user auth pattern across other search and analytics connectors.
GTM and RevOps Teams
Competitive intelligence briefing agent
Scans Gong calls for competitor mentions, matches each one to its Notion battlecard, and DMs every affected rep a single Slack digest per cycle. Every call runs as the PMM who owns the briefing, never a shared bot.
GTM and RevOps Teams
Outbound prospecting agent
Searches Apollo for prospects matching your ICP, scores and ranks them, drafts personalized outreach in Gmail, and logs every send to Google Sheets. Mail goes out as the rep, not from a shared inbox.
Test other agents
See the same per-user auth pattern across other search and analytics connectors.
GTM
Competitive intelligence briefing agent
Scan Gong calls for competitor mentions, match each one to its Notion battlecard, and DM every affected rep a single Slack digest.
SALES
Outbound prospecting agent
Search Apollo for ICP matches, rank them, draft personalised Gmail outreach, and log every send to Google Sheets.
Why Scalekit
Secure your agent's access. Connectors ship in minutes
01.
Shared tokens break per-user analytics
A shared Serper API key looks fine in a demo. In production every search looks like one service account, and you cannot tell which user triggered it. Scalekit resolves the credential of the actual user who triggered the agent, never a shared bot.
// shared key
audit → bot_service_account

// scalekit
audit → user_abc ✓
02.
Authentication is not authorization
03.
Multi-tenancy is architectural
04.
Serper today. Ten connectors tomorrow.
“Our agents act across Salesforce, Gong, Google Drive, and more, on behalf of every customer. Scalekit behind the scenes meant we can keep adding tools without ever rebuilding how credentials or tool calling work.”
Venu Madhav Kattagoni
Head of Engineering / Von
FAQs
Frequently Asked Questions
Does the agent access Serper as the user or through a shared key?
As the user. Each user connects their own Serper API key once, and Scalekit sends it with every call. Audit logs attribute every search and scrape to that user, not a shared service account.
Where is the Serper API key stored?
In Scalekit's managed AES-256 token vault, namespaced per tenant. To rotate it, the user reconnects with a new API key. Revocation is a single dashboard action. Credentials never appear in prompts, logs, or LLM context.
Can I limit what the agent does in Serper?
Yes. All 13 Serper tools are read-only: they search Google results and fetch public webpages but change nothing. Filter by tool name in listScopedTools to narrow it further, for example to serper_search and serper_search_news. Scalekit also enforces scope checks before every API call.
What happens when a user revokes Serper access?
The connection is invalidated on the next tool call. Subsequent requests for that user fail closed with a clear error. Other users in the tenant remain unaffected. The event is logged for audit.
Which Google results can the agent search through Serper?
Web, News, Images, Videos, Maps, local places, Shopping, Scholar, and Patents, plus Google Lens reverse image search and autocomplete suggestions. serper_list_place_reviews reads a place's Google reviews, and serper_scrape_webpage returns a public page's text, optionally as markdown.
Start in your coding agent
Up and running in one command
Install the Scalekit skill in your editor of choice. Connector, auth, tools, prompt, all wired up
Claude Code REPL
/plugin marketplace add scalekit-inc/claude-code-authstack
/plugin install agentkit@scalekit-auth-stack
Cursor Code REPL
# ~/.cursor/mcp.json
{
""mcpServers"": {
""serper"": {
""url"": ""https://mcp.scalekit.com/serper"",
""headers"": { ""Authorization"": ""Bearer $SCALEKIT_TOKEN"" }
}
}
}
Codex Code REPL
# ~/.codex/config.toml
[mcp_servers.serper]
url = ""https://mcp.scalekit.com/serper""
auth_env = ""SCALEKIT_TOKEN""
Copilot Code REPL
# .vscode/mcp.json
{
""servers"": {
""serper"": {
""url"": ""https://mcp.scalekit.com/serper"",
""type"": ""http""
}
}
}