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
한국어 · 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ón | Categoría | Clave API | Descripción |
|---|---|---|---|
limelink://docs/index | Recurso | No necesaria | Índice completo de documentación |
limelink://docs/{slug} | Recurso | No necesaria | 15 páginas de documentación individuales |
list-profiles | Herramienta | No necesaria | Lista los alias de perfil configurados localmente sin contactar la API |
list-projects | Herramienta | Requerida | Lista los proyectos de un perfil de organización seleccionado |
list-custom-domains | Herramienta | Requerida | Lista los dominios personalizados de un proyecto seleccionado |
create-link | Herramienta | Requerida | Crea enlaces principales V2 mediante la API |
get-link-by-suffix | Herramienta | Requerida | Consulta enlaces por sufijo |
get-link-by-url | Herramienta | Requerida | Consulta 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:
| Cliente | Archivo 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
| Variable | Requerida | Predeterminada | Descripción |
|---|---|---|---|
LIMELINK_PROFILES_FILE | No | — | 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ámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
dynamic_link_suffix | string | No | Identificador de ruta de URL corta (1–100); generado por la API cuando se omite |
dynamic_link_url | string | Sí | URL de destino (máx. 500) |
dynamic_link_name | string | Sí | Nombre del enlace (máx. 100) |
project | string | Sí | Alias del proyecto en el perfil seleccionado o UUID del proyecto |
profile | string | No | Alias del perfil; de lo contrario, usa el perfil predeterminado o único configurado |
custom_domain_id | string UUID | No | Dominio personalizado para el enlace principal |
stats_flag | boolean | No | Habilita el seguimiento de análisis |
apple_options | object | No | Opciones de enlaces profundos de iOS |
android_options | object | No | Opciones de enlaces profundos de Android |
additional_options | object | No | Vista 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ámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
suffix | string | Sí | Sufijo del enlace dinámico |
project | string | Sí | Alias del proyecto en el perfil seleccionado o UUID del proyecto |
profile | string | No | Alias 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ámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
url | string | Sí | URL completa de LimeLink para resolver (máx. 2048 caracteres) |
profile | string | No | Alias 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