Supabase MCP Server
Un servidor MCP que proporciona control administrativo sobre una base de datos Supabase PostgreSQL, compatible con Cursor's Composer y Codeium's Cascade.
Documentación
Supabase MCP Server 🚀
🔥 Un potente servidor de Model Context Protocol (MCP) que proporciona control administrativo completo sobre tu base de datos PostgreSQL de Supabase a través de Composer de Cursor y Cascade de Codeium. Esta herramienta permite una gestión fluida de la base de datos con funciones completas para operaciones de tablas, gestión de registros, modificaciones de esquemas y más.
📚 Tabla de Contenidos
- Requisitos Previos
- Inicio Rápido
- Integraciones
- Características
- Uso
- Notas de Seguridad
- Solución de Problemas
- Contribuciones
- Licencia
🔧 Requisitos Previos
- Node.js >= 16.x
- npm >= 8.x
- Un proyecto de Supabase con:
- ID del proyecto
- Contraseña de la base de datos
- Cadena de conexión de PostgreSQL
- IDE de Cursor o Cascade de Codeium (para usuarios de pago)
🚀 Inicio Rápido
📥 Instalación
# Clone the repository
git clone https://github.com/Quegenx/supabase-mcp-server.git
cd supabase-mcp-server
# Install dependencies
npm install
# Build the project
npm run build
⚙️ Configuración
-
Instala las dependencias y compila el proyecto:
npm install npm run build -
En la configuración de MCP de Cursor, añade el servidor con este comando:
/opt/homebrew/bin/node /path/to/dist/index.js postgresql://postgres.[PROJECT-ID]:[PASSWORD]@aws-0-eu-central-1.pooler.supabase.com:5432/postgresReemplaza:
/path/to/dist/index.jscon tu ruta real[PROJECT-ID]con el ID de tu proyecto de Supabase[PASSWORD]con la contraseña de tu base de datos
Nota: Mantén tus credenciales de base de datos seguras y nunca las subas al control de versiones.
🎯 Integraciones
Integración con MCP de Cursor
El Model Context Protocol (MCP) te permite proporcionar herramientas personalizadas a LLMs agénticos en Cursor. Este servidor se puede integrar con la función Composer de Cursor, proporcionando acceso directo a todas las herramientas de gestión de base de datos mediante comandos en lenguaje natural.
Configuración en Cursor
-
Abre Configuración de Cursor > Features > MCP
-
Haz clic en el botón "+ Add New MCP Server"
-
Completa el formulario modal:
- Nombre: "Supabase MCP" (o cualquier apodo que prefieras)
- Tipo:
command(transporte stdio) - Comando: Tu cadena de comando completa con los detalles de conexión
-
Compila el proyecto primero:
npm install npm run build -
Obtén la ruta de tu Node.js:
# On Mac/Linux which node # On Windows where node -
Añade el comando del servidor:
/path/to/node /path/to/dist/index.js postgresql://postgres.[PROJECT-ID]:[PASSWORD]@aws-0-eu-central-1.pooler.supabase.com:5432/postgresReemplaza:
/path/to/nodecon la ruta real de tu Node.js (del paso 5)/path/to/dist/index.jscon la ruta real al archivo JavaScript compilado[PROJECT-ID]con el ID de tu proyecto de Supabase[PASSWORD]con la contraseña de tu base de datos
-
Haz clic en "Add Server" y luego en el botón de actualizar en la esquina superior derecha
Uso de las Herramientas en Cursor
El Agente Composer detectará y utilizará automáticamente las herramientas relevantes cuando describas tus tareas de base de datos. Por ejemplo:
- "Lista todas las tablas de mi base de datos"
- "Crea una nueva tabla de usuarios"
- "Añade un índice a la columna de correo electrónico"
Cuando el agente use una herramienta, verás:
- Una solicitud para aprobar/rechazar la llamada a la herramienta
- Los argumentos de la llamada a la herramienta (expandibles)
- La respuesta después de la aprobación
Nota: Para servidores stdio como este, el comando debe ser un comando de shell válido. Si necesitas variables de entorno, considera usar un script contenedor.
Integración con Windsurf/Cascade
Este servidor MCP también es compatible con la integración de Cascade (Windsurf) de Codeium. Ten en cuenta que esta función actualmente solo está disponible para usuarios individuales de pago (no está disponible para usuarios de Teams o Enterprise).
Configuración con Cascade
-
Crea o edita
~/.codeium/windsurf/mcp_config.json:{ "mcpServers": { "supabase-mcp": { "command": "/path/to/node", "args": [ "/path/to/dist/index.js", "postgresql://postgres.[PROJECT-ID]:[PASSWORD]@aws-0-eu-central-1.pooler.supabase.com:5432/postgres" ] } } } -
Acceso rápido a la configuración:
- Encuentra la barra de herramientas sobre la entrada de Cascade
- Haz clic en el icono de martillo
- Haz clic en "Configure" para abrir mcp_config.json
-
Reemplaza en la configuración:
/path/to/nodecon la ruta real de tu Node.js/path/to/dist/index.jscon tu ruta real[PROJECT-ID]con el ID de tu proyecto de Supabase[PASSWORD]con la contraseña de tu base de datos
-
En Cascade:
- Haz clic en el icono de martillo en la barra de herramientas
- Haz clic en "Configure" para verificar tu configuración
- Haz clic en "Refresh" para cargar el servidor MCP
- Haz clic en el nombre del servidor para ver las herramientas disponibles
Notas Importantes para Usuarios de Cascade
- Solo se admite la funcionalidad de herramientas (sin prompts ni recursos)
- Las llamadas a herramientas MCP consumirán créditos independientemente de si tienen éxito o fallan
- No se admite la salida de imágenes
- Solo se admite el tipo de transporte stdio
- Las llamadas a herramientas pueden invocar código escrito por implementadores de servidores arbitrarios
- Cascade no asume responsabilidad por fallos en las llamadas a herramientas MCP
✨ Características
🎯 Herramientas de Base de Datos Disponibles
Gestión de Tablas
- Tablas:
list_tables,create_table,drop_table,rename_table - Columnas:
add_column,drop_column,alter_column - Registros:
fetch_records,create_record,update_record,delete_record
Índices y Restricciones
- Índices:
list_indexes,create_index,delete_index,update_index - Restricciones:
list_constraints,add_constraint,remove_constraint,update_constraint
Funciones y Disparadores de Base de Datos
- Funciones:
list_functions,create_function,update_function,delete_function - Disparadores:
list_triggers,create_trigger,update_trigger,delete_trigger
Seguridad y Control de Acceso
- Políticas:
list_policies,create_policy,update_policy,delete_policy - Roles:
list_roles,create_role,update_role,delete_role
Gestión de Almacenamiento
- Buckets:
list_buckets,create_bucket,delete_bucket - Archivos:
delete_file,bulk_delete_files - Carpetas:
list_folders
Tipos de Datos y Publicaciones
- Tipos Enumerados:
list_enumerated_types,create_enumerated_type,update_enumerated_type,delete_enumerated_type - Publicaciones:
list_publications,create_publication,update_publication,delete_publication
Funciones en Tiempo Real
- Políticas:
list_realtime_policies,create_realtime_policy,update_realtime_policy,delete_realtime_policy - Canales:
list_realtime_channels,manage_realtime_channels,send_realtime_message,get_realtime_messages - Gestión:
manage_realtime_status,manage_realtime_views
Gestión de Usuarios
- Autenticación:
list_users,create_user,update_user,delete_user
Acceso Directo a SQL
- Query:
query- Ejecuta consultas SQL personalizadas
🚀 Beneficios Clave
- Control por Lenguaje Natural: Gestiona tu base de datos de Supabase mediante comandos conversacionales simples
- Cobertura Integral: Conjunto completo de herramientas que cubren tablas, registros, índices, funciones, seguridad y más
- Integración Fluida: Funciona directamente dentro de Composer de Cursor y Cascade de Codeium
- Amigable para Desarrolladores: Reduce los cambios de contexto entre el IDE y las herramientas de gestión de base de datos
- Acceso Seguro: Mantiene la seguridad de tu base de datos con la autenticación adecuada
📁 Estructura del Proyecto
supabase-mcp-server/
├── dist/ # Compiled JavaScript files
│ ├── index.d.ts # TypeScript declarations
│ └── index.js # Main JavaScript file
├── src/ # Source code
│ └── index.ts # Main TypeScript file
├── package.json # Project configuration
├── package-lock.json # Dependency lock file
└── tsconfig.json # TypeScript configuration
💡 Uso
Una vez configurado, el servidor MCP proporciona todas las herramientas de gestión de base de datos a través de Composer de Cursor. Simplemente describe lo que quieres hacer con tu base de datos y la IA utilizará los comandos adecuados.
Ejemplos:
- 📋 "Muéstrame todas las tablas de mi base de datos"
- ➕ "Crea una nueva tabla de usuarios con columnas id, nombre y correo electrónico"
- 🔍 "Añade un índice en la columna de correo electrónico de la tabla de usuarios"
🔒 Notas de Seguridad
- 🔐 Mantén segura tu cadena de conexión de base de datos
- ⚠️ Nunca subas credenciales sensibles al control de versiones
- 👮 Utiliza controles de acceso y permisos adecuados
- 🛡️ Valida y sanitiza todas las entradas para prevenir la inyección de SQL
🛠️ Solución de Problemas
Problemas Comunes de Conexión
-
Problemas con la Ruta de Node.js
- Asegúrate de usar la ruta correcta de Node.js
- En Mac/Linux: Usa
which nodepara encontrar la ruta correcta - En Windows: Usa
where nodepara encontrar la ruta correcta - Reemplaza
/usr/local/bin/nodecon la ruta real de tu Node.js
-
Problemas con las Rutas de Archivos
- Usa rutas absolutas en lugar de rutas relativas
- En Mac/Linux: Usa
pwden el directorio del proyecto para obtener la ruta completa - En Windows: Usa
cdpara obtener la ruta completa - Ejemplo:
/Users/username/projects/supabase-mcp-server/dist/index.js
-
MCP No Detecta las Herramientas
- Haz clic en el botón de actualizar en la configuración de MCP de Cursor
- Asegúrate de que el servidor esté en ejecución (sin mensajes de error)
- Comprueba si tu cadena de conexión es correcta
- Verifica que tus credenciales de Supabase sean válidas
-
Problemas de Permisos
- Asegúrate de que el directorio
distexista (ejecutanpm run build) - Comprueba los permisos de archivos (
chmod +xen sistemas Unix) - Ejecuta
npm installcon los permisos adecuados
- Asegúrate de que el directorio
Modo de Depuración
Añade DEBUG=true antes de tu comando para ver registros detallados:
DEBUG=true /usr/local/bin/node /path/to/dist/index.js [connection-string]
Notas Específicas por Plataforma
Usuarios de Windows
# Use this format for the command
"C:\\Program Files\\nodejs\\node.exe" "C:\\path\\to\\dist\\index.js" "postgresql://..."
Usuarios de Linux
# Find Node.js path
which node
# Make script executable
chmod +x /path/to/dist/index.js
Si sigues teniendo problemas, por favor abre un issue con:
- Tu sistema operativo
- Versión de Node.js (
node --version) - Mensaje de error completo
- Pasos para reproducir
🤝 Contribuciones
¡Las contribuciones son bienvenidas! No dudes en enviar un Pull Request.