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.
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
| Herramienta | Propósito |
|---|---|
citations_provenance | Primera herramienta recomendada. Distribuye una consulta entre motores; matriz de consenso entre motores por URL. Devuelve interpretation_note por motor. |
citations_check | URLs citadas por Perplexity / Claude / ChatGPT / Gemini / Google AI Mode para una consulta; o rango web mediante bing_serp / brave_serp |
citations_evidence | Extrae el fragmento citado de raw_answer para cada cita (el porqué, no solo el qué) |
citations_predict | Probabilidad de citación a partir de señales públicas: sin LLM ejecutado |
citations_trend | Informe de series temporales de tasa de citación + deltas ganados/perdidos por consulta |
citations_freshness | Puntuación de actualidad (semivida=365d) para las páginas que cita un motor |
domain_* — nivel de dominio: ¿soy citado, para qué?
| Herramienta | Propósito |
|---|---|
domain_am_i_cited | Verificació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_for | Consultas por las que el dominio ha sido citado, desde caché local |
domain_cited_for_diff | Diferencia 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
| Herramienta | Propósito |
|---|---|
signals_ai_overview | Presencia de Google AI Overview + fuentes citadas |
signals_wikipedia | Lista artículos de Wikipedia que referencian un dominio (cero claves) |
signals_gsc_gap | Une el rendimiento de Google Search Console con el estado de citación de IA |
signals_answer_box | Clasifica 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)
| Herramienta | Propósito |
|---|---|
panel_track | Guardar / cargar / listar paneles de consultas con nombre (listas de seguimiento editorial) |
panel_run | Ejecutar un panel a través de domain_am_i_cited y guardar instantánea en disco |
report_* — artefactos de informes listos para usar
| Herramienta | Propósito |
|---|---|
report_visibility | Informe 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
| Herramienta | Propósito |
|---|---|
competitors_canonical_set | Dominios más citados por consulta, agregados entre motores |
competitors_compete | Instantánea competitiva de extremo a extremo: tu URL frente a los competidores más citados |
competitors_compare | citations_predict lado a lado entre 2-10 URLs |
audit_* — verificaciones corregibles en página / en sitio
| Herramienta | Propósito |
|---|---|
audit_schema | Validación profunda de schema.org: campos requeridos por @type, JSON-LD malformado |
audit_structured_data | Diagnósticos de schema.org orientados a reparación + parches sugeridos |
audit_crawler_access | Verifica que GPTBot / ClaudeBot / PerplexityBot / CCBot / Google-Extended, etc. puedan obtener una URL |
audit_sitemap | citations_predict masivo en cada URL de un sitemap, de peor a mejor |
audit_sitemap_map | Referencia cruzada de URLs del sitemap con citas en caché (inverso de audit_sitemap) |
audit_llms_txt | Genera 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)- encadenacitations_predict+audit_schemaaudit_competitor_snapshot(query, your_url?)- encadenacompetitors_canonical_set+competitors_competeaudit_crawler_checkup(url)- ejecutaaudit_crawler_accessy escribe una lista de remediaciónaudit_gap_analysis(domain, days?)- impulsasignals_gsc_gapy sugiere próximos pasosaudit_sitemap_coverage(sitemap_url)- ejecutaaudit_sitemap_mapy 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 recientecitation://panels- paneles guardados + conteos de instantáneas por panelcitation://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.
| Superficie | Motores | Qué significa |
|---|---|---|
consumer_scrape | perplexity, google_ai_mode | Proxy 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_proxy | claude, openai, gemini | Llamada 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_rank | bing_serp, brave_serp | Rango de búsqueda web tradicional (no citación LLM). Mide si una URL aparece en resultados SERP, no si un LLM la cita. |
static_signal | citations_predict, signals_wikipedia | Señ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_predictse 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
| Var | Propósito | ¿Nivel gratuito? |
|---|---|---|
PERPLEXITY_API_KEY | citations_check (perplexity — consumer_scrape) | Sí |
SERPAPI_KEY | signals_ai_overview + citations_check (google_ai_mode — consumer_scrape) | 100/mes gratis |
ANTHROPIC_API_KEY | citations_check (claude — api_proxy) | Solo pago |
OPENAI_API_KEY | citations_check (openai — api_proxy) | Solo pago |
GEMINI_API_KEY | citations_check (gemini — api_proxy) | Sí |
BING_API_KEY | citations_check (bing_serp — web_rank) | Sí |
BRAVE_API_KEY | citations_check (brave_serp — web_rank) | Sí (2000/mes) |
CITATION_CACHE_TTL_DAYS | TTL de caché para entradas citations_check (predeterminado 7) | n/a |
CITATION_AI_OVERVIEW_TTL_DAYS | TTL de caché para entradas signals_ai_overview (predeterminado 1) | n/a |
CITATION_CONFIG_DIR | Anula 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