Google Search Console MCP
Servidor MCP de Google Search Console para auditorías SEO, información de palabras clave, inspección de URL, gestión de sitemaps y flujos de trabajo de IA en Cursor, Claude y Gemini CLI.
Documentación
GSC SEO MCP
Conecta Google Search Console a Cursor, Claude o Gemini. Haz preguntas en lenguaje natural y obtén datos SEO reales.
Qué puedes preguntarle a tu IA una vez configurado
Show me the biggest SEO opportunities for my site.
Which pages are losing clicks?
Find keywords ranking positions 4–15 that I can push to page 1.
Split branded vs non-branded traffic for the last 90 days.
Which pages have bad CTR for their ranking position?
Inspect these URLs and tell me what's wrong with indexing.
Generate a Markdown SEO report for the last 28 days.
Configuración
Hay dos partes:
- Google — dale al MCP acceso a tus datos de Search Console
- Tu aplicación de IA — dile a Cursor / Claude / Gemini cómo ejecutarlo
Elige primero tu método de autenticación de Google:
| Cuenta de servicio | OAuth | |
|---|---|---|
| Ideal para | Agencias, sitios de clientes, equipos | Sitios personales, tu propia cuenta |
| Cómo funciona | Archivo de clave JSON, sin inicio de sesión en navegador | Inicia sesión una vez mediante navegador |
| ¿Recomendado? | Sí, más simple para MCP | También funciona |
Parte 1 — Configuración de Google
Paso 1: Crea un proyecto de Google Cloud
Esto es solo un contenedor para el acceso a la API. No es tu sitio web.
- Ve a console.cloud.google.com
- Haz clic en el menú desplegable de proyectos en la parte superior → Nuevo proyecto
- Nómbralo
GSC SEO MCPy haz clic en Crear - Asegúrate de que esté seleccionado en el menú desplegable superior después de crearlo
Paso 2: Habilita la API de Search Console
- Ve a APIs y servicios → Biblioteca
- Busca Google Search Console API → haz clic en ella → haz clic en Habilitar
- Opcional: también habilita la Indexing API si quieres las herramientas de
indexing_*(solo útil para páginas de JobPosting/transmisiones en vivo)
Opción A: Cuenta de servicio (recomendada)
1. Crea la cuenta de servicio
- Ve a IAM y administración → Cuentas de servicio
- Haz clic en Crear cuenta de servicio
- Nombre:
gsc-seo-mcp→ haz clic en Crear y continuar - Omite la asignación de roles → haz clic en Continuar → haz clic en Listo
- Copia el correo de la cuenta de servicio — se ve así:
gsc-seo-mcp@your-project-id.iam.gserviceaccount.com
2. Descarga el archivo de clave
- Haz clic en la cuenta de servicio que acabas de crear
- Ve a la pestaña Claves → Agregar clave → Crear clave nueva → JSON → Crear
- Google descarga un archivo
.json— guárdalo en un lugar seguro, como:- Mac/Linux:
/Users/your-name/keys/gsc-seo-mcp.json - Windows:
C:/Users/your-name/keys/gsc-seo-mcp.json
- Mac/Linux:
No subas este archivo a GitHub. Trátalo como una contraseña.
3. Agrégalo a Search Console
- Abre search.google.com/search-console
- Selecciona tu propiedad
- Ve a Configuración → Usuarios y permisos → Agregar usuario
- Pega el correo de la cuenta de servicio, establece el permiso en Completo, haz clic en Agregar
Necesitas ser propietario de la propiedad para hacer esto.
4. Tu configuración de MCP
{
"mcpServers": {
"gsc-seo": {
"command": "npx",
"args": ["-y", "gsc-seo-mcp"],
"env": {
"GSC_AUTH_MODE": "service_account",
"GSC_KEY_FILE": "/absolute/path/to/gsc-seo-mcp.json",
"GSC_SITE_URL": "sc-domain:example.com"
}
}
}
}
Consejo para rutas en Windows — usa barras normales o dobles barras invertidas:
"GSC_KEY_FILE": "C:/Users/your-name/keys/gsc-seo-mcp.json"
Opción B: OAuth (iniciar sesión con Google)
Usa esto si quieres conectarte con tu propia cuenta de Google mediante inicio de sesión en el navegador.
1. Configura la pantalla de consentimiento de OAuth
- Ve a APIs y servicios → Pantalla de consentimiento de OAuth
- Elige Externa (funciona para cuentas de Gmail) → completa el nombre de la aplicación, el correo → guarda
- Si la aplicación está en modo de prueba, agrega tu Gmail en Usuarios de prueba
2. Crea el cliente OAuth
- Ve a APIs y servicios → Credenciales → Crear credenciales → ID de cliente OAuth
- Tipo de aplicación: Aplicación de escritorio → nómbrala
GSC SEO MCP Desktop→ haz clic en Crear - Haz clic en Descargar JSON — guárdalo como:
- Mac/Linux:
/Users/your-name/keys/gsc-oauth-client.json - Windows:
C:/Users/your-name/keys/gsc-oauth-client.json
- Mac/Linux:
3. Tu configuración de MCP
{
"mcpServers": {
"gsc-seo": {
"command": "npx",
"args": ["-y", "gsc-seo-mcp"],
"env": {
"GSC_AUTH_MODE": "oauth",
"GSC_OAUTH_SECRETS_FILE": "/absolute/path/to/gsc-oauth-client.json",
"GSC_TOKEN_FILE": "/absolute/path/to/gsc-oauth-token.json",
"GSC_SITE_URL": "sc-domain:example.com"
}
}
}
}
GSC_TOKEN_FILE es donde el MCP guarda tu token de inicio de sesión después del primer acceso en el navegador. Si lo omites, se guarda en ~/.gsc-seo-mcp/token.json por defecto.
4. Primera ejecución
Reinicia tu cliente MCP y luego pídele que ejecute server_health o list_properties. Se abrirá una ventana del navegador — inicia sesión con Google y aprueba el acceso. Eso es todo, no necesitas iniciar sesión de nuevo.
Si Google muestra una advertencia de "aplicación no verificada", haz clic en Avanzado → Continuar — es tu propia aplicación OAuth, no hay problema.
Parte 2 — Agrégalo a tu aplicación de IA
Se requiere Node.js 20+. Descárgalo aquí si no lo tienes.
Cursor
Crea .cursor/mcp.json en la carpeta de tu proyecto (o usa la configuración global de MCP):
{
"mcpServers": {
"gsc-seo": {
"command": "npx",
"args": ["-y", "gsc-seo-mcp"],
"env": {
"GSC_AUTH_MODE": "service_account",
"GSC_KEY_FILE": "/absolute/path/to/service-account.json",
"GSC_SITE_URL": "sc-domain:example.com",
"GSC_BRAND_TERMS": "mybrand,mybrand.com"
}
}
}
}
Claude Desktop
Edita claude_desktop_config.json:
- Mac:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"gsc-seo": {
"command": "npx",
"args": ["-y", "gsc-seo-mcp"],
"env": {
"GSC_AUTH_MODE": "service_account",
"GSC_KEY_FILE": "/absolute/path/to/service-account.json",
"GSC_SITE_URL": "sc-domain:example.com"
}
}
}
}
Reinicia Claude Desktop después de guardar.
Claude Code
Crea .mcp.json en tu proyecto:
{
"mcpServers": {
"gsc-seo": {
"command": "npx",
"args": ["-y", "gsc-seo-mcp"],
"env": {
"GSC_AUTH_MODE": "service_account",
"GSC_KEY_FILE": "/absolute/path/to/service-account.json",
"GSC_SITE_URL": "sc-domain:example.com"
}
}
}
}
O mediante CLI:
claude mcp add --transport stdio \
--env GSC_AUTH_MODE=service_account \
--env GSC_KEY_FILE=/absolute/path/to/service-account.json \
--env GSC_SITE_URL=sc-domain:example.com \
gsc-seo -- npx -y gsc-seo-mcp
Gemini CLI
Edita ~/.gemini/settings.json (o .gemini/settings.json en tu proyecto):
{
"mcpServers": {
"gsc-seo": {
"command": "npx",
"args": ["-y", "gsc-seo-mcp"],
"env": {
"GSC_AUTH_MODE": "service_account",
"GSC_KEY_FILE": "/absolute/path/to/service-account.json",
"GSC_SITE_URL": "sc-domain:example.com"
},
"timeout": 120000,
"trust": false
}
}
}
Formato de URL de propiedad
Usa el formato exacto de Search Console:
sc-domain:example.com ← domain property (recommended)
https://www.example.com/ ← URL-prefix property (include the trailing slash)
Todas las variables de configuración
| Variable | Requerida | Qué hace |
|---|---|---|
GSC_SITE_URL | Recomendada | Propiedad predeterminada. Ejemplo: sc-domain:example.com |
GSC_SITE_URLS | Opcional | Propiedades separadas por comas para paneles de múltiples sitios |
GSC_AUTH_MODE | Opcional | service_account o oauth. Se detecta automáticamente cuando es posible |
GSC_KEY_FILE | Cuenta de servicio | Ruta a la clave JSON de la cuenta de servicio |
GOOGLE_APPLICATION_CREDENTIALS | Cuenta de servicio | Variable de ruta alternativa |
GSC_OAUTH_SECRETS_FILE | OAuth | Ruta al secreto del cliente OAuth JSON |
GSC_OAUTH_CLIENT_ID | Alternativa OAuth | ID de cliente si no usas un archivo de secretos |
GSC_OAUTH_CLIENT_SECRET | Alternativa OAuth | Secreto de cliente si no usas un archivo de secretos |
GSC_TOKEN_FILE | Opcional | Dónde se guarda el token OAuth después del inicio de sesión |
GSC_BRAND_TERMS | Opcional | Términos de marca separados por comas para brand_nonbrand_split |
GSC_REPORT_DIR | Opcional | Carpeta para informes Markdown. Por defecto en ./reports |
GSC_DATA_STATE | Opcional | all, final o hourly_all. Por defecto en all |
Herramientas
Principales
| Herramienta | Qué hace |
|---|---|
server_health | Muestra el estado de configuración, el modo de autenticación y el número de herramientas |
list_properties | Lista todas las propiedades de Search Console a las que tienes acceso |
get_site | Obtiene los detalles de permisos de una propiedad |
add_site | Agrega un sitio a tu cuenta |
delete_site | Elimina un sitio de tu cuenta |
Análisis de búsqueda
| Herramienta | Qué hace |
|---|---|
search_analytics | Consulta completa con dimensiones, filtros, tipo de búsqueda y estado de datos |
advanced_filter_query | Obtiene hasta 50,000 filas para auditorías más profundas |
top_queries | Principales consultas, opcionalmente filtradas por página |
top_pages | Principales páginas, opcionalmente filtradas por consulta |
performance_overview | Instantánea del sitio con comparación de períodos, tendencia diaria, dispositivos |
compare_periods | Período actual vs anterior por página, consulta, país o dispositivo |
dimension_breakdown | Rendimiento por una dimensión |
page_query_matrix | Mapea páginas a las consultas que las generan |
Análisis SEO
| Herramienta | Qué responde |
|---|---|
quick_wins | ¿Qué palabras clave están lo suficientemente cerca para mejorar rápido? |
ctr_opportunities | ¿Qué fragmentos rinden por debajo de lo esperado para su posición? |
content_decay | ¿Qué páginas están decayendo en múltiples períodos? |
traffic_drop_diagnosis | ¿La caída fue en posiciones, CTR, demanda, cobertura o mixta? |
cannibalization_check | ¿Qué consultas están divididas entre páginas que compiten? |
brand_nonbrand_split | ¿Cuánto tráfico es de marca vs no marca? |
search_intent_breakdown | ¿Cómo se dividen las consultas entre informativas, comerciales, transaccionales, de navegación y locales? |
device_country_opportunities | ¿Qué segmentos de dispositivo/país/página tienen CTR o posiciones débiles? |
long_tail_questions | ¿Qué consultas de pregunta merecen expansión de contenido? |
page_refresh_priorities | ¿Qué páginas deberían actualizarse primero? |
internal_link_opportunities | ¿Qué páginas fuertes pueden respaldar a páginas más débiles? |
query_page_fit | ¿Para qué posiciona una página y el contenido coincide? |
title_meta_brief | ¿Qué consultas deberían guiar las actualizaciones de títulos/meta? |
anomaly_alerts | ¿Qué páginas tuvieron pérdidas anormales recientemente? |
Indexación, Sitemaps, URLs
| Herramienta | Qué hace |
|---|---|
inspect_url | Verifica una URL para estado de indexación, canónica, rastreo, cobertura |
batch_inspect_urls | Inspecciona múltiples URLs |
index_coverage_summary | Resume los resultados de inspección en una lista de URLs |
list_sitemaps | Lista los sitemaps enviados con errores y recuentos indexados |
get_sitemap | Detalles de un sitemap |
submit_sitemap | Envía o actualiza un sitemap |
delete_sitemap | Elimina un sitemap enviado |
indexing_publish_url | Envía una notificación de Indexing API para una URL elegible |
indexing_batch_publish | Envía múltiples notificaciones de Indexing API |
indexing_get_metadata | Verifica el estado más reciente de notificación de Indexing API para una URL |
Informes
| Herramienta | Qué hace |
|---|---|
multi_site_dashboard | Compara múltiples propiedades en una sola vista |
generate_markdown_report | Guarda un informe SEO en Markdown en el disco |
verify_claim | Vuelve a consultar GSC para verificar un número antes de reportarlo a un cliente |
Solución de problemas
Las herramientas no aparecen en mi aplicación de IA
Asegúrate de que Node.js 20+ esté instalado. Verifica que tu configuración de MCP use npx -y gsc-seo-mcp exactamente. Todas las rutas de archivo deben ser absolutas (no ~/ ni relativas).
La cuenta de servicio no muestra propiedades Necesitas agregar el correo de la cuenta de servicio a Search Console en Configuración → Usuarios y permisos.
La inspección de URL falla
La URL debe pertenecer a la propiedad en GSC_SITE_URL. Para propiedades de prefijo de URL, usa el prefijo exacto con protocolo y barra final.
OAuth no abre el navegador
Configura GSC_OAUTH_PORT=0 para que elija un puerto libre. Si estás en una máquina remota, tendrás que ejecutar esto localmente.
Notas sobre los datos
- Las filas de Search Analytics están ordenadas por clics. La API tiene límites internos de filas, por lo que no se incluyen todas las filas posibles.
GSC_DATA_STATE=allincluye datos recientes. Usafinalpara cifras de informes finalizadas.- La inspección de URL muestra el estado del índice de Google, no un rastreo en vivo.
- La Indexing API es solo para páginas de JobPosting y BroadcastEvent — no es un atajo general de indexación.
Seguridad
- Nunca subas claves de cuentas de servicio, secretos OAuth o archivos de token a Git.
- Usa permisos de solo lectura en Search Console si no necesitas herramientas de escritura.
- Revisa las llamadas a
delete_site,delete_sitemap,submit_sitemapyindexing_publish_urlantes de aprobarlas.
Documentación oficial
- Crear un proyecto de Google Cloud
- Habilitar APIs
- Crear credenciales
- Usuarios y permisos de Search Console
- API de Search Analytics
- API de inspección de URL
- Indexing API
- Model Context Protocol
Licencia
MIT. Si esto te ahorra tiempo, dale una estrella al repositorio.