yamanahlawat/mcp-server-untitled-ui
Servidor MCP offline para componentes de Untitled UI. Sin claves API, sin llamadas remotas en tiempo de ejecución, sin límites de velocidad.
Documentación
mcp-server-untitled-ui
El servidor offline del Protocolo de Contexto de Modelo (MCP) para Untitled UI. Sin claves de API. Sin llamadas remotas en tiempo de ejecución. Sin límites de velocidad. Descarga componentes de GitHub una vez, construye un índice local y lo sirve localmente para siempre.
Este servidor MCP proporciona acceso al código fuente de los componentes de Untitled UI, interfaces/props, dependencias e iconos, con capacidades de búsqueda difusa, indicaciones de flujo de trabajo predefinidas y recursos navegables.
Características principales
- 100% Offline en tiempo de ejecución: Descarga e indexa los componentes e iconos de Untitled UI en la primera ejecución. Los arranques posteriores del servidor son instantáneos y completamente locales.
- Búsqueda difusa en cascada: Algoritmo de puntuación enriquecido para componentes basado en nombre, exportaciones, subcategoría y ruta.
- Extracción de interfaces/props de TypeScript: Analiza dinámicamente las declaraciones de interfaces y tipos de TypeScript de los componentes para que el LLM obtenga los tipos de props exactos.
- Análisis de dependencias internas: Revela las importaciones internas de Untitled UI de un componente — útil al incrustar el código fuente directamente (la instalación oficial por CLI resuelve las dependencias por sí sola).
- Ejemplos de uso y comando de instalación oficial: Muestra ejemplos de uso reales de
.demo.tsxy emite el comando oficial de la CLI de Untitled UI (npx untitledui@latest add <name> --yes) para insertar un componente directamente en tu proyecto — la CLI resuelve todas las dependencias por ti.
Configuración
Para usar este servidor con tu asistente de IA, agrégalo al archivo de configuración de tu cliente. El servidor descargará automáticamente los componentes y construirá el índice de búsqueda en su primera ejecución.
Claude Desktop / Claude Code
Añade esto a tu claude_desktop_config.json:
{
"mcpServers": {
"untitled-ui": {
"command": "npx",
"args": ["-y", "mcp-server-untitled-ui"]
}
}
}
Cursor
- Ve a Configuración > Funciones > MCP.
- Haz clic en + Añadir nuevo servidor MCP.
- Completa:
- Nombre:
untitled-ui - Tipo:
command - Comando:
npx -y mcp-server-untitled-ui
- Nombre:
Continue / Otros clientes stdio
Configura usando el patrón estándar del protocolo stdio ejecutando npx -y mcp-server-untitled-ui.
Opciones de CLI y configuración manual (opcional)
Si deseas ejecutar manualmente la configuración de descarga/índice o reconstruir la caché local, puedes ejecutar el servidor directamente en tu terminal:
npx mcp-server-untitled-ui [options]
Options:
--setup Download/rebuild index only and exit (useful for CI/CD or pre-setup)
--rebuild Force re-download from GitHub and rebuild index
--ttl <days> Days before the index is automatically refreshed on startup (default: 7)
--no-auto-refresh Disable automatic index refresh on startup
--version Print server version
--help Show this help menu
Experiencia de la primera ejecución
Cuando el servidor se inicia (ya sea manualmente o mediante un cliente MCP) por primera vez, hará lo siguiente:
- Descargará el tarball más reciente de componentes desde GitHub (
untitleduico/reactyuntitleduico/icons). - Los extraerá a un directorio temporal.
- Analizará e indexará los archivos de componentes
.tsx/.ts(ignorando historias, pruebas y módulos de utilidad pura), indexando los archivos.demo.tsxpor separado como ejemplos de uso que se vinculan a los componentes que realmente renderizan. - Guardará el índice de búsqueda generado en
~/.mcp-server-untitled-ui/index.json. - Iniciará el servidor MCP stdio.
Los arranques posteriores ejecutan el servidor instantáneamente usando el índice local.
Actualización automática
El servidor registra cuándo se construyó el índice (generatedAt). En cada inicio compara la antigüedad del índice con un TTL (por defecto: 7 días). Si el índice es más antiguo que el TTL, vuelve a descargar y reconstruye el índice silenciosamente antes de iniciar — manteniendo tu biblioteca de componentes actualizada sin ninguna acción del usuario.
Para anular el TTL:
# Rebuild if the index is older than 14 days
npx mcp-server-untitled-ui --ttl 14
# Never auto-refresh (serve the cached index indefinitely)
npx mcp-server-untitled-ui --no-auto-refresh
El TTL también se puede configurar de forma persistente mediante la variable de entorno MCP_SERVER_UNTITLED_UI_REFRESH_DAYS (consulta Variables de entorno a continuación).
Variables de entorno
Las siguientes variables de entorno se pueden usar para personalizar el comportamiento del servidor sin pasar banderas de CLI:
| Variable | Default | Descripción |
|---|---|---|
MCP_SERVER_UNTITLED_UI_DATA_DIR | ~/.mcp-server-untitled-ui | Anula el directorio donde se almacenan el índice y la caché. Útil para ejecutar múltiples instancias aisladas o en entornos de CI. |
MCP_SERVER_UNTITLED_UI_REFRESH_DAYS | 7 | Días antes de que el índice en caché se considere obsoleto y se reconstruya automáticamente al inicio. Establece 0 para reconstruir siempre. |
MCP_SERVER_UNTITLED_UI_COMPONENTS_URL | GitHub main tarball | Anula la URL del tarball de componentes. Útil para fijar una versión específica o apuntar a un espejo privado. |
MCP_SERVER_UNTITLED_UI_ICONS_URL | GitHub main tarball | Anula la URL del tarball de iconos. |
Ejemplo — almacena el índice en una caché local del proyecto:
MCP_SERVER_UNTITLED_UI_DATA_DIR=./.cache/untitled-ui npx mcp-server-untitled-ui
Cómo funciona
El servidor se divide en dos capas, cada una elegida para evitar los límites de velocidad remotos de Untitled UI:
- Búsqueda y referencia — caché local. El código fuente de los componentes, props, dependencias, ejemplos e iconos se sirven desde un índice local construido una vez a partir de los repositorios públicos de GitHub. Navegar y buscar nunca tocan una API remota, por lo que no hay claves, ni límites de velocidad, ni latencia por llamada.
- Instalación — CLI oficial. Cuando realmente quieres un componente en un proyecto real,
get_install_commandentrega el control a la CLI oficialuntitledui. Obtienes la ruta de instalación compatible y actualizada, y la resolución de dependencias es trabajo de la CLI, no nuestro.
Dos formas de usar un componente
- Incrustar el código fuente — usa
get_component,get_component_examplesyget_component_dependenciespara leer el código y hacer que el asistente lo escriba (junto con las importaciones internas que lista) directamente en tu proyecto. - Instalar mediante la CLI — usa
get_install_commandpara obtenernpx untitledui@latest add <name> --yes. Al ejecutarlo, copia el componente en tu proyecto junto con todas las dependencias que la CLI determine que necesita. La bandera--yesse ejecuta de forma no interactiva (adecuada para agentes de IA y CI).
Nota sobre los nombres: los nombres de los componentes en este servidor se derivan de las rutas de archivo (kebab-case, p. ej.
date-picker). La CLI oficial resuelve los nombres contra su propio registro curado, que es en gran medida el mismo pero no idéntico — algunos subcomponentes internos (p. ej.avatar-label-group) no se pueden instalar por separado y vienen como parte de su grupo de componente principal. Si la CLI informa "No se encontraron componentes", instala el componente principal en su lugar.
Capacidades MCP expuestas
1. Herramientas
| Herramienta | Parámetros de entrada | Descripción |
|---|---|---|
search_components | query (string), limit (number, default: 20) | Búsqueda difusa de componentes por nombre, categoría, subcategoría o nombre de exportación. |
list_components | category (string), subcategory (string, optional) | Lista todos los componentes de una categoría (sin distinción de mayúsculas/minúsculas). |
get_component | name (string) | Recupera el código fuente completo de TypeScript de un componente por nombre. |
get_component_file | path (string) | Recupera el código fuente del componente por ruta relativa. |
search_icons | query (string), limit (number, default: 20) | Busca nombres de iconos de Untitled UI. |
get_component_props | name (string) | Obtén las interfaces/tipos de props de TypeScript para un componente. |
get_component_dependencies | name (string) | Muestra las importaciones internas de Untitled UI utilizadas por el componente. |
get_component_examples | name (string) | Obtén ejemplos de uso de un componente desde sus archivos .demo.tsx ubicados en el mismo directorio. |
get_install_command | name (string) | Obtén el comando oficial de la CLI untitledui para instalar un componente (la CLI resuelve todas las dependencias automáticamente). |
2. Recursos
Habilita la navegación de recursos del lado del cliente para componentes sin requerir llamadas a herramientas:
untitled-ui://components— Matriz JSON de todas las categorías de componentes con recuentos.untitled-ui://components/{category}— Matriz JSON de componentes bajo la categoría especificada.untitled-ui://components/{category}/{name}— Código fuente TypeScript sin procesar completo de un componente específico.untitled-ui://icons— Lista JSON de todos los iconos.
3. Indicaciones
Proporciona flujos de trabajo con plantillas para ayudar a los LLM a construir pantallas de interfaz de usuario:
build_component(description): Emite contexto del sistema y empareja componentes existentes relevantes para la pantalla de interfaz que deseas construir.map_design_to_components(design_description): Guía al LLM para dividir una descripción de diseño visual en secciones lógicas y mapearlas a componentes de Untitled UI.component_usage(component_name): Genera importaciones, descripciones de props y un ejemplo de uso completo para un componente.
Desarrollo
Ejecutar pruebas
Este proyecto utiliza el ejecutor de pruebas nativo de Node.js. Puedes ejecutar las suites de pruebas ejecutando:
npm test
Ejecutar localmente
Para ejecutar el servidor localmente durante el desarrollo:
npm start
Para forzar una reconstrucción del índice localmente:
node bin/cli.mjs --rebuild
Licencia
Este proyecto está licenciado bajo la Licencia MIT.