Guia

Conectar sistemas

Três formas de dar à IA acesso aos seus sistemas, que podem ser combinadas. Credenciais e drivers ficam sempre no seu servidor.


FormaMelhor paraEsforço
Banco de dados (somente leitura)Consultas, análises, cruzamentosMinutos, sem escrever funções
Servidores MCPFerramentas de terceiros (Gmail, Slack, GitHub, Notion…)Uma linha por ferramenta
Funções do seu sistemaAlterações que precisam seguir regras de negócio1 a 3 dias para as principais ações

1. Banco de dados (somente leitura)

Você passa uma função query feita com o seu driver. O Vardy lê a estrutura (tabelas e colunas, nunca dados) e cria <nome>_query, usada pela IA para consultar e agregar direto no banco.

typescript
// PostgreSQL (pg) com transação somente leitura await vardy.connectDatabase({ name: 'erp', dialect: 'postgres', query: async (sql, params) => { const c = await pool.connect() try { await c.query('BEGIN READ ONLY'); await c.query("SET LOCAL statement_timeout = '15s'") const r = await c.query(sql, params); await c.query('ROLLBACK'); return r.rows } finally { c.release() } }, tables: ['clientes', 'pedidos', 'chamados'], // opcional: só estas hiddenColumns: ['cpf', 'senha_hash'], // somem da estrutura e dos resultados descriptions: { 'pedidos.sit': 'A=aberto, P=pago, C=cancelado' }, notes: 'Valores em BRL. Datas em horário de Brasília.', }) // MySQL (mysql2): query: async (sql, p) => (await pool.query(sql, p))[0] // SQL Server (mssql): parâmetros @p1, @p2… // SQLite: query: async (sql, p) => db.prepare(sql).all(...p)
Use um usuário do banco que só tenha permissão de leitura. Essa é a garantia real. O Vardy ainda bloqueia qualquer comando que não seja SELECT, limita linhas (1.000) e tempo (15 s), e só permite as tabelas liberadas. hiddenColumns é uma conveniência: para proteger de verdade, use um usuário ou uma view sem acesso a essas colunas.

2. Servidores MCP

Qualquer servidor MCP vira um conjunto de funções <nome>_<ferramenta>. A IA continua trabalhando do jeito Vardy (um programa, resumos, regras). O MCP é só a tomada.

typescript
npm install @modelcontextprotocol/sdk // servidor local (processo) await vardy.connectMcp({ name: 'github', command: 'npx', args: ['-y', '@modelcontextprotocol/server-github'], env: { GITHUB_TOKEN } }) // servidor remoto await vardy.connectMcp({ name: 'crm', url: 'https://mcp.crm.com/mcp', headers: { Authorization: `Bearer ${token}` } })

Ferramentas marcadas como somente leitura viram read. As demais viram write: entram no plano e, se forem destrutivas ou não estiverem marcadas, pedem aprovação. Ajuste com include, exclude, kinds, approval e policies.

3. Funções do seu sistema

Para alterações, cadastre as funções que seu sistema já tem. O handler roda no seu processo, com as suas regras de acesso.

typescript
vardy.register({ name: 'cancelarPedido', kind: 'write', description: 'Cancela um pedido. Informe o id e o valor.', parameters: { type: 'object', required: ['id', 'total'], properties: { id: { type: 'string' }, total: { type: 'number' } } }, policy: { max_value: { field: 'total', limit: 500 } }, onViolation: 'escalate', // acima do limite → aprovação handler: ({ id }, { user, idempotencyKey }) => pedidos.cancelar(id, user, idempotencyKey), })
Escritas devem passar por funções do sistema (ou pela sua API), nunca direto no banco: assim estoque, nota fiscal, e-mails e demais regras de negócio continuam valendo.