mcp vector sync
A multi-tenant service that automatically monitors Supabase database changes, generates OpenAI embeddings, and maintains synchronized vector search capabilities for each tenant's projects.
A multi-tenant service that automatically monitors Supabase database changes, generates OpenAI embeddings, and maintains synchronized vector search capabilities for each tenant's projects.
Servicio MCP para sincronización automática de vectores de búsqueda multi-tenant con Supabase mediante un sistema basado 100% en eventos.
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.
El sistema utiliza una arquitectura basada completamente en eventos:
webhook_logs
para debugging y monitoreoproyectos
y proyecto_vector
El servicio utiliza variables de entorno para su configuración:
# Supabase
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_SERVICE_ROLE_KEY=your-service-role-key
# OpenAI
OPENAI_API_KEY=your-openai-api-key
OPENAI_MODEL=text-embedding-ada-002
# Rate Limiting
RATE_LIMIT_PER_TENANT=100
CONCURRENT_REQUESTS=5
# Logging
LOG_LEVEL=info
npm install
Configurar variables de entorno (crear archivo .env
en la raíz del proyecto)
Ejecutar en modo desarrollo:
npm run dev
Para ejecutar el servicio con Docker:
# Construir la imagen
docker build -t mcp-vector-sync .
# Ejecutar el contenedor
docker run -p 3000:3000 --env-file .env mcp-vector-sync
O con Docker Compose:
docker-compose up
git init
git add .
git commit -m "Initial commit"
git remote add origin https://github.com/tu-usuario/mcp-vector-sync.git
git push -u origin main
mcp-vector-sync
Railway utilizará el archivo railway.json
para configurar el deployment y el Dockerfile para construir la imagen.
Una vez desplegado, puedes monitorear el servicio usando el endpoint /health
:
https://tu-proyecto.railway.app/health
El sistema recibe webhooks en el siguiente endpoint:
https://tu-proyecto.railway.app/webhook/project-update
El payload esperado para el webhook debe incluir:
{
"inmobiliaria_id": "uuid-del-tenant",
"project_id": "uuid-del-proyecto",
"event": "INSERT|UPDATE",
"timestamp": "2025-03-22T17:45:00Z"
}
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ónwebhook_logs
para diagnosticar problemas de webhooksLOG_LEVEL=debug
Para actualizar el servicio:
package.json