Saltar al contenido
LinkProfit

Servidor MCP para asistentes de IA

Conecta Claude Code, Claude Desktop o Cursor a tu espacio de trabajo por el Model Context Protocol: configuraciones listas, catálogo de herramientas, permisos y planes.

Actualizado el 14 de agosto de 2026

El servidor MCP permite que un asistente de IA trabaje directamente con tus enlaces y tus analíticas: «acorta esta página de aterrizaje en nuestro dominio de marca», «qué cinco enlaces se llevaron más clics la semana pasada», «silencia hasta el lunes la regla de alerta del dominio de campaña». El asistente lo hace a través de la misma API pública que llamarías tú, con exactamente los permisos de la clave con la que lo hayas conectado.

https://api.linkprofit.com/v1/mcp

El transporte es JSON-RPC 2.0 sobre HTTP, siguiendo la revisión 2025-06-18 del Model Context Protocol (también se acepta la revisión 2025-03-26). No hay flujo de eventos iniciado por el servidor ni estado de sesión: GET y DELETE responden 405, no se emite ningún Mcp-Session-Id y cada solicitud lleva en la propia clave todo el contexto que necesita. Sirve cualquier cliente MCP que hable HTTP; los tres de abajo son simplemente aquellos para los que damos configuraciones listas para copiar.

1. Crea una clave para el asistente

En tu panel abre Ajustes → Claves de API y crea una clave de espacio de trabajo (lp_live_…). Concédele solo los alcances que el asistente deba tener de verdad: el catálogo de herramientas de abajo indica lo que necesita cada una. Una clave con links:read + analytics:read te da un asistente de solo lectura, capaz de responder preguntas pero no de cambiar nada.

El valor completo de la clave se muestra una sola vez. Trátala como una contraseña: va a acabar en un archivo de configuración de tu máquina.

2. Añade el servidor a tu cliente

Claude Code

Un solo comando, sin archivos de configuración que editar:

claude mcp add --transport http linkprofit https://api.linkprofit.com/v1/mcp \
  --header "Authorization: Bearer lp_live_…your key…"

Añade --scope user para que el servidor esté disponible en todos los proyectos de tu máquina y no solo en el actual. Comprueba el resultado con claude mcp list y elimínalo más adelante con claude mcp remove linkprofit.

Claude Desktop

Edita el archivo de configuración —en macOS ~/Library/Application Support/Claude/claude_desktop_config.json, en Windows %APPDATA%\Claude\claude_desktop_config.json— y añade el servidor:

{
  "mcpServers": {
    "linkprofit": {
      "type": "http",
      "url": "https://api.linkprofit.com/v1/mcp",
      "headers": {
        "Authorization": "Bearer lp_live_…your key…"
      }
    }
  }
}

Reinicia Claude Desktop. Las herramientas aparecen en el selector de herramientas de una conversación nueva.

Cursor

Crea .cursor/mcp.json en el proyecto (o ~/.cursor/mcp.json para tenerlo en todas partes):

{
  "mcpServers": {
    "linkprofit": {
      "url": "https://api.linkprofit.com/v1/mcp",
      "headers": {
        "Authorization": "Bearer lp_live_…your key…"
      }
    }
  }
}

Cursor recoge el archivo al guardarlo y muestra el servidor en Settings → MCP.

Comprobar la conexión a mano

Los problemas de cualquier cliente se leen mejor al nivel del protocolo. Este es el mismo saludo inicial que hacen los clientes:

curl -s -X POST https://api.linkprofit.com/v1/mcp \
  -H "Authorization: Bearer $LINKPROFIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "initialize",
    "params": {
      "protocolVersion": "2025-06-18",
      "capabilities": {},
      "clientInfo": { "name": "curl", "version": "1.0" }
    }
  }'

Una respuesta sana nombra la versión del protocolo, el servidor y su capacidad de herramientas. Cambia el método por tools/list para ver el catálogo, y por ping para comprobar únicamente que responde.

Herramientas

Diez herramientas, todas limitadas al espacio de trabajo al que pertenece la clave. La columna de alcance es lo que la clave debe llevar; una herramienta para la que la clave no tiene alcance simplemente falla al llamarla, no se oculta del catálogo.

| Herramienta | Qué hace | Alcance necesario | | --- | --- | --- | | list_links | Lista los enlaces cortos del espacio de trabajo, con un filtro opcional por cadena de búsqueda | links:read | | get_link | Lee un enlace por su id | links:read | | create_link | Crea un enlace corto; sin domain_id se usa el dominio por defecto del espacio de trabajo | links:write | | update_link | Cambia el destino o el título de un enlace existente | links:write | | analytics_summary | Clics, visitantes y escaneos de QR de un periodo, opcionalmente de un solo enlace | analytics:read | | analytics_breakdown | Clics y visitantes agrupados por país, ciudad, dispositivo, navegador, sistema operativo, referente o UTM | analytics:read | | analytics_top_links | Los enlaces más clicados del periodo, con sus clics y visitantes | analytics:read | | analytics_timeseries | Clics y visitantes a lo largo del tiempo, por hora, día o semana | analytics:read | | list_alert_rules | Lista las reglas de alerta con sus canales y su ventana de repetición | alerts:read | | update_alert_rule | Activa, desactiva o reajusta la ventana de repetición de una regla de alerta | alerts:write |

Los esquemas de argumentos salen de las mismas definiciones que validan la llamada, así que lo que se le cuenta al asistente sobre una herramienta y lo que el servidor acepta de verdad no pueden separarse. Las herramientas de solo lectura vienen anotadas como tales, y eso es lo que permite a un cliente pedir confirmación antes de las tres herramientas que modifican datos: create_link, update_link y update_alert_rule, más lo que una versión futura añada a esa lista.

Cada llamada a una herramienta que modifica algo se escribe en el registro de auditoría del espacio de trabajo, con la clave que la hizo y la nota de que llegó por MCP, así que los cambios de un asistente son tan rastreables como los de una persona.

Permisos y seguridad

La clave es la frontera de permisos. No existe un «modo asistente» privilegiado: una llamada a una herramienta se ejecuta con los alcances de la clave, dentro del espacio de trabajo de la clave, bajo el mismo límite de solicitudes y el mismo aislamiento entre tenants que una llamada REST. Un id de otro espacio de trabajo responde not_found, exactamente igual que por REST.

Tres costumbres que compensan:

  • Dale al asistente su propia clave, nunca la que usa tu integración de producción. Así, revocarla no cuesta nada.
  • Empieza en solo lectura. links:read + analytics:read cubre las preguntas de informes que la gente le hace de verdad a un asistente. Añade links:write solo cuando quieras que se creen enlaces desde el chat.
  • Rota en cuanto se exponga. Una clave metida en un archivo de configuración viaja con las copias de seguridad, las pantallas compartidas y los tickets de soporte. Revócala en el panel en cuanto se filtre; la siguiente solicitud responde 401.

El límite de solicitudes se comparte con la API REST —por clave, con ventana deslizante de un minuto—, así que un asistente hablador y una tarea en segundo plano con la misma clave compiten por el mismo presupuesto. Otro argumento a favor de una clave aparte. Consulta Límites de solicitudes para las cabeceras y las reglas de reintento.

Requisitos de plan

El endpoint está condicionado por dos funciones del plan:

  • api_access — el derecho a usar la API, para empezar;
  • assistant_tools — el derecho a usar el catálogo de herramientas y, por tanto, MCP.

Ambas se fijan en el plan que tenga contratado tu espacio de trabajo. Un espacio cuyo plan no incluya alguna de las dos recibe un 403 con el código plan_restricted y un mensaje que nombra la capacidad que falta. Si revendes LinkProfit con tu propia marca, esta es una función que decides incluir en un plan o vender como mejora.

Resolución de problemas

403 plan_restricted — el plan no incluye assistant_tools (o api_access). Sube de plan; aquí no hay nada en la clave ni en la configuración del cliente que lo arregle.

401 unauthorized — falta la cabecera, está mal formada, o la clave es desconocida, está revocada o ha caducado. Los tres casos son deliberadamente indistinguibles. Comprueba que el valor sea la clave entera, que lleve el prefijo Bearer y que el cliente envíe la cabecera de verdad: el saludo con curl de arriba lo responde en una sola solicitud.

403 forbidden — se ha usado una clave de partner (lpp_live_…). MCP es una superficie de espacio de trabajo; crea una clave de espacio de trabajo.

429 rate_limited — la clave ha agotado su ventana. La respuesta lleva Retry-After; los clientes que reintentan de inmediato solo mantienen la clave bloqueada.

405 en GET — es lo esperado, no un fallo. El servidor no ofrece flujo de eventos ni mantiene sesión; un cliente que solo hable el transporte basado en SSE de revisiones antiguas no puede conectarse.

Una herramienta responde con un error en lugar de datos — en una transcripción de chat, dos cosas distintas se parecen. Los argumentos que no pasan la validación vuelven como un resultado de herramienta marcado como error, con los campos problemáticos listados, y el asistente puede corregirse y reintentar. Un alcance que falta vuelve como error de protocolo con el código insufficient_scope y el nombre del alcance: eso necesita una clave nueva, no otro intento.

Lecturas relacionadas