Supabase MCP Server
Enables AI agents to access and manage Supabase projects through the Model Context Protocol, supporting database operations, edge functions, storage, and documentation search. It provides a complete toolset for SQL execution, migration management, and real-time project debugging.
README
🚀 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 servidor - Health:
GET /health- Verificação de saúde - Status:
GET /status- Status detalhado - Test:
GET /testePOST /test- Testes de conectividade - MCP:
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 |
|---|---|---|
SUPABASE_ACCESS_TOKEN |
Token de acesso Supabase | sbp_... |
PROJECT_REF |
Referência do projeto | ynyvrnasvcxyvjzhzbwf |
FEATURES |
Features habilitadas | database,docs,functions,storage,debug,development |
PORT |
Porta do servidor | 45678 |
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/call - Verifique a sintaxe JSON-RPC 2.0
Erro de conexão com banco
- Confirme se o
PROJECT_REFestá correto - Verifique se o
SUPABASE_ACCESS_TOKENé válido - Teste 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!
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。