limelink-mcp-server

Servidor MCP para gestionar enlaces dinámicos de Limelink con deep linking específico por plataforma (iOS/Android), vistas previas sociales y seguimiento UTM

Documentación

@limelink/mcp

npm version License: MIT

한국어 · Documentación · Referencia de capacidades

Un servidor de Model Context Protocol (MCP) para la gestión de enlaces dinámicos de LimeLink. Crea, consulta y gestiona enlaces dinámicos directamente desde Claude Code, Claude Desktop o cualquier cliente compatible con MCP.

¡No se requiere clave API para comenzar! Las guías de documentación y configuración del SDK funcionan sin ninguna configuración. Solo conéctate y comienza a explorar las funciones de LimeLink con tu asistente de IA.

Características

  • Recursos de documentación — Accede a los documentos de LimeLink (15 páginas + índice) directamente desde tu asistente de IA — sin necesidad de clave API
  • 5 herramientas — Descubre perfiles y proyectos, crea enlaces dinámicos y consulta enlaces (las herramientas de API requieren un perfil configurado)
  • Caché en memoria — Caché TTL de 1 hora para las descargas de documentación

Entorno de ejecución

  • Node.js 18 o posterior
  • Solo transporte stdio; no se admite transporte MCP remoto/HTTP
  • Paquete npm: @limelink/mcp; ejecutable global: limelink-mcp
  • stdout está reservado para el protocolo MCP; los diagnósticos y registros del contenedor deben usar stderr

Consulta instalación y configuración y comportamiento de red para conocer el contrato operativo completo.

¿Qué funciona sin una clave API?

FunciónCategoríaClave APIDescripción
limelink://docs/indexRecursoNo necesariaÍndice completo de documentación
limelink://docs/{slug}RecursoNo necesaria15 páginas de documentación individuales
list-profilesHerramientaNo necesariaLista los alias de perfil configurados localmente sin contactar la API
list-projectsHerramientaRequeridaLista los proyectos de un perfil de organización seleccionado
list-custom-domainsHerramientaRequeridaLista los dominios personalizados de un proyecto seleccionado
create-linkHerramientaRequeridaCrea enlaces principales V2 mediante la API
get-link-by-suffixHerramientaRequeridaConsulta enlaces por sufijo
get-link-by-urlHerramientaRequeridaConsulta enlaces por URL

Inicio rápido

Sin clave API (documentación y guías)

No se necesita clave API. Conéctate y comienza a explorar la documentación y las guías de configuración de LimeLink de inmediato:

{
  "mcpServers": {
    "limelink": {
      "command": "npx",
      "args": ["-y", "@limelink/mcp"]
    }
  }
}

Prueba a preguntar a tu asistente de IA:

  • "Lee los documentos de inicio de LimeLink"
  • "¿Cómo configuro el enlace profundo para iOS?"
  • "Muéstrame la guía de integración del SDK de LimeLink"

Con perfiles de organización (funciones completas)

Crea el archivo de perfil versión 1 que se muestra a continuación y pasa su ruta absoluta:

{
  "mcpServers": {
    "limelink": {
      "command": "npx",
      "args": ["-y", "@limelink/mcp"],
      "env": {
        "LIMELINK_PROFILES_FILE": "/absolute/path/to/limelink-profiles.json"
      }
    }
  }
}

Uso con instalación global

npm install -g @limelink/mcp
{
  "mcpServers": {
    "limelink": {
      "command": "limelink-mcp",
      "env": {
        "LIMELINK_PROFILES_FILE": "/absolute/path/to/limelink-profiles.json"
      }
    }
  }
}

Configuración

Claude Code

La forma más sencilla de añadir el servidor MCP es usando el comando claude mcp add:

# Without API key (docs & guides only)
claude mcp add --scope user --transport stdio limelink -- npx -y @limelink/mcp

# With API key (full features)
claude mcp add --scope user --transport stdio limelink \
  --env LIMELINK_PROFILES_FILE=/absolute/path/to/limelink-profiles.json \
  -- npx -y @limelink/mcp

Opciones de alcance:

  • --scope user — Disponible en todos los proyectos
  • --scope project — Guardado en .mcp.json (compartible con el equipo mediante Git)

Claude Desktop y otros clientes MCP

Añade la configuración JSON al archivo de configuración de tu cliente:

ClienteArchivo de configuración
Claude Desktop (macOS)~/Library/Application Support/Claude/claude_desktop_config.json
Claude Desktop (Windows)%APPDATA%\Claude\claude_desktop_config.json

Archivo de perfil

{"version":1,"defaultProfile":"work","profiles":{"work":{"apiKey":"your_api_key","organizationLabel":"Work","projects":{"marketing":"11111111-1111-4111-8111-111111111111"}}}}

Variables de entorno

VariableRequeridaPredeterminadaDescripción
LIMELINK_PROFILES_FILENo—Ruta a un archivo JSON versión 1 que contiene perfiles de credenciales de organización con nombre.

LIMELINK_API_KEY y LIMELINK_PROJECT_ID se ignoran. Cuando no hay un perfil de credenciales configurado, las herramientas respaldadas por API dirigen al agente a Organizaciones para emitir una clave API de organización y configurar el archivo de perfil. Las herramientas respaldadas por proyectos aceptan un UUID de proyecto directamente. El mapa opcional projects de un perfil es una conveniencia recomendada para proyectos usados con frecuencia, no un requisito previo; añade alias después del descubrimiento de list-projects si resulta útil. Los perfiles se inicializan de forma diferida mediante la introspección de credenciales en su primera llamada respaldada por API. Los cambios en el archivo de perfil, incluidas las adiciones de alias, requieren reiniciar el servidor MCP.

Puedes obtener tu clave API desde el Panel de LimeLink. Sin una clave API, los recursos de documentación y las guías de configuración del SDK están completamente disponibles.

Herramientas

list-profiles

Lista los alias configurados, las etiquetas de organización, el estado predeterminado y el estado de inicialización actual sin contactar la API. Los perfiles ya inicializados incluyen alcances. Los valores de las claves API permanecen secretos y nunca se devuelven. Los identificadores de organización, proyecto, dominio personalizado y credenciales, así como los prefijos de clave, son identificadores no secretos y pueden aparecer en las respuestas de herramientas respaldadas por API cuando resulta útil.

list-projects

Lista los proyectos de la organización descubiertos a partir de la credencial del perfil seleccionado. Acepta profile opcional; la credencial requiere projects:read.

list-custom-domains

Lista los dominios personalizados para el project requerido (alias o UUID). Acepta profile opcional; la credencial requiere domains:read.

create-link

Crea un enlace principal V2 con enlaces profundos específicos de plataforma, selección de dominio personalizado, vistas previas sociales y seguimiento UTM.

Parámetros:

ParámetroTipoRequeridoDescripción
dynamic_link_suffixstringNoIdentificador de ruta de URL corta (1–100); generado por la API cuando se omite
dynamic_link_urlstringSíURL de destino (máx. 500)
dynamic_link_namestringSíNombre del enlace (máx. 100)
projectstringSíAlias del proyecto en el perfil seleccionado o UUID del proyecto
profilestringNoAlias del perfil; de lo contrario, usa el perfil predeterminado o único configurado
custom_domain_idstring UUIDNoDominio personalizado para el enlace principal
stats_flagbooleanNoHabilita el seguimiento de análisis
apple_optionsobjectNoOpciones de enlaces profundos de iOS
android_optionsobjectNoOpciones de enlaces profundos de Android
additional_optionsobjectNoVista previa social + opciones UTM

Ejemplo de uso en Claude:

"Crea un enlace dinámico para https://example.com/product/123 con el sufijo 'product-123' y habilita el análisis"

get-link-by-suffix

Consulta un enlace dinámico por su sufijo.

ParámetroTipoRequeridoDescripción
suffixstringSíSufijo del enlace dinámico
projectstringSíAlias del proyecto en el perfil seleccionado o UUID del proyecto
profilestringNoAlias del perfil; de lo contrario, usa el perfil predeterminado o único configurado

get-link-by-url

Resuelve un enlace mediante la API V2 usando su URL completa. El backend determina si la URL pertenece a un espacio de nombres predeterminado gratuito, a un nombre de host de proyecto o a un dominio personalizado activo. No se requiere selector de proyecto ni análisis de sufijo local.

La URL debe ser HTTPS absoluta con exactamente un segmento de ruta /{suffix} y sin consulta, fragmento, puerto explícito ni credenciales.

ParámetroTipoRequeridoDescripción
urlstringSíURL completa de LimeLink para resolver (máx. 2048 caracteres)
profilestringNoAlias del perfil; de lo contrario, usa el perfil predeterminado o único configurado

Recursos

limelink://docs/index

Devuelve el índice completo de documentación de LimeLink (llms.txt).

limelink://docs/{slug}

Devuelve páginas de documentación individuales. Slugs disponibles:

introduction, getting-started, project, application, dynamic-link, create-link, link-detail, link-management, appearance, sdk-integration, ios-sdk, android-sdk, api-integration, advanced, llm-agent

Ejemplo de uso en Claude:

"Lee los documentos de integración de la API de LimeLink"

Claude accederá a limelink://docs/api-integration

Desarrollo

Requisitos previos

  • Node.js >= 18
  • pnpm

Configuración

git clone https://github.com/hellovelop/limelink-mcp-server.git
cd limelink-mcp-server
pnpm install
pnpm run build

Ejecutar localmente

LIMELINK_PROFILES_FILE=/absolute/path/to/limelink-profiles.json node dist/index.js

Pruebas

pnpm test          # Unit tests
pnpm test:e2e      # E2E tests (MCP stdio communication)
pnpm test:watch    # Unit tests in watch mode
pnpm test:coverage # Coverage report

Estructura del proyecto

src/
├── index.ts              # Entry point
├── lib/
│   ├── config.ts         # Environment variable loading
│   ├── cache.ts          # In-memory TTL cache
│   ├── api-client.ts     # LimeLink API HTTP client
│   └── doc-fetcher.ts    # Documentation fetcher with caching
├── tools/
│   ├── create-link.ts    # create-link tool
│   ├── get-link-by-suffix.ts
│   └── get-link-by-url.ts
└── resources/
    └── documentation.ts  # Documentation resources

Licencia

MIT