limelink-mcp-server
@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 de API para empezar! La documentación y las guías de configuración del SDK funcionan sin ninguna configuración. Solo conéctate y empieza a explorar las funciones de LimeLink con tu asistente de IA.
Características
Recursos de documentación — Accede a la documentación de LimeLink (15 páginas + índice) directamente desde tu asistente de IA — no se necesita clave de 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 superior
Solo transporte stdio; no se admite transporte MCP/HTTP remoto
Paquete npm:
@limelink/mcp; ejecutable global:limelink-mcpstdout está reservado para el protocolo MCP; los diagnósticos y los registros del wrapper deben usar stderr
Consulta instalación y configuración y comportamiento de red para conocer el contrato operativo completo.
¿Qué funciona sin una clave de API?
Característica | Categoría | Clave de API | Descripción |
| Recurso | No necesaria | Índice completo de documentación |
| Recurso | No necesaria | 15 páginas de documentación individuales |
| Herramienta | No necesaria | Enumera los alias de perfil configurados localmente sin contactar con la API |
| Herramienta | Requerida | Enumera los proyectos de un perfil de organización seleccionado |
| Herramienta | Requerida | Enumera los dominios personalizados de un proyecto seleccionado |
| Herramienta | Requerida | Crea Core Links V2 mediante la API |
| Herramienta | Requerida | Consulta enlaces por sufijo |
| Herramienta | Requerida | Consulta enlaces por URL |
Related MCP server: lynxprompt-mcp
Inicio rápido
Sin clave de API (Documentación y guías)
No se necesita clave de API. Conéctate y empieza 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 preguntarle a tu asistente de IA:
"Lee la documentación de inicio de LimeLink"
"¿Cómo configuro el deep linking 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 usar 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/mcpOpciones de ámbito:
--scope user— Disponible en todos los proyectos--scope project— Se guarda en.mcp.json(se puede compartir 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) |
|
Claude Desktop (Windows) |
|
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 | Predeterminado | Descripción |
| 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 de API dirigen al agente a Organizaciones para emitir una clave de API de organización y configurar el archivo de perfil. Las herramientas de proyectos aceptan directamente un UUID de proyecto. El mapa projects opcional de un perfil es una conveniencia recomendada para proyectos de uso frecuente, no un requisito; añade alias después del descubrimiento con list-projects si resulta útil. Los perfiles se inicializan de forma diferida mediante la introspección de credenciales en su primera llamada a la API. Los cambios en el archivo de perfil, incluida la adición de alias, requieren reiniciar el servidor MCP.
Puedes obtener tu clave de API desde el panel de LimeLink. Sin una clave de API, los recursos de documentación y las guías de configuración del SDK están totalmente disponibles.
Herramientas
list-profiles
Enumera los alias configurados, las etiquetas de organización, el estado predeterminado y el estado de inicialización actual sin contactar con la API. Los perfiles ya inicializados incluyen ámbitos. Los valores de las claves de 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 las herramientas de API cuando sea útil.
list-projects
Enumera los proyectos de la organización descubierta a partir de la credencial del perfil seleccionado. Acepta un profile opcional; la credencial requiere projects:read.
list-custom-domains
Enumera los dominios personalizados del project requerido (alias o UUID). Acepta un profile opcional; la credencial requiere domains:read.
create-link
Crea un Core Link V2 con deep linking específico de la plataforma, selección de dominio personalizado, vistas previas sociales y seguimiento UTM.
Parámetros:
Parámetro | Tipo | Requerido | Descripción |
| string | No | Identificador de ruta de URL corta (1–100); generado por la API si se omite |
| string | Sí | URL de destino (máx. 500) |
| string | Sí | Nombre del enlace (máx. 100) |
| string | Sí | Alias de proyecto en el perfil seleccionado o UUID de proyecto |
| string | No | Alias de perfil; de lo contrario, usa el perfil predeterminado configurado o el único perfil |
| UUID string | No | Dominio personalizado para el Core Link |
| boolean | No | Habilitar el seguimiento de analytics |
| object | No | Opciones de deep linking para iOS |
| object | No | Opciones de deep linking para Android |
| object | No | Opciones de vista previa social + UTM |
Ejemplo de uso en Claude:
"Crea un enlace dinámico para https://example.com/product/123 con el sufijo 'product-123' y habilita analytics"
get-link-by-suffix
Consulta un enlace dinámico por su sufijo.
Parámetro | Tipo | Requerido | Descripción |
| string | Sí | Sufijo del enlace dinámico |
| string | Sí | Alias de proyecto en el perfil seleccionado o UUID de proyecto |
| string | No | Alias de perfil; de lo contrario, usa el perfil predeterminado configurado o el único perfil |
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 gratuito predeterminado, a un hostname de proyecto o a un dominio personalizado activo. No se requiere selector de proyecto ni análisis local de sufijo.
La URL debe ser una URL HTTPS absoluta con exactamente un segmento de ruta /{suffix} y sin query, fragmento, puerto explícito ni credenciales.
Parámetro | Tipo | Requerido | Descripción |
| string | Sí | URL completa de LimeLink para resolver (máx. 2048 caracteres) |
| string | No | Alias de perfil; de lo contrario, usa el perfil predeterminado configurado o el único perfil |
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 la documentación de integración de 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 buildEjecutar localmente
LIMELINK_PROFILES_FILE=/absolute/path/to/limelink-profiles.json node dist/index.jsPruebas
pnpm test # Unit tests
pnpm test:e2e # E2E tests (MCP stdio communication)
pnpm test:watch # Unit tests in watch mode
pnpm test:coverage # Coverage reportEstructura 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 resourcesLicencia
MIT
Available Tools
3 toolscreate-linkB
Create a Limelink dynamic link with platform-specific deep linking, social previews, and UTM tracking
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | No | Project ID the link belongs to. Uses LIMELINK_PROJECT_ID env if not provided. | |
| stats_flag | No | Enable analytics tracking | |
| apple_options | No | iOS-specific deep linking options | |
| android_options | No | Android-specific deep linking options | |
| dynamic_link_url | Yes | Target URL for desktop or fallback | |
| dynamic_link_name | Yes | Link name for management and identification | |
| additional_options | No | Social preview and UTM tracking options | |
| dynamic_link_suffix | Yes | Unique identifier for the short URL path |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It only says 'create' but discloses no side effects, permissions, return format, error behavior, or any other behavioral traits. Similar to the update_drive example, this lacks required transparency for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently conveys the core action and key features. No wasted words or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 8 parameters, nested objects, and no output schema or annotations, yet the description is minimal. It doesn't mention return values, side effects, or how the parameters work together. The schema covers parameter details but the overall context is insufficient for reliable use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% parameter description coverage, so the schema already explains each parameter. The description adds a high-level categorization (platform-specific, social previews, UTM tracking) but no additional semantic detail. Baseline 3 applies per instructions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a Limelink dynamic link, with specific features listed (platform-specific deep linking, social previews, UTM tracking). The verb 'create' unambiguously distinguishes it from sibling retrieval tools like get-link-by-suffix and get-link-by-url.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, when to choose creation over retrieval, or any exclusions. This is a clear gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-link-by-suffixA
Look up a Limelink dynamic link by its suffix
| Name | Required | Description | Default |
|---|---|---|---|
| suffix | Yes | Dynamic link suffix to look up | |
| project_id | No | Project ID. Uses LIMELINK_PROJECT_ID env if not provided. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states 'Look up', which implies a read-only operation, but does not disclose potential side effects, return format, authentication needs, error behavior, or whether the tool modifies anything. This goes beyond what the schema provides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is front-loaded with the action and resource, containing no redundant words or restatements. It is maximally concise while still conveying the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a simple lookup operation, and the schema covers all parameters. However, with no output schema and no annotations, the description does not mention what is returned (e.g., the full link details) or any edge cases, leaving a slight gap in completeness despite the low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage for both parameters (suffix and project_id), including descriptions. The tool description adds no additional parameter-level detail, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Look up') on a specific resource ('Limelink dynamic link') with a specific lookup key ('suffix'), clearly distinguishing it from the sibling 'get-link-by-url' which uses a URL as the key.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you have a suffix, but it does not explicitly mention when to use this tool versus the sibling 'get-link-by-url' or provide any exclusion guidance. The context of sibling names makes the distinction apparent, but it is only implied, not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-link-by-urlA
Look up a Limelink dynamic link by its full URL. Supports both Free (deep.limelink.org) and Pro ({project}.limelink.org/link/) URL formats.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Full Limelink dynamic link URL to look up | |
| project_id | No | Project ID. Uses LIMELINK_PROJECT_ID env if not provided. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden. It does not disclose whether this is a read-only operation, what the return value looks like, or any error behavior. The only behavioral addition is the URL format support, which is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exactly two sentences, front-loaded with the primary purpose, and contains no redundant or filler content. Every clause provides necessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple lookup tool with fully documented parameters, the description covers the core purpose and URL format limitations. It does not describe return values or error conditions, but given the simplicity and schema coverage, this is an acceptable gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds value by explaining the two accepted URL formats, giving more meaning to the 'url' parameter beyond the schema's generic description. No info on project_id, but schema covers it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool looks up a Limelink dynamic link by its full URL, using a specific verb and resource. It distinguishes itself from siblings like get-link-by-suffix (lookup by suffix) and create-link (creation).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides useful context by listing the supported URL formats (Free and Pro), which helps users understand when this tool is applicable. However, it does not explicitly mention alternatives or when not to use it, but the context is clear enough for a differentiated tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v0.0.5- First observed
create-link - First observed
get-link-by-suffix - First observed
get-link-by-url
TDQS
Scored across 3 tools
Each tool has a clear distinct purpose: create-link creates a new link, while get-link-by-suffix and get-link-by-url both retrieve links but by different keys (suffix vs URL). The two retrieval methods might be confused, but their parameter differences make them separable.
All tool names follow a consistent verb-noun pattern with hyphens (create-link, get-link-by-suffix, get-link-by-url), and the retrieval variants use a uniform 'by-...' modifier. The convention is predictable and uniform.
With only 3 tools, the server is minimal but reasonably scoped for its purpose of creating and looking up links. It is on the low end but not overly thin, as the tools are directly relevant to the core functionality.
The server covers create and read operations but lacks update and delete, which are important for lifecycle management of dynamic links. Agents cannot modify or remove existing links, leaving a notable gap for full CRUD coverage.
Maintenance
Related MCP Connectors
MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
MCP server providing access to the Scorecard API to evaluate and optimize LLM systems.
Related MCP Servers
- FlicenseNot gradedqualityFmaintenanceA production-ready MCP server built with FastAPI, providing an enhanced tool registry for creating, managing, and documenting AI tools for Large Language Models (LLMs).34-
- AlicenseBqualityAmaintenanceMCP server that exposes any LynxPrompt instance to LLMs, enabling browsing, searching, and managing AI configuration blueprints and prompt hierarchies.643 npm2GPL 3.0

@linklee/mcp-serverofficial
AlicenseAqualityDmaintenanceMCP server for Linklee that enables creating short links, listing links, getting click analytics, and managing workspace tags.47 npmMIT- AlicenseNot gradedqualityDmaintenanceMCP server that provides tools to interact with the LiteLLM proxy API, enabling LLM completions, embeddings, image generation, and admin operations.43 npmMIT