# SerpApi MCP server

> Get live Google, Bing and 40+ other search engine results as structured JSON or Markdown.

- Listing: https://mcp.tc/i/serpapi
- Connect: use the server's own URL `https://mcp.serpapi.com/mcp` (with your API key); clients connect to it directly. The listing link is a page, not an MCP endpoint.
- Type: remote (Streamable HTTP)
- Auth: API key
- Category: [Search & Web Data](https://mcp.tc/c/search-web)
- Vendor: SerpApi
- Homepage: <https://serpapi.com/integrations/mcp>
- Repository: <https://github.com/serpapi/serpapi-mcp>

## About

Connects to SerpApi to run live searches across Google, Bing, Yahoo, DuckDuckGo, YouTube, eBay and other engines. One search tool covers web, news, shopping, jobs, local, flights, hotels, images, weather and stock results. Engine parameter schemas are exposed as MCP resources, and optional table and dashboard tools render results visually in hosts that support MCP Apps.

Runs as a hosted streamable HTTP endpoint at mcp.serpapi.com, or locally from the open source repository (Python with uv) or an MCPB bundle. Connecting and listing tools needs no key, but searching requires a SerpApi API key, sent as a Bearer header or in the URL path.

## What it can do

- Run live searches on Google, Bing, Yahoo, DuckDuckGo, YouTube, eBay and more
- Get news, shopping, jobs, local, flight and hotel results
- Return results as JSON, compact JSON or Markdown
- Discover engine names and parameters through MCP resources
- View results as a sortable table or dashboard in MCP Apps hosts

## Tools (3)

- `search_dashboard`: Same as search, but renders metrics, a source chart and a results table with detail panel. (read-only)
- `search_table`: Same as search, but shows organic results as a sortable, searchable table in MCP Apps hosts. (read-only)
- `search`: Run a live search on any SerpApi engine and return structured results in JSON or Markdown. (read-only)

## Example prompts

- "Search Google for the latest news on solid-state batteries"
- "Find coffee shops in Austin, TX using Google Maps results"
- "Compare flight prices from Rome to London next month"
- "Show YouTube results for Rust async tutorials as a table"

## Install

### Claude Code

1. Run this in a terminal, in your project folder:

```bash
claude mcp add --transport http serpapi https://mcp.serpapi.com/mcp --header "Authorization: Bearer <YOUR_API_KEY>"
```

2. Replace the placeholder with your key before you run it, then check it with `/mcp` inside Claude Code.

Add `--scope user` to make it available in every project, not just this one.

### Claude Desktop

1. Custom connectors can’t send this server’s key header, so use the `mcp-remote` bridge. Open **Settings → Developer → Edit Config** and add:

`claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "serpapi": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://mcp.serpapi.com/mcp",
        "--header",
        "Authorization: Bearer <YOUR_API_KEY>"
      ]
    }
  }
}
```

2. Replace the placeholder with your key and restart Claude Desktop.

The bridge needs Node.js on your computer.

### Cursor

[Add to Cursor](<https://cursor.com/install-mcp?name=serpapi&config=eyJ1cmwiOiJodHRwczovL21jcC5zZXJwYXBpLmNvbS9tY3AiLCJoZWFkZXJzIjp7IkF1dGhvcml6YXRpb24iOiJCZWFyZXIgPFlPVVJfQVBJX0tFWT4ifX0%3D>) (opens Cursor)

Or add it by hand to `~/.cursor/mcp.json` (all projects) or `.cursor/mcp.json` (this project):

`mcp.json`:

```json
{
  "mcpServers": {
    "serpapi": {
      "url": "https://mcp.serpapi.com/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_API_KEY>"
      }
    }
  }
}
```

### VS Code

Add it to `.vscode/mcp.json`. VS Code asks for the key the first time and stores it securely:

`.vscode/mcp.json`:

```json
{
  "servers": {
    "serpapi": {
      "type": "http",
      "url": "https://mcp.serpapi.com/mcp",
      "headers": {
        "Authorization": "Bearer ${input:api-key}"
      }
    }
  },
  "inputs": [
    {
      "type": "promptString",
      "id": "api-key",
      "description": "API key",
      "password": true
    }
  ]
}
```

### Devin Desktop

1. Add it to `~/.config/devin/mcp_config.json` (macOS and Linux) or `%APPDATA%\devin\mcp_config.json` (Windows):

`mcp_config.json`:

```json
{
  "mcpServers": {
    "serpapi": {
      "serverUrl": "https://mcp.serpapi.com/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_API_KEY>"
      }
    }
  }
}
```

2. Refresh the MCP server list in Cascade.

Devin Desktop is the new name for Windsurf. It reads `serverUrl` (or `url`) for remote servers.

### Codex

```bash
codex mcp add serpapi --url https://mcp.serpapi.com/mcp --bearer-token-env-var SERPAPI_API_KEY
```

Or edit `~/.codex/config.toml` directly:

`config.toml`:

```toml
[mcp_servers.serpapi]
url = "https://mcp.serpapi.com/mcp"
bearer_token_env_var = "SERPAPI_API_KEY"
```

Set `SERPAPI_API_KEY` to your key in the shell that runs Codex.

### Gemini CLI

```bash
gemini mcp add --transport http --header "Authorization: Bearer <YOUR_API_KEY>" serpapi https://mcp.serpapi.com/mcp
```

This adds it to the current project. Add `-s user` to use it everywhere.

### Any client

Most clients accept this shape. Some name the URL field differently: `serverUrl` in Devin Desktop, `httpUrl` in Gemini CLI’s settings file.

```json
{
  "mcpServers": {
    "serpapi": {
      "type": "http",
      "url": "https://mcp.serpapi.com/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_API_KEY>"
      }
    }
  }
}
```

Zed puts servers under `context_servers` in its settings. Cline needs `"type": "streamableHttp"`, or it assumes SSE.

Client only starts local servers? Bridge it with `npx -y mcp-remote https://mcp.serpapi.com/mcp`.

## Details

- Server version: 2.0.0
- MCP protocol version: 2026-07-28
- Last checked: 2026-10-03 (reachable)
- Listed: 2026-10-03
- Updated: 2026-10-03

---
Source: https://mcp.tc/i/serpapi (mcp.tc is an independent directory, not affiliated with this server's publisher). Corrections: https://mcp.tc/report
