SerpKite
Google search, news, maps, scholar, shopping and public webpages for AI agents, with compact JSON or Markdown results.
Hosted MCP Server
npx add-mcp 'https://api.serpkite.com/v1/mcp'Installs into Claude Code, Codex, Cursor and more
Documentation
SerpKite runs a remote Model Context Protocol server. Any MCP client that speaks streamable HTTP can connect to it and call Google search, News, Maps, Scholar, a page fetcher and more as tools. There is nothing to install or host.
| URL | https://api.serpkite.com/v1/mcp |
| Transport | Streamable HTTP (stateless) |
| Auth | Authorization: Bearer skt_live_… |
| Protocol versions | 2025-06-18, 2025-03-26, 2024-11-05 |
| Billing | Same credits as the REST endpoints |
[!-accent] -accent OAuth is planned
Today the server authenticates with your API key in a header. OAuth sign-in for clients that can’t send custom headers is planned. Until then, use a client that lets you set headers, or the
mcp-remotebridge shown below.
Get a key
Create a key in the dashboard under API keys (see API keys). For MCP use, a dedicated key with a monthly credit limit is a good idea: an agent in a loop can make many calls, and the limit caps what that key can spend. The examples below read the key from the SERPKITE_API_KEY environment variable.
Claude Code
One command adds the server to Claude Code:
claude mcp add --transport http serpkite https://api.serpkite.com/v1/mcp \
--header "Authorization: Bearer $SERPKITE_API_KEY"
Run claude mcp list to check the connection, then ask Claude something that needs fresh results (“what changed in the latest Go release?”). Add --scope project to write the config to .mcp.json so your whole team gets it, but keep the key itself out of version control.
Claude Desktop
Claude Desktop launches local (stdio) servers from claude_desktop_config.json. To reach a remote server with a custom header, use the mcp-remote bridge, which runs through npx:
{
"mcpServers": {
"serpkite": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://api.serpkite.com/v1/mcp",
"--header",
"Authorization: Bearer ${SERPKITE_API_KEY}"
],
"env": {
"SERPKITE_API_KEY": "skt_live_..."
}
}
}
}
The file lives at ~/Library/Application Support/Claude/claude_desktop_config.json on macOS and %APPDATA%\Claude\claude_desktop_config.json on Windows. Restart Claude Desktop after editing it. You need Node.js installed for npx.
Where your plan offers Settings → Connectors → Add custom connector, you can add the URL there instead. Custom connectors that need a header will work without the bridge once OAuth ships.
Cursor
Add the server to ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one project):
{
"mcpServers": {
"serpkite": {
"url": "https://api.serpkite.com/v1/mcp",
"headers": {
"Authorization": "Bearer ${env:SERPKITE_API_KEY}"
}
}
}
}
Open Cursor Settings → MCP to check that the server is green and its tools are listed. If your Cursor version doesn’t expand ${env:…}, paste the key directly and keep the file out of git.
VS Code
VS Code (Copilot agent mode) reads .vscode/mcp.json. The inputs block prompts for the key once and stores it securely, so it never lands in the file:
{
"inputs": [
{
"type": "promptString",
"id": "serpkite-key",
"description": "SerpKite API key",
"password": true
}
],
"servers": {
"serpkite": {
"type": "http",
"url": "https://api.serpkite.com/v1/mcp",
"headers": {
"Authorization": "Bearer ${input:serpkite-key}"
}
}
}
}
Start the server from the MCP: List Servers command, then pick the SerpKite tools in the agent tool picker.
ChatGPT
ChatGPT can connect remote MCP servers as connectors when developer mode is enabled for your workspace. Be aware that ChatGPT’s connector setup authenticates with OAuth or no auth, and may not let you add a custom Authorization header. Until SerpKite’s OAuth support ships, ChatGPT is the one client on this page that may not be able to connect directly. For OpenAI models in your own code, use the tool calling guide instead, or the OpenAI Agents SDK, which accepts MCP server headers.
Other clients
Any client that supports streamable HTTP with custom headers works with the same two values: the URL and the Authorization header. Clients that only support stdio can use npx -y mcp-remote https://api.serpkite.com/v1/mcp --header "Authorization: Bearer …" as the command, as in the Claude Desktop example.
Tools
All tools return text formatted for a model. Search and webpage tools use Markdown; map and extract format their results as text; crawl returns a task ID and crawl_result returns its status or pages. Billing matches the corresponding REST operation, and crawl polling is free.
| Tool | What it does | Inputs | Credits |
|---|---|---|---|
search | Google web search: organic results, answer box, knowledge graph, People Also Ask, related searches | q, country, language, location, page, time, engine, num (10, 20, 30, 50, 100), include_content (0–5), highlights, include_domains, exclude_domains, boost_domains, start_date, end_date | 1 per page, up to 7 for num: 100, +1 per fetched page |
news | Google News articles | q, country, language, location, page, time, engine, include_domains, exclude_domains, boost_domains, start_date, end_date | 1 |
maps | Places with address, rating, phone, website, coordinates | q, country, language, location, page | 1 |
scholar | Academic papers with citations and PDF links | q, country, language, page | 1 |
patents | Patent search | q, country, language, page | 1 |
shopping | Products with prices and merchants | q, country, language, location, page | 1 |
images | Image search | q, country, language, location, page, engine, include_domains, exclude_domains, start_date, end_date | 1 |
videos | Video search | q, country, language, location, page, engine, include_domains, exclude_domains, start_date, end_date | 1 |
autocomplete | Query suggestions | q, country, language | 0.5 |
webpage | Fetch a public URL (HTML or PDF) and return its main content as Markdown with metadata | url, country | 1 |
extract | Read up to 20 URLs (HTML or PDF) as Markdown, or only the passages relevant to a query | urls, query, highlights, max_tokens, country, timeout | 1 per URL read (failed URLs are free) |
crawl | Start an async crawl of a site (or a section of it); returns an ID | url, limit, max_depth, query, include_paths, exclude_paths, max_tokens | 1 per page read (limit reserved, the rest refunded) |
crawl_result | The status or the pages of a crawl started with crawl | id | Free |
map | List a site’s URLs from its sitemaps and start page, optionally ranked by a search phrase | url, search, limit, include_paths, exclude_paths | 1 (free when nothing is found) |
Query tools require q; webpage, map and crawl require url; extract requires urls; crawl_result requires id. Search highlights is a boolean used with include_content; extract highlights is an integer passage count (0–10). time is one of hour, day, week, month, year. As with the REST API, failed and empty calls are not billed.
The MCP schemas expose a subset of REST options. Use tools/list to inspect the available inputs, or call REST/SDKs for options such as extract links/images, crawl cancellation and monitor management. The site ingestion guide and monitoring guide cover those workflows.
Test it with curl
The server is stateless: every POST carries one JSON-RPC 2.0 message (or a batch of up to 20) and gets a JSON reply. No session setup is needed, which makes it easy to test by hand.
Initialize:
curl https://api.serpkite.com/v1/mcp \
-H "Authorization: Bearer $SERPKITE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl","version":"1.0"}}}'
List the tools:
curl https://api.serpkite.com/v1/mcp \
-H "Authorization: Bearer $SERPKITE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'
Call search:
curl https://api.serpkite.com/v1/mcp \
-H "Authorization: Bearer $SERPKITE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"search","arguments":{"q":"best espresso machine 2026","country":"us"}}}'
The result’s content array holds a text item with the Markdown. Notifications (messages without an id) get an empty 202 Accepted. A missing or invalid key returns 401 with the usual error body.
Costs and safety
- Search and content-reading calls are billed like their REST equivalents;
crawl_resultpolling is free. Failed and empty results are not billed. - Give the MCP key a monthly
credit_limitso a runaway agent loop stops at a known cost. When the limit is hit, calls fail withkey_limit_reachedand nothing more is charged. See Spend controls. - The server only fetches public, logged-out pages. The
webpagetool refuses private network addresses.
Related
[MCP integration overview
Setup walkthroughs and use cases for Claude, Cursor and ChatGPT.
](https://serpkite.com/integrations/mcp)[Tool calling without MCP
Define a search tool directly for OpenAI and Anthropic models.
](https://serpkite.com/docs/guides/agents-tool-calling)[Output formats
What the Markdown the tools return looks like.
](https://serpkite.com/docs/output-formats)[API keys
Create a dedicated key with a monthly limit.