Tailwind Svelte Assistant
Proporciona documentación y fragmentos de código para SvelteKit y Tailwind CSS.
Documentación
Servidor MCP Tailwind Svelte Assistant
Un servidor de Protocolo de Contexto de Modelo (MCP) seguro y de alto rendimiento que proporciona documentación completa de SvelteKit y Tailwind CSS (100% de cobertura) y fragmentos de código con seguridad mejorada, implementación adecuada en TypeScript y manejo integral de errores.
✨ Novedades (v0.1.1)
📚 Cobertura Completa de Documentación
- 100% de Cobertura Svelte/SvelteKit: Documentación oficial optimizada para LLM (1.04 MB)
- 100% de Cobertura Tailwind CSS: Documentación completa mediante extracción Repomix (2.1 MB, 249 archivos)
- Búsqueda Inteligente: Búsqueda dentro de la documentación completa con contexto
- Mejora de 12.5x-25x: Del 4-8% de cobertura al 100%
🚀 Mejoras Clave (v0.1.1)
🔒 Mejoras de Seguridad
- Protección contra Recorrido de Rutas: Saneamiento integral de entradas para prevenir ataques de recorrido de directorios
- Validación de Entradas: Validación estricta de parámetros con coincidencia de patrones y límites de longitud
- Operaciones Seguras de Archivos: Acceso limitado a archivos con validación de rutas y límites de tamaño
- Registro de Auditoría: Registro estructurado de eventos de seguridad para monitoreo
🏗️ Mejoras de Arquitectura
- Diseño Modular: Separación de responsabilidades en servicios y utilidades dedicadas
- Excelencia en TypeScript: Seguridad total de tipos con interfaces adecuadas y sin tipos
any - Módulos ES: Sistema moderno de módulos JavaScript con importaciones adecuadas
- Manejo de Errores: Clasificación integral de errores y mensajes de error seguros
⚡ Optimizaciones de Rendimiento
- Caché de Contenido: Caché LRU con tiempo de espera configurable para mejorar los tiempos de respuesta
- Límites de Tamaño de Archivos: Previene el agotamiento de recursos con límites configurables
- Operaciones Asíncronas: Operaciones de archivos no bloqueantes para mejor concurrencia
- Gestión de Memoria: Limpieza automática de caché y recolección de basura
📁 Estructura del Proyecto
src/
├── index.ts # Main server with security hardening
├── types.ts # TypeScript type definitions
├── services/
│ └── fileService.ts # Secure file operations with caching
└── utils/
├── security.ts # Input validation and path sanitization
└── errorHandler.ts # Comprehensive error handling
🚀 Inicio Rápido
Instalación mediante Smithery (Recomendado)
La forma más fácil de instalar este servidor MCP es a través de Smithery:
npx -y @smithery/cli install @CaullenOmdahl/tailwind-svelte-assistant --client claude
Esto automáticamente:
- Instalará el servidor
- Lo configurará para Claude Desktop
- Configurará todas las dependencias requeridas
Instalación mediante URL Directa
Para otros clientes MCP, use la URL directa del servidor:
https://server.smithery.ai/@CaullenOmdahl/tailwind-svelte-assistant/mcp
Agregue esto a la configuración de su cliente MCP:
{
"mcpServers": {
"tailwind-svelte-assistant": {
"url": "https://server.smithery.ai/@CaullenOmdahl/tailwind-svelte-assistant/mcp",
"transport": "http"
}
}
}
🛠️ Instalación y Configuración Manual
Requisitos Previos
- Node.js 20+ (requerido para soporte de módulos ES y dependencias)
- npm o yarn
- Git (para clonar el repositorio)
Instalar Dependencias
npm install
Compilar el Servidor
npm run build
Modo de Desarrollo
npm run watch
🔧 Configuración
El servidor usa valores predeterminados seguros pero puede configurarse mediante la interfaz ServerConfig:
const CONFIG: ServerConfig = {
maxFileSize: 3 * 1024 * 1024, // 3MB max file size (for full docs)
cacheTimeout: 5 * 60 * 1000, // 5 minutes cache timeout
contentBasePath: './content',
svelteFullDocsPath: './content/docs/svelte-sveltekit-full.txt',
tailwindFullDocsPath: './content/docs/tailwind-docs-full.txt',
// ... other paths
};
Actualizaciones de Documentación
La documentación se descarga y actualiza automáticamente:
# Update all documentation (Svelte + Tailwind)
npm run update-content
Este script:
- Descarga la documentación oficial de Svelte optimizada para LLM (svelte.dev/llms-full.txt)
- Extrae la documentación completa de Tailwind desde GitHub mediante Repomix
- Actualiza las marcas de tiempo de los fragmentos de componentes
- Genera un resumen de contenido
Fuentes:
- Svelte/SvelteKit: Archivo de texto oficial optimizado para LLM (100% de cobertura)
- Tailwind CSS: Repositorio de GitHub mediante extracción Repomix (249 archivos MDX)
- Fragmentos: Ejemplos locales de componentes seleccionados (43 archivos)
🛡️ Características de Seguridad
Validación de Entradas
- Coincidencia de Patrones: Solo se permiten caracteres alfanuméricos, guiones, guiones bajos y puntos
- Límites de Longitud: Longitudes máximas de entrada configurables
- Saneamiento de Rutas: Elimina intentos de recorrido de directorios
- Verificación de Límites: Asegura que el acceso a archivos permanezca dentro de los directorios permitidos
Manejo de Errores
- Mensajes de Error Seguros: No se expone información sensible a los clientes
- Registro Estructurado: Registros de auditoría en formato JSON para monitoreo de seguridad
- Clasificación de Errores: Manejo diferente para distintos tipos de errores
- Degradación Gradual: Respuestas de respaldo para fallos no críticos
Seguridad del Sistema de Archivos
- Validación de Rutas: Verifica que las rutas resueltas estén dentro de los directorios base
- Límites de Tamaño de Archivos: Previene ataques de agotamiento de recursos
- Operaciones de Solo Lectura: No se exponen operaciones de escritura a los clientes
- Aislamiento de Caché: El almacenamiento en caché de contenido no expone la estructura del sistema de archivos
📊 Características de Rendimiento
Sistema de Caché
// Automatic content caching with configurable timeout
const fileService = new SecureFileService(
1024 * 1024, // Max file size
5 * 60 * 1000 // Cache timeout (5 minutes)
);
Gestión de Recursos
- Límites de Memoria: Las restricciones de tamaño de archivos previenen el agotamiento de memoria
- Limpieza de Caché: Eliminación automática de entradas de caché expiradas
- E/S Asíncrona: Operaciones de archivos no bloqueantes
- Recuperación de Errores: Manejo gradual de limitaciones de recursos
🔍 Herramientas Disponibles
🆕 Herramientas de Documentación Completa (Recomendadas)
-
get_svelte_full_docs- Obtener documentación completa de Svelte y SvelteKit (1MB, 100% de cobertura)- No requiere parámetros
- Devuelve toda la documentación en un solo archivo optimizado para LLM
- Formato oficial del equipo de Svelte
-
get_tailwind_full_docs- Obtener documentación completa de Tailwind CSS (2.1MB, 100% de cobertura)- No requiere parámetros
- Incluye los 249 archivos de documentación
- Todas las clases de utilidad y conceptos cubiertos
-
search_svelte_docs- Buscar dentro de la documentación de Svelte/SvelteKit- Parámetros:
query(cadena),limit(opcional, predeterminado: 5) - Devuelve secciones coincidentes con contexto circundante
- Búsqueda rápida en memoria
- Parámetros:
-
search_tailwind_docs- Buscar dentro de la documentación de Tailwind CSS- Parámetros:
query(cadena),limit(opcional, predeterminado: 5) - Devuelve secciones coincidentes con contexto circundante
- Cubre todas las clases de utilidad
- Parámetros:
Herramientas de Documentación Heredadas
Nota: Estas herramientas solo cubren aproximadamente el 4-8% de la documentación disponible. Use las herramientas de documentación completa anteriores para una cobertura total.
get_sveltekit_doc- Recuperar un tema específico de documentación de SvelteKitget_tailwind_info- Obtener información específica de Tailwind CSSlist_sveltekit_topics- Listar documentos de SvelteKit disponibles (limitado)list_tailwind_info_topics- Listar documentación de Tailwind (limitado)
Herramientas de Componentes
get_component_snippet- Obtener código de componentes Sveltelist_snippet_categories- Listar categorías de componenteslist_snippets_in_category- Listar fragmentos en una categoría
Esquemas de Herramientas Mejorados
Todas las herramientas incluyen:
- Validación de patrones con restricciones de expresiones regulares
- Límites de longitud para parámetros de entrada
- Descripciones completas con ejemplos de uso
- Saneamiento de entradas reforzado para seguridad
📝 Ejemplos de Uso
Configuración del Cliente MCP
Opción 1: Alojado en Smithery (Recomendado)
{
"mcpServers": {
"tailwind-svelte-assistant": {
"url": "https://server.smithery.ai/@CaullenOmdahl/tailwind-svelte-assistant/mcp",
"transport": "http"
}
}
}
Opción 2: Instalación Local
{
"mcpServers": {
"tailwind-svelte-assistant": {
"command": "node",
"args": ["./dist/index.js"],
"env": {}
}
}
}
Uso de Herramientas
Recomendado: Documentación Completa
// Get complete Svelte/SvelteKit documentation (1MB, 100% coverage)
await client.callTool("get_svelte_full_docs", {});
// Get complete Tailwind CSS documentation (2.1MB, 100% coverage)
await client.callTool("get_tailwind_full_docs", {});
// Search within Svelte documentation
await client.callTool("search_svelte_docs", {
query: "load function",
limit: 5 // optional
});
// Search within Tailwind documentation
await client.callTool("search_tailwind_docs", {
query: "padding utilities",
limit: 3 // optional
});
Heredado: Temas Específicos (Cobertura Limitada)
// Get specific SvelteKit topic (only covers ~8% of docs)
await client.callTool("get_sveltekit_doc", { topic: "routing" });
// Get specific Tailwind info (only covers ~4% of docs)
await client.callTool("get_tailwind_info", { query: "padding" });
// List available topics (limited)
await client.callTool("list_tailwind_info_topics", {});
Fragmentos de Componentes
// Get a component snippet
await client.callTool("get_component_snippet", {
component_category: "headers",
snippet_name: "navbar-default"
});
// List snippet categories
await client.callTool("list_snippet_categories", {});
🧪 Pruebas y Aseguramiento de Calidad
Auditoría de Seguridad
npm run security-audit
Verificación de Dependencias
npm run outdated-check
Inspector MCP
npm run inspector
🐳 Despliegue con Docker
El Dockerfile incluido proporciona una compilación segura de múltiples etapas:
# Multi-stage build with security hardening
FROM node:18-alpine AS builder
# ... build process
FROM node:18-alpine AS release
# ... production setup with non-root user
Características de Seguridad
- Compilación de múltiples etapas reduce la superficie de ataque
- Alpine Linux para una huella mínima
- Usuario no root para seguridad del contenedor
- Solo dependencias de producción
📈 Monitoreo y Registro
Registro Estructurado
Todas las operaciones se registran con JSON estructurado para facilitar el análisis:
{
"timestamp": "2024-01-15T10:30:00.000Z",
"level": "info",
"operation": "tool_request",
"tool": "get_sveltekit_doc",
"topic": "routing"
}
Eventos de Auditoría
- Solicitudes de herramientas con parámetros
- Violaciones de seguridad y solicitudes bloqueadas
- Condiciones de error con clasificación
- Métricas de rendimiento y aciertos de caché
🔄 Migración desde v0.1.0
Cambios Importantes
- Módulos ES: Actualizado para usar
import/exporten lugar derequire - TypeScript: El tipado estricto puede requerir aserciones de tipo en algunos casos
- Mensajes de Error: Mensajes de error más seguros y menos detallados
Compatibilidad
- Interfaz de Herramientas: Todas las herramientas existentes funcionan con validación mejorada
- Estructura de Contenido: Sin cambios en la organización del contenido
- Docker: Imagen base actualizada y endurecimiento de seguridad
🤝 Contribuciones
Guías de Desarrollo
- Seguridad Primero: Todos los cambios deben pasar la revisión de seguridad
- Seguridad de Tipos: Mantener cumplimiento estricto de TypeScript
- Cobertura de Pruebas: Incluir pruebas para nueva funcionalidad
- Documentación: Actualizar el README para cualquier cambio en la API
Lista de Verificación de Revisión de Código
- Validación de entradas para todas las entradas de usuario
- Manejo de errores con mensajes de error seguros
- Tipos de TypeScript sin
any - Auditoría de seguridad para operaciones de rutas
- Evaluación del impacto en el rendimiento
📚 Documentación
🐛 Solución de Problemas
Problemas Comunes
Errores de Compilación
# Clear dist and rebuild
rm -rf dist && npm run build
Errores de Permisos
# Ensure executable permissions
chmod +x dist/index.js
Errores de Importación
- Asegúrese de tener Node.js 18+ para soporte de módulos ES
- Verifique
"type": "module"en package.json
Preocupaciones de Seguridad
Si descubre una vulnerabilidad de seguridad, repórtela mediante los problemas de GitHub con la etiqueta security.
📄 Licencia
Este proyecto mantiene la misma licencia que el proyecto original Tailwind-Svelte-Assistant.
⚡ Puntos de Referencia de Rendimiento
Antes vs Después (v0.1.1)
- Cobertura de Documentación: 🔴 4-8% → 🟢 100% (mejora de 12.5x-25x)
- Seguridad: 🔴 Vulnerabilidades críticas → 🟢 Endurecido
- Seguridad de Tipos: 🟡 Tipos mixtos → 🟢 TypeScript estricto
- Rendimiento: 🟡 Sin caché → 🟢 Caché LRU de 5 minutos
- Arquitectura: 🔴 Monolítica → 🟢 Servicios modulares
- Manejo de Errores: 🟡 Básico → 🟢 Clasificación integral
Métricas de Documentación
- Svelte/SvelteKit: 1,065,921 bytes (1.04 MB)
- Tailwind CSS: 2,197,160 bytes (2.1 MB, 249 archivos)
- Tokens Totales: 606,587 tokens (Tailwind)
- Método de Actualización: Automatizado mediante script npm
Rendimiento de Caché
- Inicio en Frío: ~50-100ms por lectura de archivo
- Acierto de Caché: ~1-5ms de tiempo de respuesta
- Uso de Memoria: ~1-3MB por documento completo en caché
- Eficiencia de Caché: 80-95% de tasa de aciertos en uso típico
- Rendimiento de Búsqueda: <10ms para búsqueda en memoria
Fuentes de Documentación
- Svelte: Formato oficial optimizado para LLM del equipo de Svelte
- Tailwind: Extraído mediante Repomix del repositorio oficial de GitHub
- Actualizaciones: Script automatizado con mecanismos de respaldo
Este servidor MCP mejorado transforma el prototipo original en un servicio listo para producción con cobertura completa de documentación, seguridad de nivel empresarial, rendimiento y mantenibilidad.