# DataForSEO

> Live SERP, keyword, backlink, and on-page SEO data for an AI agent.

[Canonical HTML page](https://top-mcps.com/mcp/dataforseo) · [server.json](https://top-mcps.com/mcp/dataforseo.json) · [methodology](https://top-mcps.com/about/methodology)

## Install

### Claude Desktop — `claude_desktop_config.json`

Paste under mcpServers. Fully quit and reopen Claude after editing.

```json
{
  "mcpServers": {
    "dataforseo": {
      "command": "npx",
      "args": [
        "-y",
        "dataforseo-mcp-server"
      ],
      "env": {
        "DATAFORSEO_USERNAME": "${DATAFORSEO_USERNAME}",
        "DATAFORSEO_PASSWORD": "${DATAFORSEO_PASSWORD}"
      }
    }
  }
}
```

### Claude Code — `CLI or .mcp.json`

Run from your repo. Commit .mcp.json to share with your team.

```shell
# export DATAFORSEO_USERNAME=your-login@example.com
# export DATAFORSEO_PASSWORD=your-api-password
claude mcp add dataforseo -- npx -y dataforseo-mcp-server
```

### Cursor — `.cursor/mcp.json`

Global path: ~/.cursor/mcp.json. Reload window after editing.

```json
{
  "mcpServers": {
    "dataforseo": {
      "command": "npx",
      "args": [
        "-y",
        "dataforseo-mcp-server"
      ],
      "env": {
        "DATAFORSEO_USERNAME": "${DATAFORSEO_USERNAME}",
        "DATAFORSEO_PASSWORD": "${DATAFORSEO_PASSWORD}"
      }
    }
  }
}
```

### VS Code — `.vscode/mcp.json`

VS Code uses the "servers" key (not "mcpServers").

```jsonc
{
  "servers": {
    "dataforseo": {
      "command": "npx",
      "args": [
        "-y",
        "dataforseo-mcp-server"
      ],
      "env": {
        "DATAFORSEO_USERNAME": "${DATAFORSEO_USERNAME}",
        "DATAFORSEO_PASSWORD": "${DATAFORSEO_PASSWORD}"
      }
    }
  }
}
```

### Windsurf — `~/.codeium/windsurf/mcp_config.json`

Open via Cascade → hammer icon → Configure.

```json
{
  "mcpServers": {
    "dataforseo": {
      "command": "npx",
      "args": [
        "-y",
        "dataforseo-mcp-server"
      ],
      "env": {
        "DATAFORSEO_USERNAME": "${DATAFORSEO_USERNAME}",
        "DATAFORSEO_PASSWORD": "${DATAFORSEO_PASSWORD}"
      }
    }
  }
}
```

### Cline — `cline_mcp_settings.json`

Open via the Cline sidebar → MCP Servers → Edit.

```json
{
  "mcpServers": {
    "dataforseo": {
      "command": "npx",
      "args": [
        "-y",
        "dataforseo-mcp-server"
      ],
      "env": {
        "DATAFORSEO_USERNAME": "${DATAFORSEO_USERNAME}",
        "DATAFORSEO_PASSWORD": "${DATAFORSEO_PASSWORD}"
      }
    }
  }
}
```

### Continue — `~/.continue/config.json`

Continue uses modelContextProtocolServers with a transport block.

```json
{
  "experimental": {
    "modelContextProtocolServers": [
      {
        "transport": {
          "type": "stdio",
          "command": "npx",
          "args": [
            "-y",
            "dataforseo-mcp-server"
          ],
          "env": {
            "DATAFORSEO_USERNAME": "${DATAFORSEO_USERNAME}",
            "DATAFORSEO_PASSWORD": "${DATAFORSEO_PASSWORD}"
          }
        }
      }
    ]
  }
}
```

### Codex CLI — `~/.codex/config.toml`

Codex uses TOML. Each server is a [mcp_servers.<name>] subtable.

```shell
# ~/.codex/config.toml
[mcp_servers.dataforseo]
command = "npx"
args = [
  "-y",
  "dataforseo-mcp-server",
]
env = { DATAFORSEO_USERNAME = "${DATAFORSEO_USERNAME}", DATAFORSEO_PASSWORD = "${DATAFORSEO_PASSWORD}" }
```

### Zed — `~/.config/zed/settings.json`

Zed calls them "context_servers". Settings live-reload on save.

```jsonc
{
  "context_servers": {
    "dataforseo": {
      "command": {
        "path": "npx",
        "args": [
          "-y",
          "dataforseo-mcp-server"
        ]
      },
      "env": {
        "DATAFORSEO_USERNAME": "${DATAFORSEO_USERNAME}",
        "DATAFORSEO_PASSWORD": "${DATAFORSEO_PASSWORD}"
      }
    }
  }
}
```

### ChatGPT — `ChatGPT → Apps directory`

DataForSEO doesn't ship a hosted HTTPS endpoint today. ChatGPT supports remote MCP servers only — to use this server in ChatGPT you'll need to deploy it to a public HTTPS URL first (e.g. via Cloudflare Workers or Vercel) or wait for an official remote build.

```none

```

## At a glance

- **Maintainer:** DataForSEO
- **Transport:** stdio, Streamable HTTP
- **Auth model:** API key
- **Required secrets:** DATAFORSEO_USERNAME, DATAFORSEO_PASSWORD
- **Supported clients:** Claude, Cursor, VS Code, Windsurf, ChatGPT, Any MCP-compatible client, DataForSEO account
- **License:** Apache-2.0
- **Language:** TypeScript
- **Latest version:** latest
- **Last verified:** 2026-06-15
- **GitHub stars:** 218 (fetched 2026-06-17T07:09:46.832Z)
- **Score:** 82/100 (rubric 2026-04 — see https://top-mcps.com/about/methodology)
- **Source:** https://github.com/dataforseo/mcp-server-typescript

## Tools & permissions

| Tool | Description | Args | Side effects |
|------|-------------|------|--------------|
| `serp` | Fetch live SERP results for a keyword on Google, Bing, or Yahoo. | `keyword: string` | network |
| `keywords_data` | Return search volume, CPC, and clickstream metrics for keywords. | `keywords: string[]` | network |
| `dataforseo_labs` | Run DataForSEO Labs algorithmic keyword/domain queries (ranked keywords, competitors). | `—` | network |
| `backlinks` | Return backlinks and referring domains for a target. | `target: string` | network |
| `on_page` | Crawl a site and return on-page SEO issues. | `target: string` | network |

## Security & scope

- **Access scope:** read-only
- **Sandbox:** Authenticates with a DataForSEO API login/password pair passed via env vars. All exposed tools are read-only data lookups — none mutate external state. The blast radius is financial (paid API calls), not destructive, so the key control is balance and the module allow-list, not write-scoping.
- **Gotchas:**
  - Every tool call costs money against your DataForSEO balance — an agent that loops can spend quickly. Cap with a low-balance account.
  - Use ENABLED_MODULES to expose only the endpoints you need; the default exposes every module including the more expensive Labs and Backlinks calls.
  - Credentials sit in client config files in plaintext — rotate the API password if a config is shared or committed.

## Quick answer

**What it does.** Connects to the DataForSEO API and exposes SERP, keyword, backlink, on-page crawl, domain analytics, and DataForSEO Labs endpoints as MCP tools. Each call is a metered API request against your DataForSEO balance.

**Best for:**
- Live SERP position checks
- Keyword volume and difficulty research
- Backlink profile audits
- On-page technical crawls
- Competitor SERP analysis

**Not for:**
- Teams wanting Ahrefs/Semrush proprietary scores
- Hard per-request cost ceilings
- Fully offline workflows

## Description

The official DataForSEO MCP connects an AI agent to the DataForSEO API — the data layer behind a large share of third-party SEO tools. It exposes live SERP snapshots for Google, Bing, and Yahoo, keyword volumes and clickstream metrics, backlink and referring-domain analysis, on-page crawl results, and the DataForSEO Labs algorithmic keyword/domain data. It is the most complete read-only SEO data MCP because you pay per request against one API rather than buying a seat in a fixed dashboard.

## Why it matters

Most SEO platforms resell DataForSEO data under their own UI. Going straight to the source via MCP gives an agent the same keyword volumes, SERP positions, and backlink graphs without a per-seat subscription, and bills only for the requests it makes.

## Key features

- Official DataForSEO maintainership
- SERP data for Google, Bing, Yahoo
- Keyword + clickstream volumes
- Backlink and referring-domain endpoints
- On-page crawl and DataForSEO Labs modules
- Module allow-list to limit exposed tools

## FAQ

### Is DataForSEO free?

No. The MCP itself is open-source (Apache-2.0), but every tool call is a metered request against your DataForSEO API balance. DataForSEO is prepaid pay-as-you-go — you fund a balance and each SERP, keyword, or backlink call draws it down. There is no monthly seat fee.

### How do I stop an agent from burning my balance?

Two controls: scope the credentials to a low-balance account, and use the module allow-list (the ENABLED_MODULES env var) to expose only the endpoints you need — e.g. SERP and KEYWORDS_DATA only, with BACKLINKS and ONPAGE disabled. An agent that loops can otherwise run many paid calls quickly.

### Does it run remotely as well as locally?

Yes. It runs as a local stdio server via npx, as an HTTP server on port 3000 with Basic Auth, and can be deployed to Cloudflare Workers for a hosted endpoint. Use stdio for a single developer and HTTP for a shared team endpoint.

### How is this different from the Ahrefs or Semrush MCP?

DataForSEO is the raw data API that many SEO tools resell. It gives you keyword volumes, SERP snapshots, and backlink graphs directly. Ahrefs and Semrush layer proprietary metrics (Domain Rating, Authority Score) and their own indexes on top — choose DataForSEO for raw data at request-level pricing, Ahrefs/Semrush for their scores.

## Changelog

- **2026-06-15** — Refreshed install snippets and fact sheet; verified for 2026.
- **2025-05-01** — Initial directory listing.
