Integrations
Provides tools for direct PostgreSQL database operations, including executing SQL queries, viewing database connections and statistics, listing extensions, and querying system catalogs.
Enables interaction with self-hosted Supabase instances, providing tools for database introspection, SQL query execution, schema management, migrations, auth user management, storage bucket operations, and TypeScript type generation.
Servidor MCP Supabase autoalojado
Descripción general
Este proyecto proporciona un servidor de Protocolo de Contexto de Modelo (MCP) diseñado específicamente para interactuar con instancias de Supabase alojadas en el propio servidor . Une los clientes MCP (como extensiones de IDE) y sus proyectos de Supabase locales o privados, lo que permite la introspección, la gestión y la interacción con la base de datos directamente desde su entorno de desarrollo.
Este servidor se construyó desde cero, aprovechando las lecciones aprendidas al adaptar el servidor MCP en la nube oficial de Supabase, para brindar una implementación mínima y enfocada, adaptada al caso de uso autohospedado.
Objetivo
El objetivo principal de este servidor es permitir que los desarrolladores que utilizan instalaciones de Supabase autohospedadas aprovechen las herramientas basadas en MCP para tareas como:
- Consulta de esquemas y datos de bases de datos.
- Gestión de migraciones de bases de datos.
- Inspeccionar las estadísticas y conexiones de la base de datos.
- Gestión de usuarios de autenticación.
- Interactuando con Supabase Storage.
- Generando definiciones de tipos.
Evita las complejidades del servidor en la nube oficial relacionadas con la gestión de múltiples proyectos y las API específicas de la nube, ofreciendo una experiencia optimizada para entornos autohospedados de un solo proyecto.
Características (herramientas implementadas)
El servidor expone las siguientes herramientas a los clientes MCP:
- Esquema y migraciones
list_tables
: enumera las tablas en los esquemas de la base de datos.list_extensions
: enumera las extensiones PostgreSQL instaladas.list_migrations
: enumera las migraciones de Supabase aplicadas.apply_migration
: aplica un script de migración SQL.
- Operaciones y estadísticas de bases de datos
execute_sql
: ejecuta una consulta SQL arbitraria (a través de RPC o conexión directa).get_database_connections
: muestra las conexiones de base de datos activas (pg_stat_activity
).get_database_stats
: recupera las estadísticas de la base de datos (pg_stat_*
).
- Configuración del proyecto y claves
get_project_url
: Devuelve la URL de Supabase configurada.get_anon_key
: Devuelve la clave anónima de Supabase configurada.get_service_key
: Devuelve la clave de rol de servicio Supabase configurada (si se proporciona).verify_jwt_secret
: comprueba si el secreto JWT está configurado y devuelve una vista previa.
- Herramientas de desarrollo y extensión
generate_typescript_types
: genera tipos TypeScript a partir del esquema de base de datos.rebuild_hooks
: intenta reiniciar el trabajadorpg_net
(si se utiliza).
- Gestión de usuarios autorizados
list_auth_users
: enumera los usuarios deauth.users
.get_auth_user
: recupera detalles de un usuario específico.create_auth_user
: crea un nuevo usuario (requiere acceso directo a la base de datos, manejo de contraseñas inseguro).delete_auth_user
: elimina un usuario (requiere acceso directo a la base de datos).update_auth_user
: actualiza los detalles del usuario (requiere acceso directo a la base de datos, manejo inseguro de contraseñas).
- Información sobre almacenamiento
list_storage_buckets
: enumera todos los depósitos de almacenamiento.list_storage_objects
: enumera los objetos dentro de un depósito específico.
- Inspección en tiempo real
list_realtime_publications
: enumera las publicaciones de PostgreSQL (a menudosupabase_realtime
).
(Nota: get_logs
se planeó inicialmente, pero se omitió debido a complejidades de implementación en un entorno auto hospedado).
Configuración e instalación
Instalación mediante herrería
Para instalar automáticamente el servidor MCP autohospedado Supabase para Claude Desktop a través de Smithery :
Prerrequisitos
- Node.js (versión 18.x o posterior recomendada)
- npm (generalmente incluido con Node.js)
- Acceso a su instancia de Supabase autohospedada (URL, claves, cadena de conexión a base de datos potencialmente directa).
Pasos
- Clonar el repositorio:Copy
- Instalar dependencias:Copy
- Construir el proyecto:Esto compila el código TypeScript a JavaScript en el directorioCopy
dist
.
Configuración
El servidor requiere detalles de configuración para su instancia de Supabase. Estos pueden proporcionarse mediante argumentos de la línea de comandos o variables de entorno. Los argumentos de la CLI tienen prioridad.
Requerido:
--url <url>
oSUPABASE_URL=<url>
: La URL HTTP principal de su proyecto Supabase (por ejemplo,http://localhost:8000
).--anon-key <key>
oSUPABASE_ANON_KEY=<key>
: La clave anónima de su proyecto Supabase.
Opcional (pero recomendado/obligatorio para ciertas herramientas):
--service-key <key>
oSUPABASE_SERVICE_ROLE_KEY=<key>
: La clave del rol de servicio de su proyecto Supabase. Necesaria para operaciones que requieren privilegios elevados, como intentar crear automáticamente la función auxiliarexecute_sql
si no existe.--db-url <url>
oDATABASE_URL=<url>
: La cadena de conexión directa de PostgreSQL para su base de datos Supabase (p. ej.,postgresql://postgres:password@localhost:5432/postgres
). Necesaria para herramientas que requieren acceso directo a la base de datos o transacciones (apply_migration
, herramientas de autenticación, herramientas de almacenamiento, consultaspg_catalog
, etc.).--jwt-secret <secret>
oSUPABASE_AUTH_JWT_SECRET=<secret>
: El secreto JWT de su proyecto Supabase. Necesario para herramientas comoverify_jwt_secret
.--tools-config <path>
: Ruta a un archivo JSON que especifica las herramientas que se habilitarán (lista blanca). Si se omite, se habilitan todas las herramientas definidas en el servidor. El archivo debe tener el formato{"enabledTools": ["tool_name_1", "tool_name_2"]}
.
Notas importantes:
- Función auxiliar
execute_sql
: Muchas herramientas utilizan la funciónpublic.execute_sql
de su base de datos Supabase para una ejecución SQL segura y eficiente mediante RPC. El servidor intenta comprobar esta función al iniciarse. Si no está presente y se proporcionan unaservice-key
(oSUPABASE_SERVICE_ROLE_KEY
) ydb-url
(oDATABASE_URL
), intentará crear la función y otorgar los permisos necesarios. Si la creación falla o no se proporcionan las claves, las herramientas que dependen únicamente de RPC podrían fallar. - Acceso directo a la base de datos: las herramientas que interactúan directamente con esquemas privilegiados (
auth
,storage
) o catálogos del sistema (pg_catalog
) generalmente requieren queDATABASE_URL
esté configurado para una conexiónpg
directa.
Uso
Ejecute el servidor utilizando Node.js, proporcionando la configuración necesaria:
El servidor se comunica mediante la entrada/salida estándar (stdio) y está diseñado para ser invocado por una aplicación cliente MCP (por ejemplo, una extensión IDE como Cursor). El cliente se conectará al flujo stdio del servidor para listar y llamar a las herramientas disponibles.
Ejemplos de configuración de cliente
A continuación se muestran ejemplos de cómo configurar clientes MCP populares para utilizar este servidor autohospedado.
Importante:
- Reemplace los marcadores de posición como
<your-supabase-url>
,<your-anon-key>
,<your-db-url>
,<path-to-dist/index.js>
etc., con sus valores reales. - Asegúrese de que la ruta al archivo del servidor compilado (
dist/index.js
) sea correcta para su sistema. - Tenga cuidado al almacenar claves confidenciales directamente en archivos de configuración, especialmente si están asignadas al control de versiones. Considere usar variables de entorno o métodos más seguros si el cliente lo admite.
Cursor
- Cree o abra el archivo
.cursor/mcp.json
en la raíz de su proyecto. - Agregue la siguiente configuración:Copy
Visual Studio Code (Copiloto)
VS Code Copilot permite utilizar variables de entorno rellenadas mediante entradas solicitadas, lo que es más seguro para las claves.
- Cree o abra el archivo
.vscode/mcp.json
en la raíz de su proyecto. - Agregue la siguiente configuración:Copy
- Al usar Copilot Chat en modo Agente (@workspace), debería detectar el servidor. Se le solicitará que ingrese los detalles (URL, claves, ruta) al iniciar el servidor por primera vez.
Otros clientes (Windsurf, Cline, Claude)
Adapte la estructura de configuración que se muestra para Cursor o la documentación oficial de Supabase, reemplazando el command
y args
con el comando node
y los argumentos para este servidor, similar al ejemplo de Cursor:
Consulte la documentación específica de cada cliente sobre dónde colocar el archivo de configuración mcp.json
o equivalente.
Desarrollo
- Lenguaje: TypeScript
- Compilación:
tsc
(compilador de TypeScript) - Dependencias: administradas a través de
npm
(package.json
) - Bibliotecas principales:
@supabase/supabase-js
,pg
(node-postgres),zod
(validación),commander
(argumentos CLI),@modelcontextprotocol/sdk
(marco de servidor MCP).
Licencia
Este proyecto está licenciado bajo la Licencia MIT. Consulte el archivo de LICENCIA para más detalles.
You must be authenticated.
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Tools
Un servidor de protocolo que permite la interacción con instancias de Supabase autohospedadas directamente desde entornos de desarrollo, lo que permite la introspección de la base de datos, la gestión de migraciones, la autenticación de usuarios y el almacenamiento a través de clientes MCP como extensiones IDE.
Related MCP Servers
- AsecurityFlicenseAqualityA Model Context Protocol (MCP) server that provides programmatic access to the Supabase Management API. This server allows AI models and other clients to manage Supabase projects and organizations through a standardized interface.Last updated -88427JavaScript
- AsecurityAlicenseAqualityAn MCP server that provides tools for interacting with Supabase databases, storage, and edge functions.Last updated -1441JavaScriptMIT License
- -security-license-qualityAn MCP server utilizing Supabase to provide memory and knowledge graph storage, enabling multiple Claude instances to share and manage data with database-level locking for safe concurrent access.Last updated -JavaScript
- AsecurityAlicenseAqualityThis server enables interaction with Supabase PostgreSQL databases through the MCP protocol, allowing seamless integration with Cursor and Windsurf IDEs for secure and validated database management.Last updated -11649PythonApache 2.0