DataForSEO MCP Server
OfficialThe DataForSEO MCP Server provides a standardized interface to access multiple SEO-related APIs for comprehensive data retrieval and analysis:
SERP API: Retrieve real-time search results from Google, Bing, and Yahoo with available location data
KEYWORDS_DATA API: Access keyword research metrics including search volume, CPC, and clickstream data
BACKLINKS API: Analyze backlink profiles, referring domains, anchor text usage, and track changes over time
ONPAGE API: Crawl websites to gather SEO performance metrics
DATAFORSEO_LABS API: Access proprietary keyword, SERP, and domain databases
BUSINESS_DATA API: Collect business reviews from platforms like Google, Trustpilot, and Tripadvisor
DOMAIN_ANALYTICS API: Identify website technologies and access Whois data
Customization: Enable/disable specific modules via environment variables and extend with new tools
Provides access to Google SERP data through DataForSEO's SERP API, allowing retrieval of real-time search engine results including titles, descriptions, and URLs.
Supports server implementation built on Node.js, requiring v14 or higher for handling DataForSEO API requests and responses.
Offers a TypeScript-based implementation for creating and extending tools that interact with DataForSEO APIs.
Utilizes Zod for schema validation of API parameters, ensuring properly structured requests to the DataForSEO endpoints.
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., "@DataForSEO MCP Serverwhat are the top 3 organic results for 'best running shoes' on Google?"
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.
DataForSEO MCP Server
This is the new v3 MCP server. The previous v2+ MCP server is deprecated and lives at dataforseo/mcp-server-typescript-deprecated.
MCP server and CLI for LLM agents to browse DataForSEO API documentation and make authenticated API requests. By default the binary starts an MCP server on stdio; CLI commands are an optional second mode.
Quick Start
Start the MCP server on stdio (default mode; set DATAFORSEO_LOGIN / DATAFORSEO_PASSWORD):
npx dataforseo-mcp-server@latestHTTP transport (port 3000; override with PORT):
npx dataforseo-mcp-server@latest --mode httpRelated MCP server: FetchSERP MCP Server
Authentication
OAuth 2.0 (default for HTTP MCP): works out of the box. MCP clients discover the DataForSEO authorization server via Protected Resource metadata and send Authorization: Bearer tokens.
Fallback: API login/password via environment variables (HTTP Basic). Required for CLI and stdio MCP; on HTTP it is used when no Authorization header is present.
# bash / macOS / Linux
export DATAFORSEO_LOGIN="your_api_login"
export DATAFORSEO_PASSWORD="your_api_password"# PowerShell
$env:DATAFORSEO_LOGIN="your_api_login"
$env:DATAFORSEO_PASSWORD="your_api_password"REM CMD
set DATAFORSEO_LOGIN=your_api_login
set DATAFORSEO_PASSWORD=your_api_passwordDATAFORSEO_USERNAME is accepted as an alias for DATAFORSEO_LOGIN. Get API keys at https://app.dataforseo.com/api-access.
MCP Server
The same tool implementations power both the MCP server and the CLI. One binary serves both modes; MCP is the default.
How the binary chooses a mode:
MCP stdio — default when no CLI command is passed
MCP HTTP — pass
--mode http(Streamable HTTP on port 3000; override withPORT)CLI — when the first command is
docsorrequest, or when--cli/--help/--versionis passed
MCP stdio (default):
npx dataforseo-mcp-serverMCP HTTP:
npx dataforseo-mcp-server --mode httpCLI:
npx dataforseo-mcp-server docs indexMCP client config (Cursor, Claude Desktop, and similar clients that use mcpServers):
Via URL — use the hosted remote MCP server, or start a local HTTP server (npx dataforseo-mcp-server --mode http) and point the client at it. OAuth works out of the box; env credentials are optional fallback only.
Remote MCP server: https://data.dataforseo.com/v3
{
"mcpServers": {
"dataforseo": {
"url": "https://data.dataforseo.com/v3/mcp"
}
}
}Local server (default port 3000):
{
"mcpServers": {
"dataforseo": {
"url": "http://localhost:3000/mcp"
}
}
}Via command (stdio) — the client starts the binary itself (stdio is the default mode). OAuth is not used on this transport — set env credentials (or pass them in the MCP client env block):
{
"mcpServers": {
"dataforseo": {
"command": "npx",
"args": [
"dataforseo-mcp-server",
// Optional additional args:
// "--docs-cache-dir", "D:\\my-docs-cache",
// "--configuration", "field-config.json"
],
"env": {
"DATAFORSEO_LOGIN": "your_api_login",
"DATAFORSEO_PASSWORD": "your_api_password",
// Optional additional env:
// "FIELD_CONFIG_PATH": "field-config.json"
}
}
}
}From the repo root during development:
{
"mcpServers": {
"dataforseo": {
"command": "npx",
"args": ["tsx", "src/index.ts"],
"cwd": "/path/to/mcp-server-typescript"
}
}
}MCP Tools
Tool | Title | Description |
| Docs Index | Fetch documentation index, optionally filtered by section (24h cache) |
| Docs List Sections | Return available documentation section names |
| Docs Search | Fetch documentation from a documentation URL ( |
| API Request | Make an authenticated API request |
api_request uses .ai paths by default (no aiMode parameter). Request body is passed as data (JSON object or array). CLI-only options (--param, --no-ai-mode) are not exposed via MCP.
HTTP transport
Streamable HTTP endpoints:
POST /mcpPOST /http
OAuth 2.0 Protected Resource metadata (RFC 9728) is always exposed so MCP clients can discover the authorization server and authenticate with Bearer tokens:
GET /.well-known/oauth-protected-resourceGET /.well-known/oauth-protected-resource/mcpGET /.well-known/oauth-protected-resource/http
Behind a reverse proxy, set TRUST_PROXY=true so metadata URLs use https.
Auth priority on HTTP requests:
Authorization: BasicheaderAuthorization: Bearerheader (OAuth access token)Env credentials (
DATAFORSEO_LOGIN/DATAFORSEO_PASSWORD) — fallback when noAuthorizationheader is sent
CLI (optional)
In addition to MCP, the same binary exposes docs and request as CLI commands.
Commands
Command | Description |
| Fetch full API documentation index |
| Filter index by API section |
| List available sections |
| Fetch documentation from a documentation URL or path (cURL example only by default) |
| Fetch documentation with PHP, Node.js, Python, and C# examples |
| Make an authenticated API request ( |
From a built local clone you can also use npx . instead of npx dataforseo-mcp-server.
Examples
# Browse SERP API endpoints
npx dataforseo-mcp-server docs index --section "SERP API"
# Read endpoint documentation (path or full docs URL)
npx dataforseo-mcp-server docs search serp/google/organic/live/regular
npx dataforseo-mcp-server docs search https://docs.dataforseo.com/v3/serp/google/organic/live/regular
# Include multi-language code examples (PHP, Node.js, Python, C#)
npx dataforseo-mcp-server docs search backlinks/referring_networks/live --need-code-example
# Live SERP request (recommended: use --param)
npx dataforseo-mcp-server request -X POST -p /v3/serp/google/organic/live/regular \
--param keyword=dataforseo --param language_code=en --param location_code=2840
# Same request via JSON body
npx dataforseo-mcp-server request -X POST -p /v3/serp/google/organic/live/regular \
-d '[{"keyword":"dataforseo","location_code":2840,"language_code":"en"}]'Documentation responses are cached for 24 hours. Default cache directory:
Windows:
%LOCALAPPDATA%\dataforseo-mcp-server\docs-cachemacOS:
~/Library/Caches/dataforseo-mcp-server/docs-cacheLinux:
~/.cache/dataforseo-mcp-server/docs-cache(or$XDG_CACHE_HOME)
Override with --cache-dir <path> on CLI docs commands. For MCP, pass --docs-cache-dir <path> in server startup args.
API responses are returned as the response body only (parsed JSON when possible). When a field configuration is loaded, api_request / request responses are trimmed to the configured fields for that endpoint path (see Field configuration).
Field configuration
Optionally limit which fields are returned from API responses. Unlike the previous multi-tool MCP server (keys = tool names), this package keys the config by API endpoint path.
# MCP stdio (default when no CLI command is passed)
npx dataforseo-mcp-server --configuration field-config.json
# MCP HTTP
npx dataforseo-mcp-server --mode http --configuration field-config.json
# CLI
npx dataforseo-mcp-server --configuration field-config.json request -X POST -p /v3/backlinks/summary/live --param target=example.comOr set env:
FIELD_CONFIG_PATH— path to a JSON file (Node)FIELD_CONFIG_JSON— inline JSON string (Node / Cloudflare Worker)
Minimal example (see field-config.example.json for a fuller sample):
{
"supported_fields": {
"/v3/serp/google/organic/live/advanced": ["id", "items.title", "items.url", "status_code"],
"/v3/backlinks/summary/live": ["id", "items.backlinks", "items.referring_domains", "status_code"]
}
}Behavior:
Built-in defaults always apply for
/v3/on_page/lighthouse/live/json(shrunk Lighthouse payload). Custom config merges on top and can override any path.Path match ignores
.aisuffix, trailing slash, and host (full URLs work).If the path is configured with a non-empty field list → only those fields are kept (applied to each
tasks[].result[]item).If the path has an empty field list
[]→ full response for that path (disables filtering).If the path is missing from both defaults and custom config → full response.
Copy the example and trim to the endpoints you use:
cp field-config.example.json my-config.jsonArchitecture
src/
├── index.ts # Unified entry (MCP by default stdio; CLI if docs/request/--cli)
├── config/ # URLs, sections, auth server
├── core/
│ ├── api/ # auth, client, path, request-body
│ ├── cli/ # program, error, output
│ ├── config/ # field configuration + defaults
│ ├── docs/ # path, section, cache
│ ├── http/ # fetch
│ ├── mcp/ # startup args (--configuration, --docs-cache-dir)
│ ├── tools/ # shared CLI + MCP tool implementations
│ ├── utils/ # field filter
│ ├── env.ts
│ └── version.ts
├── mcp/
│ ├── init-mcp-server.ts
│ ├── tool-definition.ts
│ ├── auth-middleware.ts
│ ├── http-routes.ts
│ ├── index.ts # stdio transport
│ └── index-http.ts # streamable HTTP
└── worker/ # Cloudflare Worker entry (built separately)Build outputs
Target | Command | Output | Used by |
Node (MCP + CLI) |
|
|
|
Cloudflare Worker |
|
|
|
Worker path is build/worker/worker/... because tsconfig.worker.json sets rootDir to src and the entry lives at src/worker/index-worker.ts.
For LLM Agents
Read SKILL.md in this repo for full agent instructions.
Development
Requires Node.js 20+.
npm install
npm run build
# Dev (tsx, no build step)
npm run dev # MCP stdio (default)
npm run dev:mcp:http # MCP HTTP
npm run dev -- docs index --section "SERP API" # CLI
# After build
npm run start # MCP stdio (default)
npm run start:mcp:http # Streamable HTTP
npx . docs index --list-sectionsMaintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA stdio-based server that enables interaction with the DataForSEO API through the Model Context Protocol, allowing users to fetch SEO data including search results, keywords data, backlinks, on-page analysis, and more.307MIT

FetchSERP MCP Serverofficial
-licenseCqualityNot gradedmaintenanceA Model Context Protocol server that provides AI assistants with access to FetchSERP API capabilities for SEO analysis, SERP data, web scraping, and keyword research.231919- -licenseCqualityNot gradedmaintenanceA Model Context Protocol server that exposes Haloscan SEO API functionality, allowing users to access keyword insights, domain analysis, and competitor research through Claude for Desktop and other MCP-compatible clients.3257
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol (MCP) server that provides comprehensive SEO analysis tools with actionable fix instructions for AI assistants like Claude Code and Claude Desktop.MIT
Related MCP Connectors
Live SEO workflow tools for Claude Code, Codex, and AI agents.
SEO MCP server: crawl your site, find AI-visibility gaps, and ship the fix from your coding agent.
A Model Context Protocol server for Wix AI tools
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/dataforseo/mcp-server-typescript'
If you have feedback or need assistance with the MCP directory API, please join our Discord server