Voltar aos materiais
TUTORIALLOVABLEAGENTES-DE-IAMCP

SurrealDB com Lovable, Replit e MCP: vibe coding sem expor seus dados

Conecte agentes ao schema real do SurrealDB por MCP, com ambientes separados, permissões mínimas, limites e prompts que evitam improviso no back-end.

Por Mauro Mequelussi

9_MIN
SurrealDB com Lovable, Replit e MCP: vibe coding sem expor seus dados
Em resumo

Conecte agentes ao schema real do SurrealDB por MCP, com ambientes separados, permissões mínimas, limites e prompts que evitam improviso no back-end.

Lovable, Replit Agent, Cursor e outros agentes conseguem criar interfaces e integrações em velocidade impressionante. O risco aparece quando a IA inventa o modelo de dados, recebe acesso amplo demais ou altera produção sem que ninguém saiba exatamente o que aconteceu.

Desde a linha 3.1, o SurrealDB pode expor um servidor MCP próprio. Isso permite que uma ferramenta compatível leia o schema, consulte registros e execute operações por meio de ferramentas tipadas. Para o público de vibe coding, MCP é a ponte entre “a IA imagina como o banco funciona” e “a IA trabalha sobre um contrato que realmente existe”.

O que é MCP no SurrealDB?

MCP, ou Model Context Protocol, é um padrão para conectar agentes a ferramentas e fontes de contexto. No SurrealDB, o servidor MCP apresenta operações como listar tabelas, inspecionar schema, consultar, criar, atualizar, relacionar e excluir registros.

O ganho central é contexto verificável. Em vez de deduzir campos a partir de um print ou de cinco linhas de exemplo, o agente pode ler tipos, tabelas e relações publicados pela própria instância.

MCP não é uma permissão mágica
O protocolo descreve ferramentas. Quem limita o que elas podem fazer é a autenticação, o usuário conectado, as permissões do banco e os controles da plataforma que executa o agente.

Como SurrealDB, MCP e a ferramenta de IA se conectam

O fluxo tem quatro partes:

  1. seu banco mantém schema e dados;
  2. o endpoint MCP expõe ferramentas e recursos de schema;
  3. Lovable, Replit ou outro cliente autentica nessa conexão;
  4. o agente chama apenas as ferramentas necessárias para cumprir a tarefa.

Os tutoriais oficiais mostram esse modelo tanto com Lovable quanto com Replit Agent. A adaptação responsável para um produto brasileiro começa antes do botão “conectar”: começa criando um banco de desenvolvimento e um usuário dedicado.

O caminho seguro em três ambientes

AmbienteDadosAcesso do agenteObjetivo
desenvolvimentofictícios ou anonimizadosleitura e escrita limitadasconstruir e testar
stagingestrutura próxima da produçãooperações aprovadas e auditáveisvalidar migração e integração
produçãodados reaispreferencialmente leitura; escrita excepcionaldiagnóstico controlado

Conectar um agente diretamente à produção com usuário root mistura três riscos: acesso a dados pessoais, alteração irreversível e falta de separação entre experimento e operação.

Para um MVP, use SurrealDB Cloud ou uma instância local exposta temporariamente por túnel apenas com dados descartáveis. Um túnel é útil para teste, não é uma estratégia permanente de segurança.

[ CONTEÚDO_INTEGRAL_DISPONÍVEL ]

Continuar: como conectar agentes sem entregar o banco

CLIQUE PARA DESBLOQUEAR A LEITURA

Construindo aplicações robustas com arquitetura de alto nível e infraestrutura otimizada na edge do Cloudflare Workers com SurrealDB.

Segurança de dados e conformidade com privacidade desde o primeiro dia de código com tratamento de estados e sessões resilientes.

Métricas de performance para monitorar a experiência do usuário e otimizar custos operacionais em produção com dashboards estruturados.

Continuação liberada

Prepare o schema antes de chamar o agente

Agentes funcionam melhor quando o schema é explícito. O exemplo abaixo representa leads capturados por uma página de venda brasileira.

database/lead.surqlsurql
DEFINE TABLE lead SCHEMAFULL;
DEFINE FIELD nome ON lead TYPE string;
DEFINE FIELD email ON lead TYPE string
  ASSERT string::is_email($value);
DEFINE FIELD telefone_e164 ON lead TYPE option<string>;
DEFINE FIELD origem ON lead TYPE string
  ASSERT $value IN ['organico', 'anuncio', 'indicacao'];
DEFINE FIELD consentimento_em ON lead TYPE option<datetime>;
DEFINE FIELD criado_em ON lead TYPE datetime DEFAULT time::now();

DEFINE INDEX lead_email ON lead FIELDS email UNIQUE;

Agora a IA não precisa inventar phone, whatsapp, celular e numero em telas diferentes. Existe um campo definido, com intenção e tipo.

O campo de consentimento, sozinho, não prova conformidade com a LGPD. Ele apenas registra um fato que o fluxo de coleta precisa produzir corretamente. Texto de consentimento, finalidade, retenção e exclusão continuam sendo decisões do produto.

Dê ao agente o menor acesso possível

Uma conexão MCP deve usar credencial exclusiva. Não reutilize a senha administrativa do banco nem um token usado pela API da aplicação.

Organize o acesso por tarefa:

  • exploração: listar e inspecionar schema;
  • criação de interface: ler amostras fictícias;
  • importação: inserir apenas nas tabelas previstas;
  • manutenção: executar uma função revisada, não uma query arbitrária;
  • diagnóstico: leitura limitada, com resultados pequenos e sem dados sensíveis.

As ferramentas de leitura, como listagem e inspeção, são naturalmente menos arriscadas que delete, update ou uma query arbitrária. Ainda assim, até uma leitura pode vazar informações. Menor privilégio também vale para SELECT.

Dados brasileiros pedem cuidado explícito
CPF, endereço, telefone, informações financeiras, saúde e histórico de compra não devem entrar no contexto de um modelo externo apenas porque a integração permite. Use dados sintéticos e reduza campos em qualquer ferramenta de desenvolvimento.

Limites protegem o banco e o seu orçamento

O endpoint MCP do SurrealDB possui limites configuráveis de corpo, tempo de consulta, tamanho de resultado e quantidade de argumentos. Eles evitam que um agente insistente faça consultas longas ou despeje uma tabela inteira no contexto.

.env.developmentbash
SURREAL_MCP_QUERY_TIMEOUT_SECS=20
SURREAL_MCP_MAX_RESULT_BYTES=262144
SURREAL_HTTP_MAX_MCP_BODY_SIZE=4194304

Esses valores são exemplos, não uma configuração universal. Ajuste ao volume de dados e monitore recusas. Um resultado limitado pode exigir paginação; aumentar o teto indiscriminadamente só transfere o problema para memória, latência e custo de tokens.

Primeiro peça leitura, depois construção

O melhor fluxo de prompt separa descoberta, proposta e alteração.

Descobrir o schema antes de construirLovable ou Replit Agent

Use a conexão SurrealDB apenas em modo de leitura.

  1. Liste as tabelas disponíveis no namespace e banco selecionados.
  2. Inspecione o schema da tabela lead.
  3. Explique os tipos, campos opcionais e restrições encontradas.
  4. Proponha uma tela de listagem com busca e filtros.
  5. Não crie, atualize ou exclua registros nesta etapa.

Se algum campo necessário não existir, sinalize a lacuna. Não invente o campo na interface.

Depois de revisar o entendimento, peça a implementação visual. Só libere escrita quando houver um caso claro, como testar a criação de um lead fictício.

Um prompt para construir sem improvisar o back-end

Criar painel sobre dados existentesAgente de vibe coding

Construa um painel responsivo para os leads existentes no SurrealDB.

Contrato confirmado:

  • nome: string;
  • email: string único;
  • telefone_e164: string opcional;
  • origem: organico | anuncio | indicacao;
  • consentimento_em: datetime opcional;
  • criado_em: datetime.

Requisitos:

  • buscar dados pela conexão SurrealDB;
  • filtros por origem e período;
  • estado vazio, carregamento e erro;
  • telefone exibido no formato brasileiro, sem alterar o valor armazenado;
  • nenhuma credencial no código do navegador;
  • nenhuma alteração de schema;
  • não criar dados fictícios em produção.

Antes de escrever código, apresente o plano e identifique onde a conexão será executada.

O prompt deixa claro o contrato, a experiência e as restrições. Isso diminui o espaço para a ferramenta resolver um problema criando outro.

Funções são melhores que poder irrestrito

Para regras sensíveis, prefira uma função definida, testada e autorizada a permitir query arbitrária. Por exemplo, aceitar um convite, encerrar uma assinatura ou anonimizar uma conta envolve múltiplas validações. O agente pode invocar a operação; a regra permanece perto dos dados e sob revisão.

Essa separação também ajuda na auditoria. “O agente executou fn::aceitar_convite com estes parâmetros” é mais compreensível do que uma sequência variável de comandos gerados na hora.

O que revisar em todo diff gerado

  • o cliente conecta ao banco no servidor ou expõe credenciais no navegador?
  • queries usam parâmetros ou concatenam entrada do usuário?
  • o agente criou campos que não existem?
  • filtros e paginação acontecem no banco ou depois de baixar tudo?
  • estados de erro e acesso negado estão visíveis?
  • uma mutação pode ser repetida sem duplicar dados?
  • logs registram tokens ou dados pessoais?
  • o código diferencia desenvolvimento, staging e produção?

Vibe coding acelera a escrita. Revisão continua sendo o mecanismo que transforma escrita em engenharia.

Quando usar Lovable, Replit ou um IDE local?

SituaçãoOpção útil
criar uma interface visual rapidamenteLovable
gerar e executar uma aplicação completa hospedadaReplit Agent
trabalhar no repositório existente com mais controleIDE/agente local
explorar o banco visualmenteSurrealist

A escolha da interface não muda o princípio: schema real como contexto, usuário dedicado, ambiente separado e confirmação para operações destrutivas.

Perguntas frequentes sobre SurrealDB MCP

Preciso expor meu banco na internet?

Clientes em nuvem precisam alcançar o endpoint MCP por HTTPS. Uma instância gerenciada já oferece endpoint público; no desenvolvimento, um túnel temporário pode servir. IDEs locais podem usar uma integração local sem publicar a instância da mesma forma.

MCP torna qualquer operação segura?

Não. MCP torna a ferramenta descritível e interoperável. Segurança depende de autenticação, permissões, limites, aprovação humana, isolamento de ambiente e tratamento dos dados retornados.

Posso conectar a IA ao banco que já existe?

Sim, e esse é um dos casos mais úteis: o agente lê o schema existente e constrói sobre sua fonte de verdade. Comece somente com leitura e uma base sem dados sensíveis.

Isso substitui a API da aplicação?

Não necessariamente. MCP é excelente para agentes e ferramentas de desenvolvimento. A API continua útil para regras de negócio, integrações públicas, estabilidade de contrato, observabilidade e defesa em profundidade.

Do agente que adivinha ao agente que verifica

O salto de qualidade não acontece porque o agente ganhou acesso ao banco. Acontece porque ele ganhou contexto estruturado e limites claros.

Se você ainda está começando, leia primeiro SurrealDB para vibe coding: do primeiro schema a um produto real. Depois, conecte uma base de desenvolvimento, peça apenas a inspeção do schema e observe se a ferramenta entendeu o domínio antes de permitir qualquer escrita.

Do vibe ao produto. Com método.

Comece a construir

Quer transformar uma ideia em produto? O kit Sniper Apps reúne base, componentes e método para publicar com mais velocidade.

CONHECER_O_KIT →
Continue explorando
Ver todos os artigos →