Provides a comprehensive suite of tools for managing Supabase projects, enabling AI agents to execute SQL queries, apply database migrations, deploy Edge Functions, manage storage buckets, and access project logs and documentation.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Supabase MCP Servershow me the 5 most recent leads from the public schema"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
🚀 Supabase MCP Server - Deploy no Coolify
Este repositório contém a configuração completa para deploy do Supabase MCP Server no Coolify, permitindo que agentes de IA acessem e gerenciem projetos Supabase através do Model Context Protocol (MCP).
🌐 Servidor Ativo
URL do Servidor: http://hwg4ks4ooooc04wsosookoog.157.180.32.249.sslip.io/
📡 Endpoints Disponíveis
Root:
GET /- Informações do servidorHealth:
GET /health- Verificação de saúdeStatus:
GET /status- Status detalhadoTest:
GET /testePOST /test- Testes de conectividadeMCP:
POST /mcp- Endpoint principal para agentes de IA
🛠️ Tools Disponíveis para Agentes de IA
🗄️ Database Tools
list_tables
Lista todas as tabelas no banco de dados.
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_tables",
"arguments": {
"schemas": ["public"]
}
}
}execute_sql
Executa SQL raw no banco de dados.
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "execute_sql",
"arguments": {
"query": "SELECT * FROM leads WHERE phone_number = '5511999999999'"
}
}
}apply_migration
Aplica migrações DDL no banco.
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "apply_migration",
"arguments": {
"name": "create_new_table",
"query": "CREATE TABLE new_table (id SERIAL PRIMARY KEY, name VARCHAR(255))"
}
}
}📊 Gestão de Leads (Tabela: leads)
Consultar Leads
-- Buscar lead por telefone
SELECT * FROM leads WHERE phone_number = '5511999999999';
-- Buscar leads por cidade
SELECT * FROM leads WHERE city = 'São Paulo';
-- Buscar leads qualificados
SELECT * FROM leads WHERE qualification_status = 'QUALIFIED';Inserir/Atualizar Lead
-- Inserir novo lead
INSERT INTO leads (phone_number, name, city, state, client_type, additional_data)
VALUES ('5511999999999', 'João Silva', 'São Paulo', 'SP', 'RESIDENTIAL', '{"source": "whatsapp", "campaign": "energia"}');
-- Atualizar lead existente
UPDATE leads
SET name = 'João Silva Santos',
additional_data = additional_data || '{"last_contact": "2024-01-15"}'
WHERE phone_number = '5511999999999';Campos da Tabela leads:
id(SERIAL PRIMARY KEY)phone_number(VARCHAR, UNIQUE)name(VARCHAR)city(VARCHAR)state(VARCHAR)invoice_amount(NUMERIC)client_type(VARCHAR)qualification_status(VARCHAR, DEFAULT 'NEW')conversation_state(VARCHAR, DEFAULT 'INITIAL')additional_data(JSONB, DEFAULT '{}')created_at(TIMESTAMP)updated_at(TIMESTAMP)
📸 Gestão de Imagens (Tabelas: energy_bills, image_metadata)
Tabela energy_bills:
id(SERIAL PRIMARY KEY)lead_id(INTEGER, FK para leads)phone(VARCHAR)image_path(VARCHAR)extracted_data(TEXT)created_at(TIMESTAMP)
Tabela image_metadata:
id(UUID PRIMARY KEY)wamid(TEXT, UNIQUE)sender_phone(TEXT)storage_path(TEXT)mime_type(TEXT, DEFAULT 'image/jpeg')file_size_kb(INTEGER)original_caption(TEXT)lead_id(INTEGER, FK para leads)processing_status(TEXT, DEFAULT 'completed')error_message(TEXT)created_at(TIMESTAMPTZ)
🔍 Debug & Monitoring
get_logs
Obtém logs do projeto Supabase.
{
"jsonrpc": "2.0",
"id": 4,
"method": "tools/call",
"params": {
"name": "get_logs",
"arguments": {
"service": "api"
}
}
}get_advisors
Obtém avisos de segurança e performance.
{
"jsonrpc": "2.0",
"id": 5,
"method": "tools/call",
"params": {
"name": "get_advisors",
"arguments": {
"type": "security"
}
}
}📚 Documentação
search_docs
Busca na documentação Supabase.
{
"jsonrpc": "2.0",
"id": 6,
"method": "tools/call",
"params": {
"name": "search_docs",
"arguments": {
"graphql_query": "query { searchDocs(query: \"authentication\", limit: 5) { nodes { title href content } } }"
}
}
}⚡ Edge Functions
list_edge_functions
Lista todas as edge functions.
{
"jsonrpc": "2.0",
"id": 7,
"method": "tools/call",
"params": {
"name": "list_edge_functions",
"arguments": {}
}
}deploy_edge_function
Deploy de nova edge function.
{
"jsonrpc": "2.0",
"id": 8,
"method": "tools/call",
"params": {
"name": "deploy_edge_function",
"arguments": {
"name": "process-lead",
"files": [
{
"name": "index.ts",
"content": "Deno.serve(async (req) => { return new Response('Hello from edge function!') })"
}
]
}
}
}🗄️ Storage
list_storage_buckets
Lista buckets de storage.
{
"jsonrpc": "2.0",
"id": 9,
"method": "tools/call",
"params": {
"name": "list_storage_buckets",
"arguments": {}
}
}🎯 Casos de Uso Específicos
1. Gestão Completa de Lead
# 1. Buscar lead existente
curl -X POST http://hwg4ks4ooooc04wsosookoog.157.180.32.249.sslip.io/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "execute_sql",
"arguments": {
"query": "SELECT * FROM leads WHERE phone_number = '\''5511999999999'\''"
}
}
}'
# 2. Inserir novo lead se não existir
curl -X POST http://hwg4ks4ooooc04wsosookoog.157.180.32.249.sslip.io/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "execute_sql",
"arguments": {
"query": "INSERT INTO leads (phone_number, name, city, state, client_type, additional_data) VALUES ('\''5511999999999'\'', '\''Maria Silva'\'', '\''São Paulo'\'', '\''SP'\'', '\''RESIDENTIAL'\'', '\''{\"source\": \"whatsapp\", \"campaign\": \"energia\"}'\'') ON CONFLICT (phone_number) DO UPDATE SET name = EXCLUDED.name, updated_at = CURRENT_TIMESTAMP"
}
}
}'2. Processamento de Imagem de Conta de Energia
# 1. Salvar metadados da imagem
curl -X POST http://hwg4ks4ooooc04wsosookoog.157.180.32.249.sslip.io/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "execute_sql",
"arguments": {
"query": "INSERT INTO image_metadata (wamid, sender_phone, storage_path, mime_type, file_size_kb, original_caption, lead_id) VALUES ('\''wamid_123'\'', '\''5511999999999'\'', '\''energy_bills/2024/01/bill_123.jpg'\'', '\''image/jpeg'\'', 256, '\''Conta de energia'\'', 1)"
}
}
}'
# 2. Registrar conta processada
curl -X POST http://hwg4ks4ooooc04wsosookoog.157.180.32.249.sslip.io/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 4,
"method": "tools/call",
"params": {
"name": "execute_sql",
"arguments": {
"query": "INSERT INTO energy_bills (lead_id, phone, image_path, extracted_data) VALUES (1, '\''5511999999999'\'', '\''energy_bills/2024/01/bill_123.jpg'\'', '\''{\"valor\": 150.50, \"vencimento\": \"2024-01-15\", \"consumo\": 250}\'')"
}
}
}'3. Atualização de Dados Adicionais
# Atualizar dados adicionais do lead
curl -X POST http://hwg4ks4ooooc04wsosookoog.157.180.32.249.sslip.io/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 5,
"method": "tools/call",
"params": {
"name": "execute_sql",
"arguments": {
"query": "UPDATE leads SET additional_data = additional_data || '\''{\"last_bill_amount\": 150.50, \"last_bill_date\": \"2024-01-15\", \"processing_status\": \"completed\"}'\''::jsonb WHERE phone_number = '\''5511999999999'\''"
}
}
}'🔧 Configuração Técnica
Variáveis de Ambiente (Coolify)
Variável | Descrição | Exemplo |
| Token de acesso Supabase |
|
| Referência do projeto |
|
| Features habilitadas |
|
| Porta do servidor |
|
Features Habilitadas
✅
database- Acesso completo ao banco de dados✅
docs- Busca na documentação✅
functions- Deploy de edge functions✅
storage- Gerenciamento de storage✅
debug- Logs e debugging✅
development- Ferramentas de desenvolvimento
Configuração de Porta
Interna: 45678 (container)
Externa: Gerenciada automaticamente pelo Coolify
Acesso: Via proxy reverso do Coolify (sem configuração manual de porta)
🚀 Deploy no Coolify
Pré-requisitos
Conta no Coolify
Projeto Supabase ativo
Personal Access Token (PAT) do Supabase
Repositório Git configurado
Passos para Deploy
Clone o repositório no Coolify
Configure as variáveis de ambiente:
SUPABASE_ACCESS_TOKEN: Seu PAT do SupabasePROJECT_REF: ID do seu projeto SupabaseFEATURES:database,docs,functions,storage,debug,development
Deploy automático via Coolify
Verificação do Deploy
# Testar conectividade
curl http://hwg4ks4ooooc04wsosookoog.157.180.32.249.sslip.io/health
# Testar endpoint MCP
curl -X POST http://hwg4ks4ooooc04wsosookoog.157.180.32.249.sslip.io/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc": "2.0", "id": 1, "method": "tools/list", "params": {}}'🔒 Segurança
⚠️ Avisos Importantes
Modo Write: Este servidor está configurado para acesso completo (não read-only)
Permissões: O agente de IA terá acesso total ao banco de dados
Monitoramento: Recomenda-se monitorar logs regularmente
Backup: Mantenha backups regulares do banco de dados
Recomendações de Segurança
Use RLS (Row Level Security) no Supabase
Monitore logs regularmente
Configure alertas para operações críticas
Mantenha tokens seguros e rotacione periodicamente
🐛 Troubleshooting
Problemas Comuns
"Bad Gateway" no endpoint /mcp
Verifique se as variáveis de ambiente estão configuradas
Confirme se o projeto Supabase está ativo
Verifique logs do container no Coolify
"Unknown method"
Use métodos válidos:
tools/list,tools/callVerifique a sintaxe JSON-RPC 2.0
Erro de conexão com banco
Confirme se o
PROJECT_REFestá corretoVerifique se o
SUPABASE_ACCESS_TOKENé válidoTeste conectividade com o projeto Supabase
Logs Úteis
# Verificar status do servidor
curl http://hwg4ks4ooooc04wsosookoog.157.180.32.249.sslip.io/status
# Testar conectividade básica
curl http://hwg4ks4ooooc04wsosookoog.157.180.32.249.sslip.io/test📞 Suporte
Para suporte técnico ou dúvidas sobre o uso do MCP Server:
Verifique os logs do container no Coolify
Teste os endpoints de diagnóstico
Consulte a documentação Supabase
Use as tools de debug disponíveis
🎉 O Supabase MCP Server está funcionando plenamente e pronto para uso com agentes de IA!
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.