MCP Vector Sync
Servicio MCP para sincronización automática de vectores de búsqueda multi-tenant con Supabase mediante un sistema basado 100% en eventos.
Descripción
Este servicio recibe notificaciones en tiempo real de Supabase cuando hay cambios en la tabla proyectos
, genera embeddings vectoriales utilizando OpenAI, y actualiza la tabla proyecto_vector
manteniendo una búsqueda vectorial eficiente para cada tenant. Implementa el protocolo MCP (Model Context Protocol) para exponer herramientas y recursos de sincronización.
Características
Sistema basado 100% en eventos (webhooks directos desde Supabase)
Generación de embeddings con OpenAI
Procesamiento inmediato de cambios en proyectos
Sistema de reintentos automáticos con backoff exponencial
Registro de auditoría para debugging y monitoreo
Sincronización multi-tenant con aislamiento completo de datos
Exposición de herramientas MCP para control y monitoreo
Servidor de health check para supervisión
Containerizado con Docker para fácil despliegue
Compatible con Railway para despliegue en producción
Arquitectura de eventos
El sistema utiliza una arquitectura basada completamente en eventos:
Trigger en Supabase: Cuando se crea o modifica un proyecto, un trigger envía un webhook directamente al servicio
Procesamiento con retraso controlado: Para nuevas inserciones, se aplica un retraso de 20 segundos para evitar condiciones de carrera
Reintentos automáticos: En caso de fallos, el sistema reintenta hasta 3 veces con backoff exponencial (2, 4, 8 segundos)
Registro de auditoría: Todos los intentos se registran en la tabla
webhook_logs
para debugging y monitoreo
Requisitos
Node.js >= 18
Supabase con tabla
proyectos
yproyecto_vector
API Key de OpenAI
Docker (para despliegue)
Configuración
El servicio utiliza variables de entorno para su configuración:
Desarrollo Local
Instalar dependencias:
Configurar variables de entorno (crear archivo
.env
en la raíz del proyecto)Ejecutar en modo desarrollo:
Docker
Para ejecutar el servicio con Docker:
O con Docker Compose:
Despliegue en Railway
Preparación
Crea un repositorio en GitHub y sube el código:
Crea una cuenta en Railway si aún no tienes una.
Despliegue
En Railway, crea un nuevo proyecto desde GitHub
Selecciona el repositorio
mcp-vector-sync
Railway detectará automáticamente el Dockerfile
Configura las variables de entorno en la sección "Variables"
Despliega el servicio
Railway utilizará el archivo railway.json
para configurar el deployment y el Dockerfile para construir la imagen.
Monitoreo
Una vez desplegado, puedes monitorear el servicio usando el endpoint /health
:
Endpoint de Webhook
El sistema recibe webhooks en el siguiente endpoint:
El payload esperado para el webhook debe incluir:
Herramientas MCP
El servicio expone las siguientes herramientas MCP:
sync-tenant
: Fuerza la sincronización para un tenant específicoget-sync-status
: Obtiene el estado de sincronización de un tenantcontrol-monitor
: Inicia o detiene el monitor de sincronización
Solución de problemas
Si hay errores con la generación de embeddings, verifica tu API key de OpenAI
Para problemas de conexión con Supabase, asegúrate de que la URL y la service key sean correctas
Revisa los logs en
webhook_logs
para diagnosticar problemas de webhooksLogs detallados se pueden habilitar con
LOG_LEVEL=debug
Mantenimiento
Para actualizar el servicio:
Haz cambios en el código
Actualiza la versión en
package.json
Haz commit y push a GitHub
Railway detectará los cambios y redesplegará automáticamente
Consideraciones de seguridad
Nunca incluyas credenciales o API keys en el código fuente
Utiliza variables de entorno para toda la configuración sensible
Asegúrate de que la service role key de Supabase tenga solo los permisos necesarios
En entornos de producción, considera implementar autenticación para los webhooks
Configura límites de tasa (rate limiting) para proteger contra ataques DoS
This server cannot be installed
remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
A multi-tenant service that automatically monitors Supabase database changes, generates OpenAI embeddings, and maintains synchronized vector search capabilities for each tenant's projects.
Related MCP Servers
- -securityFlicense-qualityA bridge between AI assistants like GitHub Copilot and Supabase databases, allowing AI to understand schema, assist with query writing, and provide context-aware suggestions related to your data model.Last updated -
- -securityAlicense-qualityA Model Context Protocol server that enables AI tools to interact with Supabase databases, providing tools for reading, creating, updating, and deleting records in Supabase tables.Last updated -MIT License
- AsecurityFlicenseAqualityA protocol server that enables interaction with self-hosted Supabase instances directly from development environments, allowing database introspection, management of migrations, auth users, and storage through MCP clients like IDE extensions.Last updated -2175
- -securityFlicense-qualityA Model Context Protocol server that integrates with Supabase, allowing AI assistants to access and manipulate store data through tools for product searching, filtering, and analysis.Last updated -