Servidor MCP de DataForSEO
Implementación de servidor de Protocolo de Contexto de Modelo (MCP) para DataForSEO, que permite a Claude interactuar con API de DataForSEO seleccionadas y obtener datos de SEO a través de una interfaz estandarizada.
Características
API SERP: datos de páginas de resultados de motores de búsqueda (SERP) en tiempo real para Google, Bing y Yahoo;
API KEYWORDS_DATA: investigación de palabras clave y datos de flujo de clics, incluido el volumen de búsqueda, el costo por clic y otras métricas;
API ONPAGE: permite rastrear sitios web y páginas web según parámetros personalizables para obtener métricas de rendimiento SEO en la página;
API DATAFORSEO_LABS: datos sobre palabras clave, SERP y dominios basados en las bases de datos internas y algoritmos propietarios de DataForSEO.
Related MCP server: Google Search MCP Server
Prerrequisitos
Node.js (v14 o superior)
Credenciales de la API de DataForSEO (inicio de sesión y contraseña de la API)
Instalación
Clonar el repositorio:
git clone https://github.com/dataforseo/mcp-server-typescript
cd mcp-server-typescriptInstalar dependencias:
npm installConfigurar variables de entorno:
# Required
export DATAFORSEO_USERNAME=your_username
export DATAFORSEO_PASSWORD=your_password
# Optional: specify which modules to enable (comma-separated)
# If not set, all modules will be enabled
export ENABLED_MODULES="SERP,KEYWORDS_DATA,ONPAGE,DATAFORSEO_LABS,BACKLINKS,BUSINESS_DATA,DOMAIN_ANALYTICS"
# Optional: enable full API responses
# If not set or set to false, the server will filter and transform API responses to a more concise format
# If set to true, the server will return the full, unmodified API responses
export DATAFORSEO_FULL_RESPONSE="false"Instalación como paquete NPM
Puedes instalar el paquete globalmente:
npm install -g dataforseo-mcp-serverO ejecutarlo directamente sin instalación:
npx dataforseo-mcp-serverRecuerde configurar las variables de entorno antes de ejecutar el comando:
# Required environment variables
export DATAFORSEO_USERNAME=your_username
export DATAFORSEO_PASSWORD=your_password
# Run with npx
npx dataforseo-mcp-serverConstruyendo y funcionando
Construir el proyecto:
npm run buildEjecutar el servidor:
npm startMódulos disponibles
Los siguientes módulos están disponibles para ser habilitados/deshabilitados:
SERP: datos SERP en tiempo real para Google, Bing y Yahoo;KEYWORDS_DATA: investigación de palabras clave y datos de flujo de clics;ONPAGE: rastrear sitios web y páginas web para obtener métricas de rendimiento SEO en la página;DATAFORSEO_LABS: datos sobre palabras clave, SERP y dominios basados en las bases de datos y algoritmos de DataForSEO;BACKLINKS: datos sobre enlaces entrantes, dominios de referencia y páginas de referencia para cualquier dominio, subdominio o página web;BUSINESS_DATA: basado en reseñas de empresas e información de empresas compartida públicamente en las siguientes plataformas: Google, Trustpilot, Tripadvisor;DOMAIN_ANALYTICS: ayuda a identificar todas las posibles tecnologías utilizadas para crear sitios web y ofrece datos Whois;
Agregar nuevas herramientas/módulos
Estructura del módulo
Cada módulo corresponde a una API específica de DataForSEO:
Módulo
SERP→ API SERPMódulo
KEYWORDS_DATA→ API de datos de palabras claveMódulo
ONPAGE→ API OnPageMódulo
DATAFORSEO_LABS→ API de DataForSEO LabsBACKLINKS: módulo → API de backlinksBUSINESS_DATA: módulo → API de datos empresarialesDOMAIN_ANALYTICS: módulo → API de análisis de dominio
Opciones de implementación
Puedes:
Agregar una nueva herramienta a un módulo existente
Crear un módulo completamente nuevo
Agregar una nueva herramienta
A continuación se explica cómo agregar una nueva herramienta a cualquier módulo nuevo o preexistente:
// src/modules/your-module/tools/your-tool.tool.ts
import { BaseTool } from '../../base.tool';
import { DataForSEOClient } from '../../../client/dataforseo.client';
import { z } from 'zod';
export class YourTool extends BaseTool {
constructor(private client: DataForSEOClient) {
super(client);
// DataForSEO API returns extensive data with many fields, which can be overwhelming
// for AI agents to process. We select only the most relevant fields to ensure
// efficient and focused responses.
this.fields = [
'title', // Example: Include the title field
'description', // Example: Include the description field
'url', // Example: Include the URL field
// Add more fields as needed
];
}
getName() {
return 'your-tool-name';
}
getDescription() {
return 'Description of what your tool does';
}
getParams(): z.ZodRawShape {
return {
// Required parameters
keyword: z.string().describe('The keyword to search for'),
location: z.string().describe('Location in format "City,Region,Country" or just "Country"'),
// Optional parameters
fields: z.array(z.string()).optional().describe('Specific fields to return in the response. If not specified, all fields will be returned'),
language: z.string().optional().describe('Language code (e.g., "en")'),
};
}
async handle(params: any) {
try {
// Make the API call
const response = await this.client.makeRequest({
endpoint: '/v3/dataforseo_endpoint_path',
method: 'POST',
body: [{
// Your request parameters
keyword: params.keyword,
location: params.location,
language: params.language,
}],
});
// Validate the response for errors
this.validateResponse(response);
//if the main data array is specified in tasks[0].result[:] field
const result = this.handleDirectResult(response);
//if main data array specified in tasks[0].result[0].items field
const result = this.handleItemsResult(response);
// Format and return the response
return this.formatResponse(result);
} catch (error) {
// Handle and format any errors
return this.formatErrorResponse(error);
}
}
}Creando un nuevo módulo
Cree un nuevo directorio en
src/modules/para su módulo:
mkdir -p src/modules/your-module-nameCrear archivos de módulo:
// src/modules/your-module-name/your-module-name.module.ts
import { BaseModule } from '../base.module';
import { DataForSEOClient } from '../../client/dataforseo.client';
import { YourTool } from './tools/your-tool.tool';
export class YourModuleNameModule extends BaseModule {
constructor(private client: DataForSEOClient) {
super();
}
getTools() {
return {
'your-tool-name': new YourTool(this.client),
};
}
}Registre su módulo en
src/config/modules.config.ts:
export const AVAILABLE_MODULES = [
'SERP',
'KEYWORDS_DATA',
'ONPAGE',
'DATAFORSEO_LABS',
'YOUR_MODULE_NAME' // Add your module name here
] as const;Inicialice su módulo en
src/index.ts:
if (isModuleEnabled('YOUR_MODULE_NAME', enabledModules)) {
modules.push(new YourModuleNameModule(dataForSEOClient));
}¿Qué puntos finales o API desea que admitamos a continuación?
Buscamos constantemente ampliar las capacidades de este servidor MCP. Si desea que algún punto final o API de DataForSEO sea compatible, por favor:
Consulte la documentación de la API de DataForSEO para ver qué hay disponible
Abra un problema en nuestro repositorio de GitHub con:
La API o el punto final que desea ver compatible;
Una breve descripción de su caso de uso;
Describe cualquier característica específica que te gustaría ver implementada.
¡Sus comentarios nos ayudan a priorizar qué API admitiremos a continuación!