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 🚀

TypeScript Supabase PostgreSQL Node.js MCP Windsurf

🔥 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.

Supabase

📚 Tabla de Contenidos

🔧 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

  1. Instala las dependencias y compila el proyecto:

    npm install
    npm run build
    
  2. 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/postgres
    

    Reemplaza:

    • /path/to/dist/index.js con 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

  1. Abre Configuración de Cursor > Features > MCP

  2. Haz clic en el botón "+ Add New MCP Server"

  3. 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
  4. Compila el proyecto primero:

    npm install
    npm run build
    
  5. Obtén la ruta de tu Node.js:

    # On Mac/Linux
    which node
    # On Windows
    where node
    
  6. 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/postgres
    

    Reemplaza:

    • /path/to/node con la ruta real de tu Node.js (del paso 5)
    • /path/to/dist/index.js con 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
  7. 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:

  1. Una solicitud para aprobar/rechazar la llamada a la herramienta
  2. Los argumentos de la llamada a la herramienta (expandibles)
  3. 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

  1. 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"
          ]
        }
      }
    }
    
  2. 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
  3. Reemplaza en la configuración:

    • /path/to/node con la ruta real de tu Node.js
    • /path/to/dist/index.js con tu ruta real
    • [PROJECT-ID] con el ID de tu proyecto de Supabase
    • [PASSWORD] con la contraseña de tu base de datos
  4. 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

  1. Problemas con la Ruta de Node.js

    • Asegúrate de usar la ruta correcta de Node.js
    • En Mac/Linux: Usa which node para encontrar la ruta correcta
    • En Windows: Usa where node para encontrar la ruta correcta
    • Reemplaza /usr/local/bin/node con la ruta real de tu Node.js
  2. Problemas con las Rutas de Archivos

    • Usa rutas absolutas en lugar de rutas relativas
    • En Mac/Linux: Usa pwd en el directorio del proyecto para obtener la ruta completa
    • En Windows: Usa cd para obtener la ruta completa
    • Ejemplo: /Users/username/projects/supabase-mcp-server/dist/index.js
  3. 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
  4. Problemas de Permisos

    • Asegúrate de que el directorio dist exista (ejecuta npm run build)
    • Comprueba los permisos de archivos (chmod +x en sistemas Unix)
    • Ejecuta npm install con los permisos adecuados

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.

📄 Licencia


Hecho con ❤️ para la comunidad de Cursor

CursorSupabaseGitHub