Codea Bien Logo
Supabase + AI Agents: MCP Server y automatización inteligente
Supabase

Supabase + AI Agents: MCP Server y automatización inteligente

Kevin Dávila

supabase mcp serverai agentsclaudecursordatabase automation

Le pedí a Claude que revisara las tablas de mi proyecto de Supabase y me dijera cuáles no tenían RLS. Sin copiar el schema, sin pegar SQL. Treinta segundos después tenía el listado y una migración lista para aplicar. Yo solo había escrito una frase.

Eso hace el MCP Server de Supabase: conecta tu base de datos con agentes como Claude o Cursor para que trabajen con tus datos reales. En este post lo vas a configurar paso a paso y verás hasta dónde llega: leer tu schema, hacer queries y generar migraciones.

Qué es MCP Server

MCP (Model Context Protocol) es un protocolo que permite a los agentes de AI comunicarse con herramientas externas. El MCP Server de Supabase conecta tu base de datos con agentes como:

  • Claude (Anthropic)

  • Cursor

  • GitHub Copilot

  • Cualquier agente compatible con MCP

Esto significa que puedes preguntarle a tu agente de AI sobre tu base de datos, y él puede:

  • Leer el schema de tus tablas

  • Hacer queries SELECT

  • Generar migraciones SQL

  • Escribir código que coincide con tu DB

Configurar el MCP Server

Instalar

// terminal
npm install -g @supabase/mcp-server-supabase

Obtener tu Access Token

  1. Ve a supabase.com/dashboard/account/tokens

  2. Crea un nuevo token con permisos de lectura

  3. Copia el token

Configurar en Claude Desktop

Edita ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "supabase": {
      "command": "npx",
      "args": [
        "-y",
        "@supabase/mcp-server-supabase@latest",
        "--access-token",
        "TU_ACCESS_TOKEN"
      ]
    }
  }
}

Configurar en Cursor

En .cursor/mcp.json:

{
  "mcpServers": {
    "supabase": {
      "command": "npx",
      "args": [
        "-y",
        "@supabase/mcp-server-supabase@latest",
        "--access-token",
        "TU_ACCESS_TOKEN"
      ]
    }
  }
}

Configurar proyecto específico

Para limitar el MCP a un proyecto específico:

{
  "mcpServers": {
    "supabase": {
      "command": "npx",
      "args": [
        "-y",
        "@supabase/mcp-server-supabase@latest",
        "--access-token",
        "TU_ACCESS_TOKEN",
        "--project-ref",
        "tu-project-ref"
      ]
    }
  }
}

Qué puede hacer el MCP Server

Leer el schema

Puedes preguntar:

  • "¿Qué tablas tengo en mi base de datos?"

  • "Muéstrame el schema de la tabla users"

  • "¿Qué columnas tiene la tabla orders?"

El agente ejecuta list_tables y list_extensions para obtener esta información.

Hacer queries

Puedes pedir:

  • "¿Cuántos usuarios tengo?"

  • "Muéstrame los últimos 10 pedidos"

  • "¿Qué productos están sin stock?"

El agente ejecuta execute_sql para hacer queries SELECT.

Generar código

Puedes pedir:

  • "Genera un componente Angular para mostrar usuarios"

  • "Crea una función para insertar pedidos"

  • "Escribe el servicio de Supabase para esta tabla"

El agente usa el schema para generar código tipado que coincide con tu base de datos.

Generar migraciones

Puedes pedir:

  • "Necesito una tabla para comentarios con relación a posts"

  • "Agrega un campo de email_verified a la tabla users"

  • "Crea un índice en created_at para la tabla orders"

El agente genera SQL de migración basado en tu schema actual.

Ejemplo práctico

Pregunta 1: "¿Qué tablas tengo?"

El agente ejecuta:

list_tables → Devuelve lista de tablas con columnas y tipos

Respuesta: "Tienes 5 tablas:

  • users (id, email, name, created_at)

  • tasks (id, user_id, title, completed, created_at)

  • projects (id, name, owner_id)

  • project_members (id, project_id, user_id, role)

  • comments (id, task_id, user_id, content, created_at)"

Pregunta 2: "¿Cuántas tareas completadas hay?"

El agente ejecuta:

SELECT COUNT(*) FROM tasks WHERE completed = true

Respuesta: "Hay 47 tareas completadas."

Pregunta 3: "Genera un servicio para manejar tareas"

El agente genera:

// src/services/task.service.ts
import { supabase } from '../lib/supabase'

export interface Task {
  id: string
  user_id: string
  title: string
  completed: boolean
  created_at: string
}

export class TaskService {
  async getTasks(userId: string) {
    const { data, error } = await supabase
      .from('tasks')
      .select('*')
      .eq('user_id', userId)
      .order('created_at', { ascending: false })

    if (error) throw error
    return data as Task[]
  }

  async createTask(userId: string, title: string) {
    const { data, error } = await supabase
      .from('tasks')
      .insert({ user_id: userId, title })
      .select()
      .single()

    if (error) throw error
    return data as Task
  }

  async toggleTask(taskId: string, completed: boolean) {
    const { data, error } = await supabase
      .from('tasks')
      .update({ completed })
      .eq('id', taskId)
      .select()
      .single()

    if (error) throw error
    return data as Task
  }
}

Seguridad

¿Es seguro dar acceso a mi base de datos?

El MCP Server usa tu access token de Supabase, que tiene los mismos permisos que tu cuenta. Recomendaciones:

  • Usa un token con permisos de solo lectura si no necesitas writes

  • Limita a un proyecto específico con --project-ref

  • No compartas el token

¿Puede el agente modificar mi base de datos?

Por defecto, el MCP Server solo permite queries SELECT. Para writes:

  • Necesitas habilitar explícitamente los permisos de escritura

  • Las migraciones generadas son solo SQL - no se ejecutan automáticamente

Casos de uso reales

1. Desarrollo rápido

Pide al agente que genere componentes, servicios, y APIs basados en tu schema existente.

2. Documentación

Pide al agente que documente tu schema, relaciones, y políticas de RLS.

3. Debugging

Pide al agente que investigue problemas:

  • "¿Por qué esta query es lenta?"

  • "¿Hay datos inconsistentes en la tabla X?"

  • "¿Qué políticas de RLS aplican a esta tabla?"

4. Migraciones

Pide al agente que genere migraciones para nuevas features:

  • "Necesito un sistema de comentarios con likes"

  • "Agrega soporte para tags en las tareas"

Referencia de Codea Bien

Para más sobre AI agents y Angular, revisa: RAG en Angular: Búsqueda inteligente con embeddings y Gemini

Qué sigue

En el próximo artículo vamos con De MVP a Producción: cómo llevar tu app de Supabase del desarrollo al mundo real. Vamos a ver performance, seguridad, monitoring, y costos.