Servidor MCP de SEO y GEO
Servidor MCP en TypeScript con 17 herramientas de solo lectura para auditar SEO on-page y GEO: si ChatGPT, Claude o Perplexity pueden rastrear y citar tu web.
- Rol
- Diseño y desarrollo
- Año
- 2026
- Publicado
- 19 de julio de 2026
seo-geo-mcp-server es un servidor MCP (Model Context Protocol) en TypeScript que dota a un agente de IA —como Claude— de 17 herramientas de solo lectura para auditar una página en dos dimensiones: el SEO clásico (meta tags, encabezados, datos estructurados, imágenes, enlaces, robots.txt, sitemaps, hreflang, redirecciones) y el GEO (Generative Engine Optimization): si ChatGPT, Claude, Perplexity o Gemini pueden realmente rastrear, leer y citar esa página. Sin API keys: todo se resuelve con HTTP, DNS y robots.txt públicos.
Es el hermano del servidor MCP de seguridad de dominio y comparte su arquitectura: un core puro sin acoplamiento a MCP, envoltorios finos como herramientas, y guards anti-SSRF revalidados en cada salto de redirección.
Por qué GEO y no solo SEO
La parte de GEO existe porque hay dos mecanismos que deciden si una IA puede citarte y que casi nadie revisa:
- Bloquear el entrenamiento no es lo mismo que bloquear la citación. Bloquear
GPTBotimpide el entrenamiento; bloquearOAI-SearchBotte borra de los resultados de ChatGPT. Mucha gente que quería lo primero ha hecho lo segundo sin saberlo. El servidor separa ambos grupos y avisa. - La mayoría de crawlers de IA no ejecutan JavaScript. Googlebot sí;
GPTBot,ClaudeBot,PerplexityBotyCCBoten general no. Una página renderizada en cliente puede posicionar bien en Google y ser invisible para todos los asistentes de IA. El servidor detecta ese caso.
Características
- 17 tools con salida tipada: cada herramienta declara
inputSchemayoutputSchema(Zod) y devuelvestructuredContentvalidado por el SDK, además de markdown legible. - Dos herramientas estrella:
seo_auditaudita siete secciones ponderadas en una sola descarga de la página y devuelve nota A–F con correcciones priorizadas;geo_auditpuntúa la preparación para motores de respuesta de IA en siete señales. - Registro de crawlers verificado contra documentación oficial de OpenAI, Anthropic, Google, Perplexity, Apple, Meta, Amazon, Mistral y otros. Cada token registra su procedencia (documentación de primera mano o agregador comunitario) y si el fabricante respeta de verdad robots.txt.
- Matcher de robots.txt conforme a RFC 9309: tokens sin distinguir mayúsculas, fusión de grupos, patrón más largo con desempate a favor de
Allow, comodines*y anclaje$, más la excepción documentada de Apple (Applebot hereda las reglas de Googlebot). - Honestidad por diseño:
llms.txtse detecta y valida, pero no puntúa en la auditoría, porque es una propuesta comunitaria sin adopción y Google ha declarado que no la usa. Los bloqueos a bots que documentan ignorar robots.txt se reportan como inaplicables, no como bloqueos limpios. - Dos transportes:
stdiopara clientes locales (Claude Desktop / Claude Code) y Streamable HTTP sin estado para auto-hospedaje detrás de un reverse proxy (Coolify/Traefik), con Dockerfile incluido. - Probado: 32 tests unitarios deterministas sobre el matcher de robots, la detección de SPA y el parseo de JSON-LD, más un smoke test que llama a las 17 herramientas por el protocolo real y valida cada salida contra su esquema.
Stack técnico
- TypeScript estricto (
noUncheckedIndexedAccess,outputSchemaen las 17 tools) - @modelcontextprotocol/sdk con
registerTooleinstructionsa nivel servidor - Zod para validación de entrada y salida
- Cheerio para el parseo del DOM
- Express para el transporte HTTP sin estado
- Node.js (fetch con guard SSRF por salto, tope de bytes, resolución DNS pública)
- Docker para el despliegue self-hosted
Repositorio
Objetivo
Cubrir un hueco real: las herramientas de SEO on-page son interfaces web que un agente no puede operar, y las de GEO suelen ser cuadros de mando de posicionamiento de pago. Este servidor pone ambas cosas al alcance de un agente, sin llaves, y con una postura explícita sobre qué señales están respaldadas por documentación de los fabricantes y cuáles no.