Citation Intelligence MCP

Servidor MCP gratuito: vea qué URLs citan ChatGPT, Claude, Perplexity, Gemini y Bing para cualquier consulta.

Documentación

Citation Intelligence MCP

Un servidor MCP gratuito y autoalojado que le dice a tu agente qué citan los LLM: en Perplexity, Google AI Overviews, ChatGPT, Claude, Gemini y Bing.

npm version license node CI

Qué es esto

Un servidor MCP para agentes y desarrolladores que necesitan saber qué URLs citan los motores de búsqueda con IA para cualquier consulta. Instálalo una vez y consulta desde cualquier cliente compatible con MCP (Claude Desktop, Cursor, Claude Code, Continue, Cline, n8n, LangGraph). Autoalojado, sin cuenta, sin backend centralizado. Trae tus propias claves API; nada se almacena en un servidor remoto.

Para quién es esto

Instálalo si:

  • Estás construyendo un agente que hace investigación y quieres que cite fuentes que los LLM ya confían
  • Eres un desarrollador independiente o hacker que verifica si tu SaaS aparece en la búsqueda con IA
  • Eres un creador de contenido que confirma que tus artículos son citados por ChatGPT, Claude o Perplexity
  • Eres un profesional de SEO o GEO que quiere datos de citación programáticos sin un panel de $295-$499/mes
  • Gestionas un flujo editorial y quieres selección de temas impulsada por déficit de citas
  • Comparas la visibilidad de competidores en motores de IA para cualquier nicho

NO lo instales si quieres:

  • Un panel de marketing pulido con gráficos y asientos de equipo: prueba Profound, AthenaHQ u Otterly.AI
  • Un servicio alojado con SLA: esto es autoalojado por diseño
  • Seguimiento de citas para artículos académicos: prueba citecheck
  • Más de 350M de prompts pre-modelados: eso es Ahrefs Brand Radar

Por qué existe esto

El mercado de seguimiento de citas con IA está dominado por paneles financiados con capital de riesgo que empiezan en $295/mes. Ninguno se envía con prioridad MCP. Si eres un agente o desarrollador que quiere datos de citas canalizados directamente a tu flujo de trabajo, no a un inicio de sesión SaaS, no existe una herramienta para ti. Esta es esa herramienta.


Herramientas

Las herramientas se agrupan en siete espacios de nombres: citations_*, domain_*, signals_*, panel_*, report_*, competitors_*, audit_*. El prefijo es la categoría de la pregunta; el sufijo es la acción. Los nombres de cable usan guiones bajos (no puntos) para que los clientes MCP basados en la API de Anthropic (Claude Desktop, Claude Code) puedan reenviar la lista de herramientas sin HTTP 400.

Empieza con citations_provenance o domain_am_i_cited. Los resultados de un solo motor (citations_check con un motor fijado) son direccionales; el consenso entre múltiples motores es la señal honesta. Una URL citada por 4 de 5 motores es un hallazgo muy diferente al de una citada por 1.

citations_* — nivel de consulta: quién cita qué, con qué evidencia

HerramientaPropósito
citations_provenancePrimera herramienta recomendada. Distribuye una consulta entre motores; matriz de consenso entre motores por URL. Devuelve interpretation_note por motor.
citations_checkURLs citadas por Perplexity / Claude / ChatGPT / Gemini / Google AI Mode para una consulta; o rango web mediante bing_serp / brave_serp
citations_evidenceExtrae el fragmento citado de raw_answer para cada cita (el porqué, no solo el qué)
citations_predictProbabilidad de citación a partir de señales públicas: sin LLM ejecutado
citations_trendInforme de series temporales de tasa de citación + deltas ganados/perdidos por consulta
citations_freshnessPuntuación de actualidad (semivida=365d) para las páginas que cita un motor

domain_* — nivel de dominio: ¿soy citado, para qué?

HerramientaPropósito
domain_am_i_citedVerificación de citación de dominio. Con engine=auto (predeterminado): distribuye entre todos los motores LLM disponibles, devuelve desglose por motor + consenso entre motores. Fija engine= para reducir costos.
domain_cited_forConsultas por las que el dominio ha sido citado, desde caché local
domain_cited_for_diffDiferencia de domain_cited_for entre dos ventanas de tiempo para un dominio

signals_* — señales externas: AI Overview, Wikipedia, GSC, posición en answer box

HerramientaPropósito
signals_ai_overviewPresencia de Google AI Overview + fuentes citadas
signals_wikipediaLista artículos de Wikipedia que referencian un dominio (cero claves)
signals_gsc_gapUne el rendimiento de Google Search Console con el estado de citación de IA
signals_answer_boxClasifica la primera mención de cada cita en raw_answer en tercios temprano/medio/tardío

panel_* — paneles de consultas guardadas (listas de seguimiento editorial)

HerramientaPropósito
panel_trackGuardar / cargar / listar paneles de consultas con nombre (listas de seguimiento editorial)
panel_runEjecutar un panel a través de domain_am_i_cited y guardar instantánea en disco

report_* — artefactos de informes listos para usar

HerramientaPropósito
report_visibilityInforme de visibilidad de IA en una sola llamada sobre un conjunto de consultas (o panel): tasa de citación (frecuencia de mención), cuota de voz frente a competidores, rango promedio y sentimiento de marca. Devuelve datos estructurados + un artefacto Markdown para una página pública.

competitors_* — panorama competitivo por consulta

HerramientaPropósito
competitors_canonical_setDominios más citados por consulta, agregados entre motores
competitors_competeInstantánea competitiva de extremo a extremo: tu URL frente a los competidores más citados
competitors_comparecitations_predict lado a lado entre 2-10 URLs

audit_* — verificaciones corregibles en página / en sitio

HerramientaPropósito
audit_schemaValidación profunda de schema.org: campos requeridos por @type, JSON-LD malformado
audit_structured_dataDiagnósticos de schema.org orientados a reparación + parches sugeridos
audit_crawler_accessVerifica que GPTBot / ClaudeBot / PerplexityBot / CCBot / Google-Extended, etc. puedan obtener una URL
audit_sitemapcitations_predict masivo en cada URL de un sitemap, de peor a mejor
audit_sitemap_mapReferencia cruzada de URLs del sitemap con citas en caché (inverso de audit_sitemap)
audit_llms_txtGenera un llms.txt (https://llmstxt.org) a partir de un sitemap

Prompts

Plantillas de prompts del lado del servidor que el cliente puede ofrecer a los usuarios finales (llámalas mediante la lista de prompts MCP):

  • audit_citation_readiness(url) - encadena citations_predict + audit_schema
  • audit_competitor_snapshot(query, your_url?) - encadena competitors_canonical_set + competitors_compete
  • audit_crawler_checkup(url) - ejecuta audit_crawler_access y escribe una lista de remediación
  • audit_gap_analysis(domain, days?) - impulsa signals_gsc_gap y sugiere próximos pasos
  • audit_sitemap_coverage(sitemap_url) - ejecuta audit_sitemap_map y recomienda prioridades

Recursos

Vistas de caché que el cliente puede leer o suscribirse (sin necesidad de llamada de herramienta):

  • citation://cache/summary - conteos de entradas por tipo/motor, consultas/URLs únicas, más antiguo/más reciente
  • citation://panels - paneles guardados + conteos de instantáneas por panel
  • citation://docs/llms-txt - introducción a llms.txt (markdown)
  • citation://docs/ai-crawlers - hoja de referencia de rastreadores de IA (markdown)
  • citation://domain/{domain}/cited-for - plantilla dinámica: citas para {domain}

Qué mide esto realmente

Cada respuesta incluye un campo surface que te dice exactamente cómo se recopilaron los datos. Comprender esto es importante antes de sacar conclusiones.

SuperficieMotoresQué significa
consumer_scrapeperplexity, google_ai_modeProxy a través de un producto real de búsqueda con IA orientado al consumidor. Lo más cercano a lo que ven tus usuarios.
api_proxyclaude, openai, geminiLlamada API a un LLM con búsqueda habilitada. Puede diferir del comportamiento del producto de consumo: versiones de modelo diferentes, sin lógica de clasificación a nivel de UI, sin personalización. Úsalo como proxy direccional, no como verdad absoluta.
web_rankbing_serp, brave_serpRango de búsqueda web tradicional (no citación LLM). Mide si una URL aparece en resultados SERP, no si un LLM la cita.
static_signalcitations_predict, signals_wikipediaSeñal fuera de línea calculada a partir de datos públicos. Sin consulta LLM en vivo.

Notas por motor

perplexity (consumer_scrape) — Sonar Pro mediante la API de Perplexity con un prompt de sistema equivalente al de consumo. Razonablemente cercano a Perplexity.ai. Las citas provienen de search_results en la respuesta; el respaldo citations contiene entradas solo de URL sin título.

claude (api_proxy) — Claude Sonnet mediante la API de Mensajes de Anthropic con la herramienta web_search habilitada. El producto de consumo Claude.ai usa lógica de enrutamiento y clasificación diferente. El comportamiento de citación puede diferir, especialmente para consultas recientes o sensibles al tiempo.

openai (api_proxy) — gpt-4o + la herramienta web_search_preview mediante la API de Respuestas de OpenAI. Reemplaza el alias gpt-4o-search-preview que OpenAI retiró; la base gpt-4o más la herramienta es la ruta compatible.

gemini (api_proxy) — Gemini 2.5 Pro mediante la API de Lenguaje Generativo con fundamentación google_search. Gemini de consumo usa el mismo índice de fundamentación pero diferente re-clasificación. Los resultados son direccionales.

google_ai_mode (consumer_scrape) — Resultados de Google AI Mode mediante SerpAPI. Lo más cercano a lo que ven los usuarios en Google Search. Requiere SERPAPI_KEY.

bing_serp / brave_serp (web_rank) — Rango SERP tradicional. NO mide citaciones LLM. Usa citations_check con estos motores para comparar el rango web orgánico contra el rango de citación LLM. domain_am_i_cited rechaza estos motores: solo mide comportamiento LLM.

La naturaleza de proxy de los motores api_proxy es una característica, no un error: te permite ejecutar verificaciones de citación sin consumir cuota costosa de productos de consumo. Solo no reportes números de proxy API como "ChatGPT te cita" sin la advertencia.

Cada respuesta de herramienta incluye un campo interpretation_note que resume la fidelidad en una oración. Calificaciones completas de fidelidad por motor: docs/surface-fidelity.md.


Inicio rápido

npx -y @automatelab/citation-intelligence

Requiere Node 20 o posterior.

Claude Desktop

Agrega a %APPDATA%\Claude\claude_desktop_config.json (Windows) o ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):

{
  "mcpServers": {
    "citation-intelligence": {
      "command": "npx",
      "args": ["-y", "@automatelab/citation-intelligence"],
      "env": {
        "PERPLEXITY_API_KEY": "pplx-...",
        "SERPAPI_KEY": "...",
        "ANTHROPIC_API_KEY": "sk-ant-...",
        "OPENAI_API_KEY": "sk-...",
        "GEMINI_API_KEY": "..."
      }
    }
  }
}

Establece solo las claves que tengas. Cualquier cliente MCP que admita transporte stdio funciona: mismo patrón command / args.

Cómo se mantiene gratis

  • Sin backend central. El servidor se ejecuta en tu máquina. Nada se sube.
  • Primero el nivel gratuito. SerpAPI da 100 consultas gratuitas de Google AI Overview al mes. Bing Web Search tiene un nivel gratuito. Perplexity ofrece acceso gratuito a Sonar al registrarse.
  • Trae tus propias claves pagadas si quieres los motores premium (Claude, ChatGPT, Gemini). Las claves pasan directamente al proveedor y nunca tocan a terceros.
  • Caché local en ~/.config/citation-intelligence/cache.json. Las consultas repetidas usan caché, no API. TTL predeterminado: 7 días.
  • citations_predict se ejecuta con cero claves: puntúa la probabilidad de citación a partir de señales públicas (Wikipedia, schema.org, llms.txt, GitHub) sin ejecutar ningún LLM.

Privacidad

  • Todas las llamadas API van desde tu máquina directamente al proveedor (Anthropic, OpenAI, Google, Perplexity, Bing, SerpAPI).
  • Sin proxy. Sin analíticas. Sin telemetría por defecto.
  • Las claves API se leen de variables de entorno en el proceso MCP: nunca se registran, nunca se persisten.
  • El archivo de caché está en ~/.config/citation-intelligence/cache.json. Bórralo en cualquier momento.

Variables de entorno

VarPropósito¿Nivel gratuito?
PERPLEXITY_API_KEYcitations_check (perplexity — consumer_scrape)Sí
SERPAPI_KEYsignals_ai_overview + citations_check (google_ai_mode — consumer_scrape)100/mes gratis
ANTHROPIC_API_KEYcitations_check (claude — api_proxy)Solo pago
OPENAI_API_KEYcitations_check (openai — api_proxy)Solo pago
GEMINI_API_KEYcitations_check (gemini — api_proxy)Sí
BING_API_KEYcitations_check (bing_serp — web_rank)Sí
BRAVE_API_KEYcitations_check (brave_serp — web_rank)Sí (2000/mes)
CITATION_CACHE_TTL_DAYSTTL de caché para entradas citations_check (predeterminado 7)n/a
CITATION_AI_OVERVIEW_TTL_DAYSTTL de caché para entradas signals_ai_overview (predeterminado 1)n/a
CITATION_CONFIG_DIRAnula el directorio de configuración (predeterminado ~/.config/citation-intelligence)n/a

Ejemplo: ¿soy citado?

You: For the queries "best AI citation tracker", "MCP for AI search", "self-hosted GEO tool",
     is automatelab.tech cited?

(agent invokes `domain_am_i_cited`)

Result:
{
  "domain": "automatelab.tech",
  "engine": "perplexity",
  "results": [
    { "query": "best AI citation tracker",   "cited": true,  "rank": 4 },
    { "query": "MCP for AI search",          "cited": true,  "rank": 1 },
    { "query": "self-hosted GEO tool",       "cited": false, "matching_urls": [] }
  ],
  "summary": {
    "queries_total": 3,
    "queries_cited": 2,
    "citation_rate": 0.67,
    "average_rank": 2.5
  }
}

Ejemplo: predecir probabilidad de citación (sin clave requerida)

You: How likely is https://example.com/blog/post to be cited by AI?

(agent invokes `citations_predict`)

Result:
{
  "url": "https://example.com/blog/post",
  "score": 62,
  "grade": "C",
  "signals": {
    "wikipedia_linked": false,
    "github_referenced": false,
    "reddit_referenced": true,
    "llms_txt_present": true,
    "https": true,
    "has_article_schema": true,
    "has_faq_schema": false,
    "has_breadcrumb_schema": true,
    "canonical_clean": true,
    "word_count": 1850,
    "reading_time_minutes": 8,
    "h2_count": 7,
    "h2_question_count": 1,
    "authority_link_count": 2,
    "external_link_count": 6,
    "internal_link_count": 11,
    "last_modified_days_ago": 42,
    "has_open_graph": true
  },
  "fixes": [
    { "signal": "has_faq_schema", "suggestion": "Page already has question-style H2s. Wrap them in FAQPage JSON-LD - high-leverage win.", "estimated_lift": "high" },
    { "signal": "h2_question_count", "suggestion": "Reframe at least 2 H2s as questions users actually ask...", "estimated_lift": "medium" }
  ]
}

La señal de Wikipedia se mide (correlaciona con la cita) pero no se emite ninguna sugerencia de "ve a buscar un artículo de Wikipedia" - el consejo no sería accionable. La puntuación se divide en seis categorías: autoridad de dominio, datos estructurados, profundidad de contenido, grafo de enlaces, frescura, metadatos - por lo que una página delgada y una página profunda en el mismo dominio obtienen puntuaciones significativamente diferentes.


Recetas de flujo de trabajo

Patrones concretos que componen las 26 herramientas en algo útil. Los costos asumen ChatGPT o Perplexity a ~$0.01-0.03 por consulta.

1. Seguimiento semanal de citas

El patrón de mayor retorno de inversión. Elige 20-30 consultas de tu backlog editorial, toma una instantánea semanal, observa la tendencia de la tasa.

# One-time setup
panel_track name="editorial-watchlist" domain="example.com" action="save"
            queries=["best widget tutorial", "how to set up X", ...]

# Weekly cron (5 min, ~$0.20-0.60 per run)
panel_run name="editorial-watchlist"

# Anytime
citations_trend panel="editorial-watchlist"

citations_trend devuelve deltas por consulta: qué consultas cambiaron de cited: false a cited: true desde la primera instantánea. Esa es tu métrica real de impacto editorial.

2. Puerta de pre-publicación

Antes de publicar un post, averigua quién posee el espacio de cita y si vale la pena competir por él.

# 1. Is there an AI Overview to compete for?
signals_ai_overview query="<target query>"

# 2. Who is cited today?
citations_check query="<target query>"

# 3. After publish + 14 days: did the post break in?
domain_am_i_cited domain="example.com" queries=["<target query>"]

Si citations_check devuelve 5 o más incumbentes fuertes en una consulta de bajo volumen, elige un ángulo diferente. Si ai_overview_present: false, la consulta no tiene superficie de IA - reconsidera.

3. Auditoría masiva del sitio

Detecta problemas estructurales en todo el sitio en una sola pasada. Cero gasto de API.

audit_sitemap sitemap_url="https://example.com/sitemap.xml" limit=200

Devuelve worst_first ordenados por puntuación de probabilidad de cita. Superficies de esquema faltante, canónicos conflictivos, /llms.txt faltante, HTTPS roto.

4. Brecha de señales de competidores

No te citan; a ellos sí. ¿Por qué?

# 1. Find the top-cited URLs for your target query
citations_check query="<query>"

# 2. Compare your URL to theirs signal-by-signal
competitors_compare urls=[
  "https://example.com/your-post",
  "https://competitor-1.com/their-post",
  "https://competitor-2.com/their-post"
]

diverging_signals es la lista de dónde estás perdiendo. Generalmente es obvio una vez que lo ves: ellos tienen esquema de FAQ, referencias de GitHub, enlaces de Wikipedia - tú no.

5. Brecha entre ranking de Google y citación de IA

Las victorias editoriales más cercanas son consultas donde ya estás en el top 10 de Google pero eres invisible para la IA. Requiere una cuenta de servicio de GCP con alcance webmasters.readonly.

signals_gsc_gap
  domain="example.com"
  queries=["...editorial watchlist..."]
  start_date="2026-04-01"
  end_date="2026-05-01"

closest_wins devuelve consultas con position <= 10 y ai_cited: false, ordenadas por impresiones descendente. Empuja señales de cita en esas URLs específicas primero.

6. Monitor de menciones de Wikipedia

Wikipedia es la señal de mayor correlación, pero el consejo de "entrar en Wikipedia" es inútil. Así que en su lugar: observa cuando sucede orgánicamente.

signals_wikipedia domain="example.com" limit=50

Devuelve URLs de artículos de Wikipedia que ya enlazan al dominio. Vuelve a ejecutarlo trimestralmente; la diferencia es tu alerta de "obtuvimos una cita de Wikipedia".

Schema.org

{
  "@context": "https://schema.org",
  "@type": "SoftwareApplication",
  "name": "Citation Intelligence MCP",
  "applicationCategory": "DeveloperApplication",
  "operatingSystem": "Cross-platform",
  "description": "Self-hosted MCP server for querying AI citation data from Perplexity, Claude, ChatGPT, Gemini, Bing, and Google AI Overviews.",
  "offers": { "@type": "Offer", "price": "0" },
  "url": "https://github.com/AutomateLab-tech/citation-intelligence"
}

Contribuciones

Informes de errores, ideas de funciones y PRs bienvenidos. Ver CONTRIBUTING.md.

Seguridad

Reporta una vulnerabilidad a través de SECURITY.md.

Licencia

MIT - ver LICENSE.

Construido por automatelab.tech