8 min de lecturaFunciones

Servidor MCP de Elido: Claude Desktop, Cursor y Claude Code

Ejecuta el servidor MCP de Elido desde el monorepo, conéctalo a Claude Desktop, Cursor y Claude Code.

Marius Voß
DevRel · edge infra

El servidor MCP de Elido es un pequeño proceso de Node que permite a Claude Desktop, Cursor o Claude Code crear enlaces cortos, listarlos y leer series temporales de clics desde dentro de un chat. Vive en el monorepo, en packages/mcp-server, habla MCP por stdio y se comunica con la misma API REST que todo lo demás.

Una corrección de entrada, porque una versión anterior de esta guía se equivocó: el paquete no está en npm y aún no es público. A fecha de 2026-11-11, npm view @elido/mcp-server devuelve un 404; pronto habrá una publicación pública. Hasta entonces lo ejecutas desde una compilación local. Todo lo que sigue se comprobó contra el código de packages/mcp-server y services/api-core.

Qué es MCP

El Model Context Protocol es un estándar abierto para que un cliente de IA llame a herramientas que viven fuera del modelo. El cliente inicia un servidor o se conecta a él, le pide la lista de herramientas y envía las llamadas a herramientas como mensajes JSON-RPC. El servidor hace el trabajo y devuelve texto que lee el modelo. El modelo nunca tiene tu clave de API; la tiene el servidor.

La especificación define dos transportes, stdio para procesos locales y Streamable HTTP para remotos (especificación MCP, última revisión 2026-07-28, consultado el 2026-10-25). El servidor de Elido implementa solo stdio.

Diagrama de arquitectura: Claude Desktop y Cursor se conectan por el transporte JSON-RPC stdio al servidor MCP local de Elido, que hace peticiones Bearer autenticadas a la API REST de Elido, y la clave de API permanece dentro del servidor para que el modelo nunca la vea La página de integraciones de Elido con Claude, ChatGPT, Cursor, Claude Code, Gemini y otros conectores y sus guías de configuración

Qué hace el servidor

Está escrito a mano, sin el @modelcontextprotocol/sdk oficial, para no tener dependencias. En src/index.ts responde a cuatro cosas: initialize (informando la versión de protocolo 2024-11-05), tools/list, tools/call y la notificación notifications/initialized. Cualquier otra cosa recibe un error de "method not found". No hay manejadores de recursos, prompts ni ping.

Cada llamada a una herramienta se convierte en una petición REST autenticada a ELIDO_API_BASE (por defecto https://api.elido.app) con Authorization: Bearer <key> y la cabecera User-Agent: elido-mcp-server/0.1.0. Las llamadas fallidas vuelven como un error que incluye el estado HTTP y los primeros 400 caracteres de la respuesta.

HerramientaPetición que envíaEstado
create_linkPOST /v1/workspaces/{id}/linksFunciona; elige el primer dominio si no se indica ninguno
list_linksGET /v1/workspaces/{id}/links?limit&offsetFunciona; límite de 1 a 100
query_analyticsGET /v1/workspaces/{id}/analytics/timeseriesFunciona; devuelve {"items":[{"ts","count"}]}
generate_qrPOST /v1/workspaces/{id}/qrNo se encontró ninguna ruta coincidente en api-core
list_workspacesGET /v1/workspacesFunciona; lista los espacios de trabajo a los que pertenece quien llama

Sobre generate_qr: api-core sirve un POST /v1/qr/generate público y un diseño por enlace en GET /v1/workspaces/{id}/links/{link_id}/qr, pero nada en la ruta a la que llama la herramienta. Hasta que se concilie, no construiría un flujo de trabajo sobre ella. Está en el backlog.

Compilarlo y obtener una clave de API

El monorepo es privado, así que los pasos siguientes valen cuando tengas el código fuente del paquete (pronto habrá una publicación pública). Compila el paquete:

pnpm install
pnpm --filter @elido/mcp-server build

Eso produce packages/mcp-server/dist/index.js. Necesitas Node 20 o superior (engines en su package.json).

Para la clave, abre Dashboard, luego API keys (/dashboard/api-keys), pon a la clave el nombre del agente y elige un rol. El formulario ofrece viewer, editor y admin, y editor es el predeterminado. Las claves de Elido llevan un rol de espacio de trabajo, no permisos por herramienta. Una clave viewer es la opción de solo lectura: puede listar y leer analítica, y la API rechaza create_link. Define una caducidad si la clave es para una prueba. Copia la clave cuando se muestre y no la subas al control de versiones.

Configurar Claude Desktop

Claude Desktop lee claude_desktop_config.json. La ubicación de la configuración y la pestaña de ajustes de Developer se describen en la documentación de MCP (conectar servidores locales, consultado el 2026-10-25). En macOS el archivo es ~/Library/Application Support/Claude/claude_desktop_config.json, y en Windows %APPDATA%\Claude\claude_desktop_config.json.

{
  "mcpServers": {
    "elido": {
      "command": "node",
      "args": [
        "/absolute/path/to/url-shortener/packages/mcp-server/dist/index.js"
      ],
      "env": {
        "ELIDO_API_KEY": "elido_your_key_here",
        "ELIDO_WORKSPACE_ID": "42"
      }
    }
  }
}

Usa una ruta absoluta. ELIDO_WORKSPACE_ID es opcional solo cuando la clave ve exactamente un espacio de trabajo; entonces el servidor llama una vez a GET /v1/workspaces y guarda el id en caché. Con dos o más espacios de trabajo lanza un error que te dice que definas la variable, así que defínela desde el principio.

Reinicia Claude Desktop tras guardar. Si el servidor no aparece, ejecuta antes el mismo comando en un terminal. Que falte la clave no detiene el proceso, imprime una advertencia en stderr y todas las llamadas a herramientas fallan después.

Configurar Cursor y Claude Code

Cursor lee la misma estructura mcpServers desde .cursor/mcp.json en un proyecto, o desde ~/.cursor/mcp.json para todos los proyectos (documentación MCP de Cursor, consultado el 2026-10-25). Pega el bloque de arriba, añade el archivo a .gitignore porque contiene una clave real, y comprueba el servidor en los ajustes MCP de Cursor.

Claude Code añade un servidor stdio desde la línea de comandos (documentación MCP de Claude Code, consultado el 2026-10-25):

claude mcp add --env ELIDO_API_KEY=elido_your_key_here --env ELIDO_WORKSPACE_ID=42 \
  --transport stdio elido -- node /absolute/path/to/packages/mcp-server/dist/index.js

Las claves en un archivo de configuración están en texto plano. En una máquina compartida, da a cada persona su propia clave para que el rastro de auditoría signifique algo.

Dos sesiones, con las formas reales de las peticiones

Son conversaciones ilustrativas, no grabaciones, y los números son inventados. Los argumentos de las herramientas y los campos de resultado coinciden con el código.

Acortar un enlace de campaña. Le pides a Claude que acorte https://shop.example.com/spring con el slug spring y la etiqueta spring. Llama a create_link con destination_url, slug, title y tags. Como no se pasó domain_id, el servidor primero obtiene GET /v1/workspaces/{id}/domains y usa el primero que devuelva. Si tu espacio de trabajo tiene varios dominios, pasa tú mismo domain_id. La API responde con el registro del enlace, incluido short_url, y Claude lo pone en el borrador. Si el slug está en uso, la API devuelve 409 "slug already exists for this domain", y Claude puede elegir otro.

Un viaje de ida y vuelta de create_link: el agente LLM solicita create_link con una URL, un slug y etiquetas, la herramienta MCP traduce la llamada y resuelve el espacio de trabajo, api-core gestiona el POST y escribe el registro del enlace.

Leer los clics de la semana pasada. Pides los clics diarios de un enlace, en hora de Berlín. Claude llama a query_analytics con link_id, from, to, interval: "day" y tz: "Europe/Berlin". Las fechas son YYYY-MM-DD, y la API rechaza un rango en el que from no sea anterior a to, así que pasa el día siguiente a tu último día como to. Si las omites, el rango son los últimos 30 días. El resultado es {"items": [{"ts": "...", "count": 312}, ...]}. No hay campo total, así que pide a Claude que sume los recuentos. Solo clics: por esta herramienta no llega ningún desglose por país, dispositivo o referente.

Seguridad y límites

Roles, no permisos por herramienta. Elige el rol más bajo que haga el trabajo. Viewer para agentes de informes, editor para los que crean enlaces, admin solo con una razón concreta.

Lo que sale de tu máquina. El servidor envía peticiones a tu base de API de Elido y a ningún otro sitio. Lo que tu cliente de IA envía a su propio proveedor lo cubre la política de ese proveedor.

Rastro de auditoría. Crear una clave emite un evento de auditoría api_key.created, y crear un enlace emite link.created. No he verificado cómo se atribuye un evento a una clave concreta, así que no confíes en el registro de auditoría para distinguir a dos agentes. Dale a cada uno su propia clave y vigila la lista de claves.

Límites de tasa. Las llamadas cuentan para el límite del espacio de trabajo: 10 peticiones por segundo en Free, 30 en Pro y 100 en Business, con márgenes de ráfaga de 20, 60 y 200 (services/api-core/internal/httpserver/server.go). Un agente que cree cientos de enlaces debería usar POST /v1/workspaces/{id}/links/bulk a través de la API, como en importación masiva desde una hoja de Google.

MCP remoto. Sería un endpoint alojado con OAuth, para que un conector de Claude pudiera llegar a Elido sin un proceso local. Está planificado, no construido, y el catálogo de integraciones del panel solo lista el servidor local. Úsalo por ahora.

Deriva del protocolo. El servidor declara 2024-11-05 mientras la revisión actual de la especificación es 2026-07-28. No lo hemos probado con todas las versiones de cada cliente, así que comprueba el estado del servidor en tu cliente después de una actualización.

Hacia dónde va esto

Las lagunas de arriba están en el backlog: publicar el paquete, arreglar generate_qr, añadir Streamable HTTP y el endpoint remoto, añadir más herramientas (actualizar, eliminar, desgloses geográficos) y atribución de auditoría por clave. Para otra vía hacia la misma idea de agente, consulta la guía de Gemini y la guía de ChatGPT; para la higiene de claves, permisos de claves de API para herramientas de enlaces.

Relacionado en el blog

Preguntas frecuentes

¿Está el servidor MCP de Elido en npm?

Todavía no. El paquete no está en npm (`npm view @elido/mcp-server` devuelve un 404 a fecha de 2026-11-11), así que `npx -y @elido/mcp-server` falla. Pronto habrá una publicación pública. Hasta entonces el servidor solo se ejecuta desde una compilación local del paquete (packages/mcp-server en nuestro monorepo privado), cuyo archivo compilado dist/index.js indicas a tu cliente MCP.

¿Qué herramientas expone el servidor MCP de Elido?

Cinco: create_link, list_links, query_analytics, generate_qr y list_workspaces. Las cuatro primeras necesitan un espacio de trabajo, que sale de ELIDO_WORKSPACE_ID o de que la clave vea exactamente un espacio de trabajo. generate_qr llama a una ruta que no pudimos encontrar en api-core, así que trátala como poco fiable hasta que se corrija.

¿Cómo hago que una clave MCP sea de solo lectura?

Crea la clave de API con el rol viewer en el panel. Las claves llevan un rol de espacio de trabajo (viewer, editor o admin, editor por defecto), no permisos por herramienta. Una clave viewer puede listar enlaces y leer analítica, y create_link devuelve un error de permisos desde la API.

¿Tiene Elido una URL MCP remota para los conectores de Claude?

Todavía no. No hay un endpoint MCP alojado con OAuth; un servidor remoto está planificado. Usa el servidor local stdio, que expone las cinco herramientas listadas arriba.

¿Qué transporte y qué versión de protocolo MCP usa el servidor?

Solo stdio, con JSON-RPC 2.0 delimitado por líneas. Responde a initialize con la versión de protocolo 2024-11-05 y gestiona tools/list y tools/call. La especificación MCP actual define además un transporte Streamable HTTP, que este servidor no implementa.

¿Cuentan las llamadas a herramientas para mi límite de tasa?

Sí. El servidor es un cliente de API normal, así que se aplica el límite por espacio de trabajo: 10 peticiones por segundo en Free, 30 en Pro y 100 en Business, con ráfagas de 20, 60 y 200. Para cientos de enlaces, usa el endpoint de creación masiva en lugar de una llamada a herramienta por enlace.

Prueba Elido

Pega una URL, obtén un enlace corto

Sin registro. El enlace vive 30 días. Crea una cuenta para conservarlo.

Sin registro. Crea una cuenta gratis y obtén 50 enlaces al mes.

Prueba Elido

Acortador de URL alojado en la UE: dominios personalizados, análisis profundo y API abierta. Plan gratuito - sin tarjeta de crédito.

Etiquetas
elido mcp server
model context protocol
claude desktop mcp
cursor mcp
claude code mcp
url shortener api

Seguir leyendo