GEO Tracker by DigestSEO

Realiza un seguimiento de las menciones de marca en siete superficies de búsqueda con IA. OSS gratuito; auditoría opcional lista para el cliente por 99 EUR.

Documentación

DigestSEO — Visibilidad IA MCP para SEO y GEO

CI npm version MCP Registry License: MIT TypeScript Cloudflare Workers MCP mcp-geo MCP server Wellknown reliability GitHub stars EUR 99 AI Visibility Audit

Instalación rápida

Se ejecuta localmente sobre stdio con tus propias claves API — todos los datos permanecen en tu máquina (consulta la Política de privacidad). Configura al menos una clave de motor (OPENAI_API_KEY, ANTHROPIC_API_KEY, GEMINI_API_KEY, PERPLEXITY_API_KEY, XAI_API_KEY, SERPAPI_API_KEY); los motores sin clave se omiten de forma segura.

Runtime: Node.js 22.13+ (CI prueba Node 22 y 24).

Claude Desktop / cualquier cliente MCP (npx):

{
  "mcpServers": {
    "digestseo": {
      "command": "npx",
      "args": ["-y", "@digestseo/mcp-geo"],
      "env": {
        "OPENAI_API_KEY": "sk-...",
        "GEMINI_API_KEY": "your_key_here"
      }
    }
  }
}

ChatGPT (MCP remoto): ChatGPT no se conecta directamente a servidores MCP STDIO locales. Para ChatGPT, usa la configuración de MCP remoto autoalojado a continuación, o la configuración del túnel MCP seguro de OpenAI para un servidor que se ejecute en una máquina local/privada. El endpoint público geo-mcp.digestseo.com/mcp no es un servicio llave en mano sin clave para escaneos nuevos.

Perplexity Computer (MCP remoto): Perplexity Computer admite conectores MCP remotos personalizados en planes elegibles. Después de autoalojar mcp-geo, abre Configuración de cuenta > Conectores > + Conector personalizado, elige Remoto, nómbralo digestseo e ingresa la URL https://<worker-host>/mcp de tu propio despliegue. Usa la opción OAuth del conector para el flujo de Worker; si configuraste CONNECT_SECRET, completa esa verificación del navegador durante la conexión. No uses el endpoint público geo-mcp.digestseo.com/mcp como un servicio de escaneo llave en mano sin clave. Consulta la guía de conectores de Computer actual de Perplexity.

Claude Code:

claude mcp add --transport stdio digestseo -s user --env GEMINI_API_KEY=your_key_here -- npx -y @digestseo/mcp-geo

O instala la misma integración MCP local a través del marketplace de Claude Code controlado por el propietario de este repositorio:

/plugin marketplace add AKzar1el/mcp-geo
/plugin install digestseo-geo@digestseo-mcp

El plugin del marketplace usa el .mcp.json del repositorio para lanzar npx -y @digestseo/mcp-geo. Cero claves de proveedor son suficientes para el descubrimiento de herramientas; para escaneos respaldados por motores, haz disponibles solo las claves de proveedor que quieras al proceso de Claude Code. El comando directo claude mcp add anterior sigue siendo la opción más simple cuando quieres adjuntar claves de proveedor explícitamente a la configuración del servidor.

Codex CLI:

codex mcp add digestseo -- npx -y @digestseo/mcp-geo

El comando de cero claves es suficiente para el descubrimiento de herramientas. Agrega solo las claves de proveedor que quieras con opciones repetidas --env NAME=VALUE antes del -- cuando se necesiten escaneos respaldados por motores.

Amp CLI:

amp mcp add digestseo -- npx -y @digestseo/mcp-geo

Amp ejecuta esto como un servidor MCP STDIO local. El comando de cero claves es suficiente para el descubrimiento de herramientas; antes de escaneos respaldados por motores, haz disponibles solo las claves de proveedor que quieras al proceso de Amp o configúralas en la configuración local de MCP env de Amp en lugar de comprometer secretos. Consulta la guía de MCP actual de Amp.

OpenCode v2:

opencode mcp add digestseo --global -- npx -y @digestseo/mcp-geo

OpenCode v2 ejecuta esto como un servidor STDIO local. Omite --global para configuración solo de proyecto. Cero claves son suficientes para el descubrimiento de herramientas MCP. Para escaneos respaldados por motores, edita la configuración generada de OpenCode v2 y agrega solo las variables de proveedor que quieras bajo mcp.servers.digestseo.environment, mapeando cada una a una referencia de entorno como "OPENAI_API_KEY": "{env:OPENAI_API_KEY}"; mantén el valor secreto real en el entorno del proceso en lugar de en el archivo de configuración. Verifica la conexión con opencode mcp list. Consulta la guía de MCP de OpenCode v2 actual.

Mistral Vibe Code: agrega mcp-geo al ~/.vibe/config.toml a nivel de usuario o al ./.vibe/config.toml a nivel de proyecto:

[[mcp_servers]]
name = "digestseo"
transport = "stdio"
command = "npx"
args = ["-y", "@digestseo/mcp-geo"]

La entrada de cero claves es suficiente para el descubrimiento de herramientas. Para escaneos respaldados por motores, pasa solo las claves de proveedor que quieras a través de la configuración de entorno STDIO de Vibe o del entorno heredado por Vibe en lugar de comprometer secretos. Usa /mcp digestseo (o /mcp) en Vibe para verificar el servidor y las herramientas. Consulta la guía de servidores MCP actual de Mistral y la referencia de configuración de Vibe.

LibreChat: agrega mcp-geo a librechat.yaml como un servidor STDIO local:

mcpServers:
  digestseo:
    type: stdio
    command: npx
    args:
      - -y
      - '@digestseo/mcp-geo'

Reinicia LibreChat después de cambiar librechat.yaml. La entrada de cero claves es suficiente para el descubrimiento de herramientas MCP. Antes de escaneos respaldados por motores, expón solo las claves API de proveedor que pretendes usar al proceso de LibreChat en lugar de comprometer valores secretos en el archivo YAML. Consulta la guía de configuración de MCP actual de LibreChat y la guía de funciones de MCP.

Raycast AI: abre Instalar servidor MCP (o Administrar servidores MCP -> Instalar nuevo servidor), elige Entrada/Salida estándar, establece el Comando a npx y los Argumentos a -y y @digestseo/mcp-geo. La instalación de cero claves es suficiente para el descubrimiento de herramientas. Antes de escaneos respaldados por motores, agrega solo las claves de proveedor que quieras en los campos de Entorno de MCP de Raycast en lugar de codificarlas en archivos de proyecto compartidos. Reinicia Raycast si npx se agregó a PATH después de que Raycast se iniciara. Consulta el manual de MCP actual de Raycast.

Msty Studio: abre Toolbox -> Agregar nueva herramienta, elige STDIO / JSON y usa:

{
  "command": "npx",
  "args": ["-y", "@digestseo/mcp-geo"]
}

La herramienta de cero claves es suficiente para el descubrimiento de MCP. Para escaneos respaldados por motores, define solo las claves de proveedor que quieras en Entornos de Msty Studio y adjúntalas a la herramienta en lugar de almacenar secretos sin procesar en archivos compartidos. Msty Studio Desktop puede ejecutar la herramienta localmente; Studio Web necesita su conexión documentada de Desktop/Sidecar para herramientas MCP locales. Consulta la guía de Toolbox MCP actual de Msty Studio y la guía de entornos.

Zed: abre Configuración -> IA -> Servidores MCP, elige Agregar servidor -> Agregar servidor local y configura digestseo con el comando npx y los argumentos -y, @digestseo/mcp-geo. El servidor local de cero claves es suficiente para el descubrimiento de herramientas; para escaneos respaldados por motores, agrega solo las claves de proveedor que pretendes usar en el mapa env de MCP local de Zed en lugar de comprometer secretos en la configuración de proyecto compartida. Si ejecutas Ruta B en tu propio Worker, elige Agregar servidor remoto y usa https://<worker-host>/mcp; cuando no se configura un encabezado Authorization, Zed usa el flujo estándar de OAuth de MCP. No trates el endpoint público de DigestSEO como un servicio llave en mano de claves de proveedor. Consulta la guía de MCP actual de Zed.

TraeCode: abre Configuración -> MCP -> Agregar -> Agregar manualmente y pega esta configuración STDIO local, o guarda el mismo objeto mcpServers como .trae/mcp.json en un proyecto de confianza:

{
  "mcpServers": {
    "digestseo": {
      "command": "npx",
      "args": ["-y", "@digestseo/mcp-geo"]
    }
  }
}

TraeCode recomienda NPX/UVX para servidores MCP locales y admite valores env cuando los escaneos respaldados por motores necesitan claves de proveedor. La forma de cero claves es suficiente para el descubrimiento; mantén los secretos de proveedor sin procesar fuera del .trae/mcp.json a nivel de proyecto. TraeCode CLI también puede cargar ese archivo MCP a nivel de proyecto, o puedes agregar una entrada equivalente stdio a través de traecli config edit e inspeccionarla con /mcp. Consulta la configuración de MCP del IDE actual de TraeCode y la guía de MCP de CLI.

GitHub Copilot CLI:

copilot mcp add digestseo -- npx -y @digestseo/mcp-geo

La instalación base comienza con cero claves de proveedor para que el descubrimiento de herramientas funcione. Agrega solo las claves de motor que quieras con la opción --env NAME=VALUE de Copilot CLI antes de ejecutar escaneos.

Plugin de agente portátil (GitHub Copilot / VS Code / Kiro y otros clientes de Agent Plugins 1.0): este repositorio ahora incluye el par estándar de raíz plugin.json + mcp.json. GitHub Copilot CLI puede instalarlo directamente desde GitHub:

copilot plugin install AKzar1el/mcp-geo

En VS Code, ejecuta Chat: Instalar plugin desde fuente e ingresa https://github.com/AKzar1el/mcp-geo. En Kiro, usa Powers -> Agregar poder personalizado -> Importar poder desde GitHub con la misma URL del repositorio. El plugin portátil lanza npx -y @digestseo/mcp-geo; cero claves de proveedor son suficientes para el descubrimiento, mientras que los escaneos respaldados por motores heredan solo las claves de proveedor que intencionalmente haces disponibles al cliente anfitrión. Las rutas de instalación nativas existentes siguen siendo válidas.

Qoder CLI:

qoder mcp add digestseo -- npx -y @digestseo/mcp-geo
qoder mcp list

Qoder lanza esto como un servidor MCP STDIO local. El comando de cero claves es suficiente para el descubrimiento de herramientas; haz disponibles solo las claves de proveedor que quieras al proceso de Qoder antes de escaneos respaldados por motores. Si Qoder ya se está ejecutando, usa /mcp reload para redescubrir el servidor y las herramientas. Consulta la guía de servidores MCP actual de Qoder y la referencia de MCP.

Docker Agent: Docker Agent puede lanzar servidores MCP STDIO locales directamente desde el YAML del agente. Agrega este conjunto de herramientas al agente que debería usar mcp-geo:

toolsets:
  - type: mcp
    command: npx
    args: ["-y", "@digestseo/mcp-geo"]

La forma de cero claves es suficiente para el descubrimiento de herramientas. Para escaneos respaldados por motores, agrega solo las claves de proveedor que necesites bajo el mapa env: del conjunto de herramientas (Docker Agent admite expansión ${env.NAME}) en lugar de comprometer valores secretos. Consulta la documentación de herramientas MCP locales actual de Docker.

goose: agrega mcp-geo como una extensión STDIO local en ~/.config/goose/config.yaml (macOS/Linux) o %APPDATA%\Block\goose\config\config.yaml (Windows):

extensions:
  digestseo-geo:
    type: stdio
    name: digestseo-geo
    enabled: true
    cmd: npx
    args: ["-y", "@digestseo/mcp-geo"]
    timeout: 300

La extensión de cero claves es suficiente para el descubrimiento de herramientas. Antes de escaneos respaldados por motores, configura solo las variables de entorno de proveedor que quieras para esta extensión a través de la configuración de extensiones / almacenamiento de secretos de goose en lugar de poner claves API sin procesar en el archivo YAML. El mismo servidor también se puede agregar interactivamente con goose configure -> Agregar extensión -> Extensión de línea de comandos. Consulta la configuración de extensiones actual de goose y la referencia de configuración.

GitLab Duo CLI: las versiones actuales de GitLab Duo CLI pueden consumir marketplaces de plugins compatibles con Claude directamente. Registra este repositorio e instala el plugin digestseo-geo existente:

glab duo plugin marketplace add https://github.com/AKzar1el/mcp-geo.git
glab duo plugin install digestseo-geo@digestseo-mcp

El plugin instalado carga el mismo servidor MCP local npx -y @digestseo/mcp-geo desde .mcp.json. Cero claves de proveedor permiten el descubrimiento; haz disponibles solo las claves de proveedor que quieras al proceso de GitLab Duo CLI antes de escaneos respaldados por motores.

Factory Droid:

droid mcp add digestseo "npx -y @digestseo/mcp-geo"
droid mcp list

Droid ejecuta esto como un servidor MCP STDIO local. La instalación de cero claves es suficiente para el descubrimiento de herramientas; agrega solo las claves de proveedor que elijas en la configuración de MCP a nivel de usuario de Droid antes de escaneos respaldados por motores. Mantén los secretos de proveedor fuera de los archivos .factory/mcp.json a nivel de proyecto.

Amazon Q Developer (IDE): abre el panel de chat de Q Developer ? Herramientas ? +, elige STDIO, nombra el servidor digestseo, establece el Comando a npx y agrega Argumentos -y y @digestseo/mcp-geo. Agrega solo las variables de entorno de proveedor que quieras antes de ejecutar escaneos; cero claves aún permiten el descubrimiento de herramientas MCP.

JetBrains AI Assistant (IDE): abre Configuración > Herramientas > AI Assistant > Model Context Protocol (MCP) > Agregar, elige STDIO y usa:

{
  "mcpServers": {
    "digestseo": {
      "command": "npx",
      "args": ["-y", "@digestseo/mcp-geo"]
    }
  }
}

JetBrains AI Assistant admite servidores MCP STDIO y NPX locales. La forma de cero claves es suficiente para el descubrimiento de herramientas; antes de escaneos respaldados por motores, haz disponibles solo las claves de proveedor que quieras al proceso del IDE, o importa un servidor MCP de Claude ya configurado.

JetBrains Air: este repositorio ya incluye el .mcp.json estándar de raíz que lanza npx -y @digestseo/mcp-geo. En Air, abre Configuración > IA > Servidores MCP, habilita Soporte de MCP y Lanzar servidores MCP del espacio de trabajo, luego usa el alcance Espacio de trabajo para que Air reutilice ese archivo verificado. La configuración del repositorio no contiene secretos de proveedor y es suficiente para el descubrimiento de herramientas de cero claves. Los escaneos respaldados por motores aún requieren las claves de proveedor seleccionadas en el entorno del proceso del servidor local; mantenlas fuera de .mcp.json comprometido. Consulta la guía de servidores MCP de JetBrains Air.

Visual Studio 2022 17.14+ / Visual Studio 2026: Visual Studio usa su propia configuración de MCP con forma de servers. Crea %USERPROFILE%\.mcp.json para una instalación a nivel de usuario o <SOLUTIONDIR>\.mcp.json para una solución:

{
  "servers": {
    "digestseo": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@digestseo/mcp-geo"]
    }
  }
}

Abre GitHub Copilot Chat en modo Agente y usa el menú Herramientas para verificar que digestseo esté disponible. No se necesitan claves de proveedor para el descubrimiento de herramientas; antes de los escaneos basados en el motor, haz disponibles solo las claves de proveedor que quieras para el proceso de Visual Studio, en lugar de comprometer secretos en el archivo de solución. Consulta la configuración actual de MCP de Visual Studio de Microsoft.

Cursor:

Add to Cursor

Windsurf: abre Manage MCPs → View raw config y agrega el paquete stdio local:

{
  "mcpServers": {
    "digestseo": {
      "command": "npx",
      "args": ["-y", "@digestseo/mcp-geo"],
      "env": {
        "OPENAI_API_KEY": "sk-..."
      }
    }
  }
}

Usa solo las claves de proveedor que quieras; cero claves aún permiten el descubrimiento de herramientas MCP.

Roo Code: abre MCP Servers > Edit Global MCP, o crea .roo/mcp.json para una instalación a nivel de proyecto, y agrega:

{
  "mcpServers": {
    "digestseo": {
      "command": "npx",
      "args": ["-y", "@digestseo/mcp-geo"]
    }
  }
}

Roo Code admite servidores MCP STDIO locales. La forma de cero claves es suficiente para el descubrimiento de herramientas; agrega solo las claves de proveedor que quieras antes de los escaneos. En Windows, si Roo no puede lanzar npx directamente, usa "command": "cmd" con "args": ["/c", "npx", "-y", "@digestseo/mcp-geo"], siguiendo el respaldo documentado de Roo para Windows.

VS Code: Instala el servidor stdio local en VS Code. La instalación base comienza sin claves de proveedor para que el descubrimiento de herramientas funcione; agrega solo las claves de API que quieras en tu configuración de usuario MCP de VS Code antes de ejecutar escaneos.

LM Studio: Agrega el servidor stdio local a LM Studio. La instalación base comienza sin claves de proveedor para que el descubrimiento de herramientas funcione; agrega solo las claves de API que quieras en mcp.json de LM Studio antes de ejecutar escaneos.

Kiro: Add to Kiro para una instalación local de un clic, o abre la configuración MCP de usuario (~/.kiro/settings/mcp.json) / configuración de espacio de trabajo (.kiro/settings/mcp.json) y agrega el paquete stdio local manualmente:

{
  "mcpServers": {
    "digestseo": {
      "command": "npx",
      "args": ["-y", "@digestseo/mcp-geo"]
    }
  }
}

Kiro admite servidores MCP STDIO locales en todas sus superficies actuales. La forma de cero claves es suficiente para el descubrimiento; agrega solo las variables de entorno de proveedor que quieras antes de los escaneos basados en el motor. Para uso remoto, auto-aloja el Worker a continuación y configura tu propia URL /mcp desplegada. El endpoint público geo-mcp.digestseo.com/mcp no es un servicio de escaneo nuevo sin claves listo para usar.

Extensión de Claude Desktop (un clic): descarga el paquete .mcpb desde la última versión y haz doble clic en él — Claude Desktop solicita las claves de API.

Primera ejecución: pide a tu cliente que "rastree acme.com como marca acme, luego actualícela"track_brand crea la marca con prompts generados, refresh_brand ejecuta el primer escaneo, check_visibility muestra las puntuaciones.

Agentes de IA que instalan este servidor: sigue llms-install.md. ¿Prefieres un servidor remoto con auto-actualización por cron? Auto-aloja en Cloudflare Workers a continuación.


mcp-geo es un rastreador de visibilidad de IA de código abierto que mide con qué frecuencia tu marca es citada por ChatGPT, Claude, Perplexity, Gemini, Grok, Google AI Overviews y Google AI Mode. Es el equivalente de GEO (Optimización de Motores Generativos) y AEO (Optimización de Motores de Respuesta) de Google Search Console — construido como un servidor MCP para que puedas consultar tus datos de visibilidad de IA directamente dentro de ChatGPT a través de una aplicación MCP remota configurada, Claude.ai, Claude Desktop, Claude Code, GitHub Copilot CLI, Cursor, Codex CLI, o cualquier cliente compatible con MCP.

Página de producto canónica: DigestSEO mcp-geo — Servidor MCP de Visibilidad de IA

Caso de estudio de ingeniería: Suite MCP de DigestSEO — Visibilidad de IA, Search Console, validación web e inteligencia de tendencias

¿Necesitas una línea base lista para el cliente sin ejecutar el stack tú mismo? La Auditoría de Visibilidad de IA mcp-geo cuesta EUR 99 una sola vez: una marca, hasta tres competidores, 20 prompts de intención de compra, verificaciones en hasta cinco superficies de IA compatibles donde los proveedores configurados devuelven resultados utilizables, evidencia de citas y un memo de acciones priorizadas. El paquete de código abierto sigue siendo gratuito.

Ve la prueba primero: Abre el informe de muestra generado a través de mcp-geo para ver el estilo de salida y la profundidad de la evidencia antes de solicitar la auditoría.

¿Listo para solicitarla? Abre un correo prellenado con tu marca/dominio y hasta tres competidores. No se requiere suscripción ni llamada de ventas.

Entrega de pago: Después de confirmar el ajuste y el alcance, respondo con las instrucciones normales de factura/pago.

Metodología: Los mismos 20 prompts de intención de compra se ejecutan como un diagnóstico puntual y se informan por motor, con evidencia de citas/fuentes cuando esté disponible. La auditoría es una instantánea observada, no una promesa de ranking propietario ni un pronóstico garantizado.

¿Quieres el protocolo antes de comprar? Lee la metodología de la Auditoría de Visibilidad de IA, incluidos el alcance, la cobertura de motores, los límites de interpretación y lo que la auditoría no afirma.

¿Prefieres cero configuración? Prueba la versión alojada en digestseo.com — infraestructura gestionada de Cloudflare, sin claves de API que gestionar, multi-marca, actualización programada, interfaz web. La lista de espera está abierta. Únete a la lista de espera →


Qué produce

Conéctate vía MCP, pide a Claude "Ejecuta un análisis de visibilidad de IA en [mi marca]", y en 90 segundos obtienes un memo de calidad de estratega basado en datos reales por motor:

Example AI visibility report

Ver el informe completo incluyendo brechas de contenido, recomendaciones de motores y síntesis →

¿Quieres reproducir la misma estructura de evidencia primero con tus propios datos? Usa el prompt de informe reutilizable de Auditoría de Visibilidad de IA.

El informe anterior fue generado por Claude a través del servidor MCP digestseo-mcp. La conversación encadenó cinco herramientas alojadas — visibility.check, visibility.compare, visibility.citations (Perplexity + Claude) y visibility.content_gaps — para producir un análisis de 4 motores con extractos de citas y un memo de estrategia de 3 recomendaciones.


Novedades

[0.3.21] - 22 de septiembre de 2026

  • MCP alojado sin estado: el tráfico /mcp protegido por OAuth ahora usa la ruta createMcpHandler del SDK-v2 de Cloudflare con compatibilidad heredada sin estado y validación explícita de Host/Origin, mientras que el antiguo enlace de Durable Object permanece solo como una retención de migración conservadora.
  • Contexto de herramientas más ligero: las doce herramientas MCP ahora exponen descripciones concisas basadas en ejemplos y orientación completa de parámetros de entrada, reduciendo la sobrecarga de contexto del cliente y haciendo más clara la selección de herramientas.

[0.3.20] - 22 de septiembre de 2026

  • Solicitudes de proveedor limitadas: las llamadas externas a proveedores de IA y SerpAPI ahora expiran después de 90 segundos en lugar de permitir que una API ascendente estancada cuelgue un escaneo indefinidamente.
  • Escaneos manuales de Worker duraderos: las solicitudes /admin/run-live autenticadas pueden establecer wait_for_completion: true para que las actualizaciones manuales/de operador permanezcan adjuntas hasta que el trabajo del motor de servicio vinculado termine.

[0.3.19] - 22 de septiembre de 2026

  • Google AI Mode: opta con SERPAPI_AI_MODE_ENABLED=true para medir Google AI Mode por separado a través de SerpAPI, incluida la evidencia de citas/fuentes cuando se devuelva.
  • Correcciones seguras de marcas rastreadas: los usuarios MCP locales pueden llamar a update_brand para cambiar identidad, competidores, alias, exclusiones o cadencia de actualización sin reemplazar prompts o ejecuciones históricas.
  • Programación manual: establece refresh_frequency a manual para pausar los escaneos programados auto-alojados mientras mantienes disponible refresh_brand explícito.

[0.3.18] - 21 de septiembre de 2026

  • Cobertura de visibilidad de Grok: opta con XAI_API_KEY para medir respuestas fundamentadas de Grok a través de xAI Web Search junto con ChatGPT, Claude, Perplexity, Gemini y Google AI Overviews.

[0.3.17] - 21 de septiembre de 2026

  • Conjuntos de medición definidos por el usuario exactos: los usuarios MCP locales ahora pueden llamar a set_prompts para reemplazar los prompts activos de una marca con 1-50 preguntas de compra acordadas mientras preservan las ejecuciones históricas; conjuntos idénticos repetidos son una no-operación.

[0.3.16] - 21 de septiembre de 2026

  • Compatibilidad de Gemini para proyectos nuevos: los escaneos de Gemini ahora usan por defecto gemini-3.1-flash-lite, evitando la restricción de acceso de Gemini 2.5 que Google aplica a algunos proyectos nuevos mientras preserva la misma integración de GenerateContent.

[0.3.15] - 20 de septiembre de 2026

  • Errores de configuración de proveedor más claros: una solicitud de actualización explícita para un motor no configurado ahora nombra el motor no disponible y explica cómo recuperarse en lugar de informar que no hay motores disponibles en absoluto.
  • Incorporación más amplia de clientes locales: la configuración de copiar y pegar ahora cubre Roo Code, Codex CLI y OpenCode v2 además de los clientes MCP existentes.
  • Enlaces README instalados confiables: los lectores de paquetes npm se dirigen a URLs duraderas de GitHub para documentación y activos de informes que se excluyen intencionalmente del tarball.

[0.3.14] - 20 de septiembre de 2026

  • Entradas de medición inspeccionables: los usuarios MCP locales ahora pueden llamar a list_prompts para revisar el conjunto exacto de prompts de intención de compra activos para una marca rastreada sin regenerarlo ni cambiarlo.
  • Incorporación correcta de ChatGPT: la guía de ChatGPT ahora usa un servidor MCP remoto configurado o OpenAI Secure MCP Tunnel para servidores locales/privados en lugar de anunciar el registro directo local STDIO no compatible.

[0.3.13] - 20 de septiembre de 2026

  • Evidencia de citas más fiel: get_citations ahora preserva la URL exacta de la página citada nativa del motor, incluidos la ruta y la consulta, cuando el proveedor devuelve una.
  • Metadatos actuales de la galería CLI de Gemini: el manifiesto de la extensión ahora permanece sincronizado en versión con el paquete, evitando etiquetas de versión de galería obsoletas después del lanzamiento.

[0.3.12] - 20 de septiembre de 2026

  • Mejor guía de flujo de trabajo de agentes: las respuestas de inicialización MCP locales y alojadas ahora incluyen instrucciones concisas a nivel de servidor para el flujo correcto de marca → actualización → visibilidad, el comportamiento de actualización alojada asíncrona y la semántica de motores no disponibles.

[0.3.11] - 19 de septiembre de 2026

  • Seguimiento programado más confiable: la frescura por motor y la expansión de motores vencidos mantienen a los proveedores obsoletos actualizándose sin volver a escanear innecesariamente los frescos, mientras que las marcas pueden elegir cadencia diaria o semanal.
  • Manejo de solicitudes más seguro: las selecciones de motores duplicadas se deduplican en la actualización alojada y las lecturas de visibilidad, y la siembra de marcas alojadas rechaza valores de cadencia de actualización inválidos antes de la persistencia.
  • Metadatos completos de Claude Desktop: el manifiesto MCPB ahora declara las nueve herramientas locales fijas, incluidas track_brand, list_brands y generate_prompts, coincidiendo con el servidor stdio real expuesto después de la instalación.

[0.3.10] - 19 de septiembre de 2026

  • Actualizaciones BYOK más seguras: los nombres de motores duplicados se deduplican antes del despacho del proveedor para que una solicitud no pueda activar accidentalmente escaneos duplicados o cargos de proveedor.
  • Contratos MCP más sólidos: las salidas estructuradas de prompt ganador/perdedor y brecha de contenido ahora publican esquemas concretos en lugar de registros opacos, mejorando la validación del lado del cliente y la interoperabilidad de agentes.
  • Mejores instalaciones de Registry: los metadatos del Official MCP Registry ahora anuncian las cinco claves de API de proveedor compatibles como configuración secreta opcional para el paquete stdio npm.

[0.3.9] - 19 de septiembre de 2026

  • Frescura de instantánea transparente: las instantáneas de visibilidad ahora exponen la marca de tiempo de observación de cada motor para que los datos de motores más antiguos no puedan confundirse con resultados uniformemente frescos.
  • Tendencias históricas auditables: el historial de visibilidad ahora incluye el denominador de prompts utilizables, el recuento de menciones de marca y el tiempo de observación detrás de cada puntuación por motor.

[0.3.8] - 19 de septiembre de 2026

  • Evidencia de auditoría más confiable: las comparaciones de competidores ahora honran su ventana de varios días solicitada en todas las ejecuciones utilizables y devuelven recuentos exactos de menciones; los extractos de citas y los respaldos de brechas de contenido sin proveedor se basan en la misma evidencia subyacente.
  • Mayor alcance de instalación local: se agregó la configuración del IDE Amazon Q Developer para el paquete stdio local existente.

[0.3.7] - 19 de septiembre de 2026

  • Recuento exacto de prompts de auditoría: la generación de prompts ahora persiste exactamente el número solicitado de prompts únicos o deja intacto el conjunto de prompts existente, protegiendo el alcance fijo de 20 prompts de la auditoría de pago.

[0.3.6] - 18 de septiembre de 2026

  • Escaneos de ChatGPT fundamentados: la visibilidad en vivo de ChatGPT utiliza búsqueda web, y se endureció la puntuación de menciones de dominios similares.
  • Mayor alcance de instalación local: se agregaron metadatos de Gemini CLI además de rutas de instalación de VS Code y LM Studio con un clic.

[0.3.5] - 17 de septiembre de 2026

  • Corrección de proveedor/entorno de ejecución: se migró Perplexity a la Agent API y se mantuvieron las instalaciones de plugins en el paquete stdio local en lugar del Worker público no configurado.
  • Confianza/preparación: se agregó divulgación de privacidad propia, empaquetado MCPB solo para producción y fórmulas transparentes de puntuación de auditoría.

[0.3.4] - 15 de septiembre de 2026

  • Portabilidad MCPB de Claude Desktop: el paquete ya no incluye binarios nativos de better-sqlite3; el almacenamiento local utiliza node:sqlite integrado en Node.js 22.13+.
  • Precisión del registro: los metadatos oficiales ahora anuncian solo el paquete npm stdio, mientras que el endpoint público alojado no es un servicio de escaneo nuevo configurado llave en mano.

[0.3.3] - 10 de septiembre de 2026

  • Auditoría única opcional: el paquete de código abierto sigue siendo gratuito; los equipos que deseen una base lista para el cliente pueden solicitar la Auditoría de Visibilidad de IA mcp-geo por EUR 99 desde la CTA anterior.
  • Ruta de solicitud con menor fricción: el README ahora abre un correo electrónico precargado y marcado con la fuente, mientras que los detalles de la auditoría permanecen disponibles en https://geo-mcp.digestseo.com/audit.

[0.3.2] — 27 de julio de 2026

  • Paquete con ámbito publicado: @digestseo/mcp-geo con metadatos sincronizados de Worker, MCP Registry y MCPB.
  • Metadatos de herramientas alojadas: espacios de nombres de visibility.* con esquemas de entrada/salida tipados; los nombres de herramientas stdio locales permanecen planos.
  • Distribución e implementación: configuración dedicada de D1 de mcp-geo-db, metadatos de plugins de Cursor y Claude Code, y pines de dependencias de producción corregidos.

[0.3.0] — Julio de 2026

  • CLI stdio local en npm (npx -y @digestseo/mcp-geo): las mismas herramientas MCP respaldadas por una base de datos SQLite local (~/.digestseo/digestseo.sqlite) — no se necesita cuenta de Cloudflare. Los motores se ejecutan en línea con tus propias claves API.
  • Herramientas locales de gestión de marcas (solo CLI): track_brand, list_brands, generate_prompts. Las implementaciones de Workers mantienen estas detrás de las rutas /admin/* protegidas por X-Seed-Secret.
  • Núcleo independiente del entorno de ejecución (src/core/) compartido por el Worker y el CLI, con un contrato de Db implementado por adaptadores D1 y better-sqlite3. Todas las correcciones de precisión y seguridad de 0.2.1 se trasladan a ambos entornos de ejecución.
  • Metadatos de distribución: server.json oficial del MCP Registry, extensión de escritorio MCPB (paquete .mcpb), Dockerfile, llms-install.md para agentes de IA, flujo de trabajo de publicación de versiones.

[0.2.1] — Junio de 2026

  • Puerta CONNECT_SECRET opcional en el flujo OAuth. De forma predeterminada, la compilación OSS completa automáticamente /authorize para cualquier cliente MCP que conozca la URL de tu worker — cualquiera que encuentre la URL puede conectarse y llamar a visibility.refresh, gastando los créditos de API de tu motor. Establece CONNECT_SECRET y el paso del navegador en el flujo de conexión ahora lo solicita antes de emitir un token. Consulta SECURITY.md.
  • Coincidencia de citas precisa. Las menciones de marcas/competidores ahora requieren límites de palabra (acme ya no coincide con "acmeshop"), y las verificaciones de citas vinculadas requieren el dominio exacto o un subdominio (notacme.com ya no cuenta como un enlace a acme.com).
  • aliases y exclude_terms por marca. Los alias siempre cuentan como una mención; los términos de exclusión suprimen la coincidencia de palabra simple en el nombre de la marca y la raíz del dominio — así, la marca "Monday" deja de coincidir con "monday" el día de la semana, mientras que monday.com sigue contando. Aplica migrations/0005_brand_alias_exclude.sql; las marcas existentes se comportan exactamente como antes.
  • Consistencia de visibility.history. Las ejecuciones parcialmente completadas ahora cuentan en el historial (coincidiendo con el comportamiento de 0.2.0 de visibility.check), y las ejecuciones completamente fallidas ya no aparecen como puntuaciones falsas de cero.
  • CI + pruebas unitarias. GitHub Actions ejecuta tsc --noEmit más un conjunto de pruebas unitarias de funciones puras (npm run test:unit) que cubren la coincidencia de menciones, la extracción de citas y la agregación de puntuaciones en cada push.
  • Los documentos ahora recomiendan OpenAI + Anthropic como el par de motores inicial — la capacidad de Gemini varía según el modelo, el proyecto y el nivel de uso, por lo que la variabilidad de cuotas específica del proveedor podría producir datos engañosos en la primera ejecución como la ruta documentada más económica.
  • Comparación de tiempo constante para SEED_SECRET / CONNECT_SECRET.

[0.2.0] — Mayo de 2026

  • Fan-out HTTP por motor. /admin/run-live ahora crea una fila de ejecuciones por motor y se auto-consulta /admin/run-engine una vez por motor. Cada motor se ejecuta en su propia invocación de worker con su propio presupuesto de 50 sub-solicitudes del plan gratuito — un fan-out de invocación única solía superar el límite a mitad de ejecución y perder la mitad de las filas.
  • Enlace de servicio (env.SELF) despacha el fan-out por motor a través de la infraestructura interna de Cloudflare en lugar de una consulta de URL pública, evitando la protección "Worker se llamó a sí mismo" (error 1042) que bloquea silenciosamente esta última.
  • Columna de estado en prompt_responses (ok / failed / skipped) más error_message. Las llamadas a motores fallidas solían escribir filas raw_response='ERROR: ...' que la puntuación posterior trataba como aciertos reales de cero menciones; ahora se excluyen explícitamente.
  • Inserciones resistentes a FK. /admin/run-engine INSERT OR IGNORE su fila de ejecuciones antes de persistir — D1 es eventualmente consistente entre regiones periféricas, y el INSERT INTO runs ascendente de /admin/run-live no siempre se replica antes de que llegue la llamada al motor descendente. El IGNORE hace que el FK sea feliz de cualquier manera.
  • Lote D1 masivo. Cada motor recopila sus 20 resultados de prompts en memoria y luego vacía inserciones + escrituras de caché + el UPDATE runs SET status='completed' final en una sola llamada D1.batch(). Reduce el recuento de sub-solicitudes por invocación de ~89 a ~26.
  • Consultas de visibilidad relajadas. getLatestCompletedRun se ancla en EXISTS(ok rows) en lugar de status='completed', por lo que las ejecuciones parcialmente completadas aún muestran sus datos en la salida de la herramienta MCP en lugar de desaparecer silenciosamente.
  • Nueva ruta de administración POST /admin/cleanup-failed-runs para la eliminación única de filas heredadas contaminadas después de migrar a 0004.

[0.1.1] — Mayo de 2026

  • La instalación manual ahora es la ruta canónica. Se eliminó el script de configuración bash poco confiable; SETUP.md es autónomo y se puede copiar y pegar, con cada indicación interactiva de wrangler documentada en línea.

[0.1.0] — Mayo de 2026

  • Lanzamiento público inicial.
  • Soporte de 5 motores: ChatGPT (gpt-4o-mini), Claude (claude-haiku-4-5), Perplexity (sonar), Gemini (gemini-2.5-flash-lite) y Google AI Overviews (a través de SerpAPI).
  • 6 herramientas MCP alojadas: visibility.check, visibility.history, visibility.compare, visibility.citations, visibility.content_gaps, visibility.refresh.
  • Los motores son opcionales según las claves API que proporciones — establece solo las credenciales que tengas, el resto se omite correctamente.
  • Cloudflare Cron Trigger que actualiza automáticamente las marcas rastreadas cada 6 horas, respetando el refresh_frequency por marca (diario/semanal).
  • Almacenamiento respaldado por D1 para marcas, prompts, ejecuciones, citas y una caché de prompts compartida.

¿Qué Puede Hacer Esto?

  • Ver qué herramientas de IA citan tu marca y cuáles no — obtén un desglose por motor de quién te cita para consultas de intención de compra.
  • Rastrear la visibilidad de IA semanalmente, automáticamente — el Cron Trigger integrado vuelve a ejecutar escaneos en la cadencia que configures por marca.
  • Comparar tu visibilidad de IA con la de los competidores — porcentajes de participación de voz, prompts que ganas, prompts que ellos ganan.
  • Encontrar brechas de contenido — recomendaciones sintetizadas por Claude-Haiku basadas en tus prompts perdedores reales.
  • Usarlo dentro de conversaciones de Claude.ai — agrega la URL del Worker implementado como conector MCP personalizado y pregunta en lenguaje natural.
  • Autoalojado en tu propia cuenta de Cloudflare — tus claves API, tus datos, tu límite de costos. Los niveles gratuitos de Workers + D1 cubren una sola marca con actualizaciones diarias.

Consulta el informe de ejemplo anterior para ver cómo se ve esto en la práctica.


Herramientas Disponibles

Las seis capacidades de análisis se comparten entre ambos transportes, pero los nombres MCP expuestos son intencionalmente específicos del transporte: las conexiones alojadas/Worker usan el espacio de nombres visibility.*, mientras que el paquete stdio local usa nombres planos.

Alojado / Workerstdio localQué haceQué proporcionas
visibility.checkcheck_visibilityInstantánea de visibilidad de IA más reciente en todos los motores configurados para una marca rastreada, con puntuaciones por motor, prompts ganadores y prompts perdedores.brand_id, filtro opcional engines[]
visibility.historyget_visibility_historyHistorial de series temporales de visibilidad general y por motor, agrupado diaria o semanalmente.brand_id, days opcional (predeterminado 30), granularity opcional (daily/weekly)
visibility.comparecompare_competitorsComparación de participación de voz contra dominios de competidores, con prompts que ganas y prompts que ellos ganan.brand_id, competitor_domains[] opcional, days opcional
visibility.citationsget_citationsLos eventos de citas reales — prompt, motor, extracto de respuesta, tipo de cita, URL de marca cuando está presente.brand_id, days opcional, filtro engine opcional
visibility.content_gapsget_content_gapsRecomendaciones de contenido priorizadas generadas por Claude-Haiku dirigidas a tus prompts perdedores.brand_id, max_recommendations opcional (1-10)
visibility.refreshrefresh_brandActivar manualmente un escaneo nuevo en cada motor cuya clave API esté configurada.brand_id, filtro engines[] opcional

El CLI stdio local (npx, extensión de escritorio, Docker) además proporciona gestión de marcas — en una implementación de Workers, las mismas operaciones viven detrás de las rutas /admin/* protegidas por X-Seed-Secret:

Herramienta (solo CLI local)Qué haceQué proporcionas
track_brandComenzar a rastrear una marca: la crea localmente y genera su conjunto de prompts de intención de compra (Claude Haiku cuando ANTHROPIC_API_KEY está configurado, tres prompts iniciales en caso contrario).brand_id, name, domain, category opcional, competitors[], aliases[], exclude_terms[], prompt_count, refresh_frequency (daily/weekly/manual, predeterminado weekly)
update_brandCorregir el dominio, nombre, categoría, competidores, alias, exclusiones o cadencia de actualización de una marca existente sin reemplazar prompts activos o ejecuciones históricas. Establece la cadencia a manual para pausar los escaneos programados del Worker mientras mantienes disponible la actualización manual.brand_id más cualquier campo a cambiar
list_brandsListar marcas rastreadas con dominios, competidores, alias, exclusiones y recuentos de prompts activos.
list_promptsInspeccionar los prompts activos exactos de intención de compra para una marca rastreada sin cambiarlos.brand_id
set_promptsReemplazar el conjunto de prompts activos con preguntas de compra exactas proporcionadas por el usuario mientras se preservan las ejecuciones históricas.brand_id, prompts[] (1-50 preguntas únicas)
generate_promptsRegenerar el conjunto de prompts de una marca a través de Claude Haiku (reemplaza prompts activos, mantiene el historial).brand_id, count opcional (predeterminado 20)

Primeros Pasos

Paso 1 — Obtén claves API

Los motores son opcionales. Elige los que quieras; el resto se omite silenciosamente.

  • OpenAI — Motor ChatGPT (gpt-5-search-api) con búsqueda web. OpenAI actualmente factura la búsqueda web a $10 por cada 1,000 llamadas más los cargos por tokens del modelo; consulta precios de API y claves de API.
  • Anthropic — Motor Claude, además de generación de prompts y análisis de brechas de contenido (ambos usan Claude Haiku). ~€0.0002 por prompt. Los créditos de prueba gratuitos suelen ser suficientes para evaluar. console.anthropic.com
  • Google AI Studio (Gemini) — Motor Gemini (gemini-3.1-flash-lite). Google actualmente ofrece uso de tokens de nivel gratuito para este modelo, mientras que el uso de pago se factura por tokens. Los límites de tasa varían según el modelo, el proyecto y el nivel de uso, y Google dice que la capacidad real puede variar; verifica los límites activos de tu proyecto en AI Studio en lugar de asumir un RPM/RPD fijo. Consulta precios de Gemini y límites de tasa.
  • Perplexity — Motor Perplexity Sonar. ~€0.005-0.008 por prompt. Solo de pago. perplexity.ai/settings/api
  • xAI — Motor Grok (grok-4.6) con fundamentación obligatoria de Web Search. xAI actualmente fija el precio de Web Search en $5 por cada 1,000 llamadas más tokens del modelo. console.x.ai · precios
  • SerpAPI — Google AI Overviews más el modo Google AI Mode opcional. Una sola clave de SerpAPI alimenta ambos, pero AI Mode está deliberadamente desactivado por defecto porque añade una búsqueda de pago separada por prompt; establece SERPAPI_AI_MODE_ENABLED=true cuando quieras esa séptima superficie. API de Google AI Mode · serpapi.com/dashboard

Par inicial recomendado: OpenAI + Anthropic (Claude). OpenAI proporciona visibilidad de ChatGPT fundamentada mediante búsqueda web y factura las llamadas de búsqueda más los tokens del modelo; Anthropic también impulsa la generación de prompts y el análisis de brechas de contenido. Revisa los precios actuales del proveedor antes de estimar el costo recurrente del escaneo. Añade Gemini, Perplexity, Grok o SerpAPI deliberadamente cuando quieras más cobertura; la capacidad de Gemini varía según el modelo, el proyecto y el nivel de uso, y Google AI Overviews a menudo no devuelve ningún resultado (puntuado como cero). Google AI Mode es una llamada separada de SerpAPI y permanece deshabilitado hasta SERPAPI_AI_MODE_ENABLED=true, evitando que una configuración existente de SerpAPI duplique silenciosamente las llamadas de búsqueda de Google.

Paso 2 — Despliega en tu cuenta de Cloudflare

El despliegue son 6 comandos y toma unos 5 minutos. Consulta SETUP.md para la guía completa con explicaciones y solución de problemas, o sigue la versión rápida a continuación.

# 1. Install deps
npm install

# 2. Log in to Cloudflare
npx wrangler login

# 3. Copy the config template
cp wrangler.example.jsonc wrangler.jsonc

# 4. Create KV namespace + D1 database, paste each printed id into wrangler.jsonc
npx wrangler kv namespace create OAUTH_KV
npx wrangler d1 create mcp-geo-db

# 5. Set the required secret + at least one engine API key
#    Recommended starting pair — OpenAI uses web search plus model tokens; check current pricing:
npx wrangler secret put SEED_SECRET
npx wrangler secret put CONNECT_SECRET      # recommended — gates who can connect (see SECURITY.md)
npx wrangler secret put OPENAI_API_KEY      # ChatGPT engine
npx wrangler secret put ANTHROPIC_API_KEY   # Claude engine + prompt generation

# 6. Apply migrations and deploy
npx wrangler d1 migrations apply mcp-geo-db --remote
npx wrangler deploy

Después de desplegar tu propio Worker, usa la URL /mcp de ese despliegue como endpoint remoto, por ejemplo:

https://YOUR-WORKER-NAME.YOUR-SUBDOMAIN.workers.dev/mcp

Usa la URL de tu Worker configurado para integraciones de directorio o cliente. El endpoint público geo-mcp.digestseo.com/mcp no es un sustituto alojado sin clave para un despliegue con credenciales de proveedor de motor.

Paso 3 — Conéctate a tu cliente MCP

Después de que wrangler deploy termine, obtienes una URL como https://digestseo-mcp.YOUR-SUBDOMAIN.workers.dev.

Claude.ai (web)

Configuración → Conectores → Añadir conector personalizado. Pega:

https://YOUR-WORKER-NAME.YOUR-SUBDOMAIN.workers.dev/mcp

Completa el handshake OAuth. El conector se vuelve verde cuando está listo.

ChatGPT (MCP remoto)

Las aplicaciones MCP personalizadas de ChatGPT se conectan a servidores MCP remotos, así que usa la URL /mcp del despliegue de tu Worker configurado anteriormente. En ChatGPT, habilita el Modo Desarrollador/aplicaciones personalizadas para tu espacio de trabajo y añade esa URL MCP remota. La disponibilidad depende de tu plan de ChatGPT y la política de administración del espacio de trabajo; el soporte MCP actual de OpenAI no requiere nombres de herramientas especiales search o fetch.

https://YOUR-WORKER-NAME.YOUR-SUBDOMAIN.workers.dev/mcp

ChatGPT (local/privado mediante OpenAI Secure MCP Tunnel)

OpenAI Secure MCP Tunnel es el puente compatible cuando quieres que ChatGPT use el paquete stdio local sin exponerlo como un servidor HTTPS público. Crea un túnel en OpenAI Platform primero, luego mantén tunnel-client ejecutándose en la misma máquina que lanza mcp-geo. Necesitas un ID de túnel, una clave de API de runtime del túnel, y permisos de túnel/modo desarrollador de ChatGPT para el espacio de trabajo objetivo.

Haz disponibles las claves de proveedor que quieras usar para el proceso mcp-geo, luego inicializa un perfil de túnel con el comando del paquete local:

tunnel-client init --sample sample_mcp_stdio_local --profile digestseo --tunnel-id tunnel_0123456789abcdef0123456789abcdef --mcp-command "npx -y @digestseo/mcp-geo"
tunnel-client doctor --profile digestseo --explain
tunnel-client run --profile digestseo

Mientras tunnel-client run esté saludable, crea una aplicación en modo desarrollador en ChatGPT, elige Tunnel como tipo de conexión y selecciona ese túnel. Esta ruta es para uso privado/local; no publica mcp-geo como una aplicación pública de ChatGPT. Sigue la guía actual de Secure MCP Tunnel de OpenAI para la creación de túneles, permisos, descargas y solución de problemas.

Claude Code

claude mcp add --transport http digestseo https://YOUR-WORKER-NAME.YOUR-SUBDOMAIN.workers.dev/mcp

Luego ejecuta /mcp dentro de Claude Code para completar el handshake OAuth en tu navegador.

Claude Desktop

Edita la configuración de tu Claude Desktop:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "digestseo": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://YOUR-WORKER-NAME.YOUR-SUBDOMAIN.workers.dev/mcp"
      ]
    }
  }
}

Reinicia Claude Desktop después de editar.

Cursor

Edita ~/.cursor/mcp.json:

{
  "mcpServers": {
    "digestseo": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://YOUR-WORKER-NAME.YOUR-SUBDOMAIN.workers.dev/mcp"
      ]
    }
  }
}

Reinicia Cursor.

Codex CLI

Añade a ~/.codex/config.toml:

[mcp_servers.digestseo]
command = "npx"
args = [
  "-y",
  "mcp-remote",
  "https://YOUR-WORKER-NAME.YOUR-SUBDOMAIN.workers.dev/mcp",
]

Referencia de Variables de Entorno

VariableRequeridaPredeterminadoDescripción
OPENAI_API_KEYopt-insin establecerHabilita el motor ChatGPT. Sin ella, ChatGPT se omite.
ANTHROPIC_API_KEYopt-insin establecerHabilita el motor Claude y el generador de prompts + analizador de brechas de contenido impulsados por Claude Haiku.
GEMINI_API_KEYopt-insin establecerHabilita el motor Gemini. Los límites de tasa varían según el modelo, el proyecto y el nivel de uso; verifica los límites activos del proyecto en Google AI Studio (consulta Solución de Problemas).
PERPLEXITY_API_KEYopt-insin establecerHabilita el motor Perplexity Sonar. Solo de pago.
XAI_API_KEYopt-insin establecerHabilita el motor Grok (grok-4.6) con fundamentación obligatoria de Web Search.
SERPAPI_API_KEYopt-insin establecerHabilita Google AI Overviews mediante SerpAPI. También proporciona la credencial para Google AI Mode cuando la bandera explícita a continuación está habilitada.
SERPAPI_AI_MODE_ENABLEDnofalseEstablece a true para añadir Google AI Mode como un motor de visibilidad separado. Permanece desactivado por defecto para evitar llamadas/costos adicionales inesperados de SerpAPI.
SEED_SECRETsin establecerSecreto compartido que protege cada ruta /admin/*. Elige una cadena de alta entropía.
CONNECT_SECRETrecomendadasin establecerCuando se establece, el flujo de conexión OAuth solicita este secreto en el navegador antes de emitir un token. Sin él, cualquiera que conozca la URL de tu worker puede conectar un cliente MCP. Consulta SECURITY.md.
TURNSTILE_SITE_KEYnosin establecerReservada para forks que añaden un formulario público /check. No se usa en la compilación OSS.
TURNSTILE_SECRET_KEYnosin establecerIgual — reservada para forks.

Las credenciales del proveedor se establecen mediante wrangler secret put VAR en producción o .dev.vars localmente. SERPAPI_AI_MODE_ENABLED es una bandera de runtime no secreta y puede almacenarse bajo Wrangler vars o establecerse en el entorno de proceso local.


Arquitectura

flowchart LR
    C["MCP client<br/>(Claude.ai / Claude Code / Cursor / ...)"] -- "MCP over HTTP + OAuth" --> W["Cloudflare Worker<br/>digestseo-mcp"]
    CRON["Cron Trigger<br/>every 6h"] --> W
    W --> MCP["Stateless MCP handler<br/>(SDK v2, 6 hosted tools)"]
    W -- "one self-fetch per engine<br/>via SELF service binding" --> RE["/admin/run-engine<br/>(own invocation per engine)"]
    RE --> E1["OpenAI"]
    RE --> E2["Anthropic"]
    RE --> E3["Gemini"]
    RE --> E4["Perplexity"]
    RE --> E5["xAI<br/>(Grok)"]
    RE --> E6["SerpAPI<br/>(AI Overviews / AI Mode)"]
    RE --> DB[("D1<br/>brands / prompts / runs /<br/>responses / cache")]
    MCP --> DB

El enlace heredado de Durable Object GeoMcpAgent / MCP_OBJECT se conserva temporalmente para compatibilidad de migración, pero el tráfico actual de /mcp lo sirve el manejador stateless del SDK v2 mostrado arriba.

Cada motor se ejecuta en su propia invocación de Worker con su propio presupuesto de 50 sub-solicitudes del plan gratuito; los resultados se vacían en un solo D1.batch() por motor. Todo el sistema cabe en el nivel gratuito de Cloudflare para una sola marca con una cadencia diaria.


Seguridad

  • /admin/* está protegido por SEED_SECRET (comparado en tiempo constante).
  • /mcp requiere OAuth; establece CONNECT_SECRET para que solo las personas con el secreto puedan completar el flujo de conexión — muy recomendado siempre que la URL de tu worker se comparta en cualquier lugar, ya que los clientes conectados pueden llamar a visibility.refresh y gastar tus créditos de API del motor.
  • Todas las claves de motor viven en el almacén de secretos cifrado de Cloudflare; todos los datos permanecen en tu propia base de datos D1.

Detalles completos y reporte de vulnerabilidades: SECURITY.md.


Prompts de Ejemplo

El informe de ejemplo anterior fue generado por el primer prompt a continuación.

Una vez que el conector esté activo en Claude.ai (o cualquier cliente MCP), prueba:

HerramientaPrompt de ejemplo
visibility.check"¿Qué tan visible es brand_id acme en IA ahora mismo?"
visibility.history"Muéstrame la tendencia de visibilidad para acme en los últimos 60 días, diariamente."
visibility.compare"Compara acme contra asana.com y monday.com en los últimos 14 días."
visibility.citations"Muéstrame citas reales de Perplexity para acme de la última semana."
visibility.content_gaps"¿Qué contenido debería publicar acme para cerrar su brecha de visibilidad? Dame las 5 principales."
visibility.refresh"Actualiza acme en todos los motores disponibles ahora mismo."
visibility.refresh"Actualiza acme pero solo para Gemini y Claude."

Versión Alojada

Si prefieres no administrar tu propia cuenta de Cloudflare, gestionar claves de API o pagar facturas individuales de motores, la versión alojada de DigestSEO ejecuta el mismo servidor MCP en infraestructura administrada con soporte multi-marca, actualización programada, interfaz web y facturación consolidada. Lista de espera abierta — únete en digestseo.com.


Solución de Problemas

  • El Worker se despliega pero las herramientas devuelven datos vacíos — falta al menos una clave de API de motor. Revisa wrangler secret list y agrega las claves que planeas usar. Los motores sin claves se omiten silenciosamente, lo que puede dejar visibility.check sin datos.
  • Error no engines available en los registros — no hay claves de API de motor configuradas en absoluto. Configura al menos una de OPENAI_API_KEY, ANTHROPIC_API_KEY, GEMINI_API_KEY, PERPLEXITY_API_KEY, XAI_API_KEY, SERPAPI_API_KEY.
  • La migración de D1 falla — asegúrate de haber ejecutado npx wrangler d1 migrations apply mcp-geo-db --remote (y también --local para wrangler dev). Para correcciones puntuales, npx wrangler d1 execute mcp-geo-db --remote --file=migrations/0001_initial.sql.
  • El conector MCP personalizado en Claude.ai no se conecta — la URL debe terminar en /mcp. El handshake OAuth se completa automáticamente en la compilación OSS (usuario dev único); si configuras CONNECT_SECRET, el paso del navegador muestra un formulario de un campo: ingresa el secreto que configuraste durante el despliegue. Si se repite, elimina el conector y vuelve a agregarlo. Verifica que el Worker sea accesible públicamente (curl https://YOUR-WORKER-NAME.YOUR-SUBDOMAIN.workers.dev/healthz debería devolver ok).
  • El cron no se ejecuta — revisa el panel de Cloudflare en Workers & Pages → digestseo-mcp → Settings → Triggers. La sección "Cron Triggers" debería listar 0 */6 * * *. Si falta, ejecuta npx wrangler deploy nuevamente: el trigger se registra en el despliegue. El handler también solo despacha motores para marcas cuyo cadencia de refresh_frequency haya transcurrido, por lo que una marca recién sembrada podría no ejecutarse en el siguiente límite de 6h.
  • 401 unauthorized desde /admin/* — falta el encabezado X-Seed-Secret o no coincide con el SEED_SECRET desplegado. Vuelve a ejecutar npx wrangler secret put SEED_SECRET y actualiza tu .env.test.
  • El Worker devuelve 404 en auto-fetch / código de error 1042 — falta el binding services en wrangler.jsonc o el nombre de service no coincide con el campo name del worker. /admin/run-live se auto-consulta /admin/run-engine vía env.SELF (un service binding de Cloudflare) precisamente porque un fetch a URL pública hacia tu propio hostname de workers.dev está bloqueado por la protección "Worker called itself" de Cloudflare. Confirma que el wrangler.jsonc que desplegaste contiene "services": [{ "binding": "SELF", "service": "<your-worker-name>" }] con el mismo nombre que configuraste en el campo "name" de nivel superior. Después de corregirlo, npx wrangler deploy y vuelve a ejecutar.
  • Límite de tasa de Gemini (HTTP 429) en prompts — los límites de la API de Gemini varían según el modelo, el proyecto y el nivel de uso, y Google señala que la capacidad real puede variar. Revisa los límites actuales del proyecto en Google AI Studio y la documentación de límites de tasa de Google. Cuando una solicitud es limitada por tasa, mcp-geo registra esa fila de motor como fallida y la excluye de la puntuación exitosa. Google recomienda esperar y reintentar después de un período corto o reducir la tasa de solicitudes; si el límite es consistentemente demasiado bajo para tu cadencia de escaneo, considera un nivel de pago adecuado en lugar de asumir una cuota universal de RPM/RPD de nivel gratuito.
  • FOREIGN KEY constraint failed en wrangler tail durante /admin/run-engine — el handler defensivamente INSERT OR IGNORE la fila de runs antes de persistir las respuestas de prompts. Esto es una protección de idempotencia/FK para el trabajo de motores despachado de forma independiente, por lo que no deberías verlo en la compilación 0.2.0+; si lo ves, confirma que has desplegado el último src/index.ts (grep -n "INSERT OR IGNORE INTO runs" src/index.ts debería coincidir).

Contribuciones

Se aceptan issues y PRs. Consulta CONTRIBUTING.md para la versión corta.


Política de privacidad

Política completa para el paquete local y la extensión de Claude Desktop: https://geo-mcp.digestseo.com/privacy

Cuando ejecutas digestseo-mcp localmente (npx, la extensión de escritorio o Docker), todos tus datos — marcas, prompts, runs, respuestas y la caché de respuestas — permanecen en tu máquina en una base de datos SQLite local en ~/.digestseo/digestseo.sqlite (anulable con DIGESTSEO_DB_PATH). Los prompts de escaneo se envían solo a los proveedores de IA cuyas claves de API configures (OpenAI, Anthropic, Google, Perplexity, xAI y/o SerpAPI); su manejo de ese tráfico se rige por sus respectivas políticas de privacidad. Nada se envía nunca al autor de este proyecto: sin telemetría, sin análisis, sin cuenta.

Uso y almacenamiento de datos: La configuración local de marcas, prompts, runs de escaneo, respuestas y respuestas en caché se usan solo para proporcionar las funciones del servidor MCP que invocas. Permanecen en la base de datos SQLite local descrita anteriormente; este proyecto no opera un servicio de cuentas ni recopila telemetría.

Procesamiento de terceros: El tráfico de prompts y escaneos se envía solo a los proveedores de IA que configuras explícitamente. Esos proveedores procesan y retienen ese tráfico bajo sus propias políticas de privacidad; el autor del proyecto no recibe copias del mismo.

Retención y eliminación: Los datos locales permanecen en tu máquina hasta que elimines la base de datos SQLite (o el DIGESTSEO_DB_PATH personalizado que configuraste). Eliminar esa base de datos local elimina el historial y la caché locales almacenados por mcp-geo. La retención del lado del proveedor está controlada por cada proveedor configurado.

Contacto: Las preguntas de privacidad sobre mcp-geo pueden enviarse a info@tomiseregi.si.


Licencia

MIT.

Construido y mantenido por Tomi Šeregi.


Registro de cambios

Consulta CHANGELOG.md para el historial completo de versiones.

[0.3.2] — 27 de julio de 2026

  • Publicado @digestseo/mcp-geo con metadatos sincronizados de Worker, MCP Registry y MCPB.
  • Espacios de nombres de herramientas visibility.* alojados con esquemas de entrada/salida tipados; los nombres stdio locales permanecen planos.
  • Configuración D1 dedicada de mcp-geo-db y metadatos de plugins para Cursor/Claude Code.
  • Corregidos los pines de dependencias de producción.

[0.3.0] — julio de 2026

  • CLI stdio local en npm (npx -y @digestseo/mcp-geo) con almacenamiento SQLite y ejecuciones de motores en línea.
  • Herramientas locales de gestión de marcas: track_brand, list_brands, generate_prompts.
  • Núcleo agnóstico de runtime compartido por Worker y CLI; adaptadores Db de D1 + better-sqlite3.
  • MCP Registry server.json, extensión de escritorio MCPB, Dockerfile, llms-install.md.

[0.2.1] — junio de 2026

  • Puerta opcional de CONNECT_SECRET en el flujo de conexión OAuth.
  • Coincidencia de marcas/competidores por límite de palabra; verificaciones de citas vinculadas por dominio exacto o subdominio.
  • aliases y exclude_terms por marca (migración 0005) para marcas homógrafas como Monday/Notion.
  • visibility.history incluye runs parciales y descarta runs completamente fallidos.
  • Flujo de trabajo de CI (typecheck + pruebas unitarias) y un conjunto de pruebas unitarias de funciones puras.
  • La documentación recomienda OpenAI + Anthropic como par de motores inicial.
  • Comparación de secretos en tiempo constante.

[0.2.0] — mayo de 2026

  • Fan-out HTTP por motor vía service binding env.SELF (una invocación de worker por motor, evita la protección de auto-llamada 1042 de Cloudflare).
  • Columnas status + error_message en prompt_responses — las llamadas de motor fallidas ahora son filas explícitas, sin más cadenas ERROR: en raw_response.
  • INSERT OR IGNORE en la fila de runs dentro de /admin/run-engine (maneja el retraso de replicación entre regiones de D1 sin descartar prompt_responses por violaciones de FK).
  • Lote D1 masivo en cada runLive de motor (~26 subrequests/invocación en lugar de ~89; los runs completos de 20 prompts ahora caben bajo el límite del plan gratuito).
  • getLatestCompletedRun anclado en EXISTS(ok rows); los runs parcialmente terminados aún muestran sus datos.
  • Nueva ruta de administración POST /admin/cleanup-failed-runs.

[0.1.1] — mayo de 2026

  • Eliminado el script de configuración bash poco confiable. La instalación manual vía SETUP.md es ahora la ruta canónica.

[0.1.0] — mayo de 2026

  • Lanzamiento público inicial.
  • Soporte de 5 motores: ChatGPT, Claude, Perplexity, Gemini, Google AI Overviews.
  • 6 herramientas MCP.
  • Motores opt-in según las claves de API que proporciones.
  • Cloudflare Cron Trigger para auto-refresco.