Documentación · MCP

Servidor MCP

Conecta Huginnova a Claude, ChatGPT, Cursor o cualquier cliente que hable el Model Context Protocol. Tu asistente podrá responder «¿por qué ChatGPT recomienda a mi competidor?» con tus datos reales, y actuar: 32 herramientas, los mismos datos que la app y la API.

Conectar

La URL del servidor es http://localhost:3000/api/mcp (Streamable HTTP). Las aplicaciones que permiten iniciar sesión (ChatGPT, Claude) se conectan sin clave; el resto usa una clave de API.

ChatGPT, Claude (web, escritorio y móvil) y otras aplicaciones con inicio de sesión

Añade un conector personalizado con la URL del servidor. La aplicación abre una página donde inicias sesión, eliges el espacio de trabajo y decides si solo lectura o lectura y cambios. Sin claves que copiar.

  • Claude: Personalizar → Conectores → + Añadir → Añadir conector personalizado, pega la URL y continúa. En Team y Enterprise lo añade un propietario en Configuración de la organización → Conectores y cada persona pulsa Conectar.
  • ChatGPT: Ajustes → Aplicaciones y conectores → Configuración avanzada → activa el modo desarrollador y luego Crear, pega la URL y elige OAuth.
  • Desconéctalo desde la aplicación, o para todos en Integraciones → API y automatizaciones → Aplicaciones conectadas.

Con una clave de API (Claude Code, Cursor, VS Code, Claude Desktop): créala en Integraciones → API y automatizaciones y úsala en tu cliente:

Claude Code

claude mcp add --transport http huginnova http://localhost:3000/api/mcp \
  --header "Authorization: Bearer TU_CLAVE_DE_API"

Cursor · .cursor/mcp.json

{
  "mcpServers": {
    "huginnova": {
      "url": "http://localhost:3000/api/mcp",
      "headers": {
        "Authorization": "Bearer TU_CLAVE_DE_API"
      }
    }
  }
}

VS Code · .vscode/mcp.json

{
  "servers": {
    "huginnova": {
      "type": "http",
      "url": "http://localhost:3000/api/mcp",
      "headers": {
        "Authorization": "Bearer TU_CLAVE_DE_API"
      }
    }
  }
}

Claude Desktop · claude_desktop_config.json

{
  "mcpServers": {
    "huginnova": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "http://localhost:3000/api/mcp",
        "--header",
        "Authorization:${AUTH}"
      ],
      "env": {
        "AUTH": "Bearer TU_CLAVE_DE_API"
      }
    }
  }
}

Autenticación

Dos formas, ambas como Authorization: Bearer …: una conexión OAuth (aplicaciones con inicio de sesión) o una clave de API. Las conexiones y claves de solo lectura pueden usar todas las herramientas de consulta; el acceso completo permite además las de cambios. El servidor MCP está incluido en todos los planes. Límite: 120 peticiones por minuto por conexión o clave.

OAuth, para desarrolladores

OAuth 2.1 tal como lo describe la especificación de autorización de MCP. Una petición sin token recibe un 401 cuya cabecera WWW-Authenticate apunta a los metadatos del recurso protegido; desde ahí, los metadatos del servidor de autorización en /.well-known/oauth-authorization-server. Las aplicaciones se identifican con un Client ID Metadata Document (un client_id https) o se registran con Dynamic Client Registration. Solo código de autorización con PKCE (S256), y el resource debe ser la URL del servidor MCP. Permisos: read y write (la persona puede conceder menos de lo pedido). Los tokens de acceso duran una hora; los de refresco rotan en cada uso, y reutilizar uno antiguo cierra la conexión.

Herramientas

Todas reciben un project_id de list_projects, salvo list_projects y list_alerts. * obligatorio.

Marcas y competidores

  • list_projectsconsulta

    Las marcas del espacio de trabajo, con su mercado y motores.

  • get_visibilityconsulta

    Visibilidad, cuota de voz, citas, posición y tono frente a competidores; cambio, por motor y evolución.

    project_id*daysengine

  • list_competitorsconsulta

    Los competidores que sigues, con sus webs.

    project_id*

  • get_brand_recognitionconsulta

    Si ChatGPT y Gemini te reconocen como marca.

    project_id*

Prompts y respuestas

  • list_promptsconsulta

    Los prompts que sigues, primero donde más pierdes.

    project_id*dayslimitcursor

  • get_prompt_suggestionsconsulta

    Preguntas sugeridas: demanda real, huecos de tu web, competidores, búsquedas de la IA.

    project_id*limitcursor

  • search_answersconsulta

    Respuestas de IA como lista resumida y filtrable.

    project_id*engineprompt_idsinceuntilmentions_brandcompetitor_idlimitcursor

  • get_answerconsulta

    Una respuesta de IA entera, con todas sus marcas y fuentes.

    project_id*answer_id*

Fuentes

  • top_sourcesconsulta

    Los dominios que más cita la IA y de quién son.

    project_id*days

  • top_pagesconsulta

    Las páginas exactas que más cita la IA.

    project_id*dayslimitcursor

  • get_source_gapsconsulta

    Webs que cita la IA y donde no sales.

    project_id*dayslimitcursor

Qué hacer

  • get_action_planconsulta

    Acciones priorizadas con el porqué y el cómo.

    project_id*statuslimitcursor

  • get_geo_opportunitiesconsulta

    Preguntas que ganaría un artículo.

    project_id*limitcursor

  • list_articlesconsulta

    Artículos del GEO Writer y si están publicados.

    project_id*limitcursor

  • get_articleconsulta

    Un artículo entero: análisis, markdown y JSON-LD.

    project_id*article_id*

  • get_outreachconsulta

    Emails preparados para que te mencionen en webs citadas.

    project_id*limitcursor

Percepción, web y tráfico

  • get_reputationconsulta

    Cómo te describe la IA: puntuaciones, fortalezas, debilidades, afirmaciones erróneas.

    project_id*

  • get_site_readinessconsulta

    Si los rastreadores de IA pueden leer tu web y qué arreglar.

    project_id*

  • get_signalsconsulta

    Búsquedas de la IA detrás de tus prompts, shopping, anuncios, resultados locales, Reddit y YouTube.

    project_id*days

  • get_ai_trafficconsulta

    Visitas desde asistentes de IA y actividad de rastreadores.

    project_id*days

  • list_alertsconsulta

    Alertas tras cada actualización.

    project_idunread_onlylimitcursor

Cambios (acceso completo)

  • add_promptscambia

    Seguir preguntas nuevas.

    project_id*prompts*tags

  • add_suggested_promptcambia

    Seguir una pregunta sugerida.

    project_id*suggestion_id*

  • dismiss_suggested_promptcambia

    Dejar de sugerir una pregunta.

    project_id*suggestion_id*

  • set_prompt_activecambia

    Pausar o reanudar un prompt.

    project_id*prompt_id*active*

  • add_competitorcambia

    Seguir a un competidor.

    project_id*name*website

  • remove_competitorelimina

    Dejar de seguir a un competidor.

    project_id*competitor_id*

  • set_action_statuscambia

    Marcar una acción como hecha (u otro estado).

    project_id*action_id*status*

  • mark_alerts_readcambia

    Marcar alertas como leídas.

    alert_idproject_id

Prompts

Preguntas listas que tu cliente muestra en su menú («/» en Claude), en el idioma de tu espacio de trabajo. Los nombres de marca y competidor se autocompletan al escribir; la marca es opcional si solo sigues una.

  • weekly_report

    Informe semanal de visibilidad en IA: dónde estás, qué ha cambiado y por qué, prioridades.

  • what_to_do_this_week

    Qué hacer esta semana: los tres cambios con más probabilidades de meterte en más respuestas.

  • why_competitor_wins

    Por qué gana un competidor: las respuestas y fuentes reales que lo explican, y qué cambiar.

Cómo son los resultados

Páginas. Las listas devuelven items, total y next_cursor. Pasa next_cursor como cursor para la página siguiente; en la última es null. Las listas de más reciente a más antiguo (respuestas, alertas) usan la fecha y el id de cada fila, así que si entran datos nuevos mientras paginas no se repite ni se salta nada.

Resumen y detalle. search_answers devuelve un resumen por respuesta (motor, prompt, fecha, marcas nombradas y posiciones, dominios citados y el fragmento sobre ti). Lee una entera con get_answer; los artículos funcionan igual con list_articles y get_article.

Porcentajes. La visibilidad, las citas y similares son proporciones de respuestas de 0 a 1, con su intervalo de confianza del 95 %. Con pocas respuestas hay incertidumbre: los cambios vienen marcados como significativos o no.

Formato. Cada resultado llega como texto JSON y como structuredContent. Los errores que puedes corregir (un argumento mal, un límite del plan, algo que no existe) vuelven como error de la herramienta con el motivo.

Preguntas de ejemplo

  • “¿Qué visibilidad tiene mi marca en las respuestas de IA este mes, y frente a quién?”
  • “¿Por qué ChatGPT recomienda a mi competidor principal y no a nosotros? Enséñame las respuestas.”
  • “¿En qué webs debería conseguir que me mencionen primero, y qué dicen?”
  • “¿Qué ha cambiado desde la semana pasada y qué debería hacer?”
  • “Añade estas cinco preguntas a los prompts que sigo.”
  • “Marca como hecho el arreglo de los datos estructurados.”

Seguridad

Las conexiones y las claves pertenecen a un espacio de trabajo y solo ven sus datos. El servidor nunca inicia trabajo de pago (actualizaciones, artículos, emails): eso se queda en la app. Puedes desconectar una aplicación o revocar una clave en Integraciones cuando quieras; deja de funcionar al instante, y quien sale del espacio de trabajo pierde las aplicaciones que conectó.