← vbss.io

VBSS MCPs

Servidores MCP para agentes de IA consultarem bancos e Azure sem poder escrever.

Servidores MCP reutilizáveis: MongoDB, Postgres, MySQL e Azure em modo somente leitura, mais um de Excel.

Reusable MCP servers: read-only MongoDB, Postgres, MySQL and Azure, plus an Excel one.

JavaScript · MCP · MongoDB · PostgreSQL · MySQL | Ao vivo

Código no GitHub

Sobre

Dar a um agente acesso a banco de produção é arriscado quando a ferramenta deixa escrever. Aqui a escrita nem existe como ferramenta.

São 5 servidores: MongoDB, Postgres, MySQL e Azure em somente leitura, mais um de Excel que lê e escreve planilhas. O de MongoDB é usado no dia a dia dos produtos VBSS.

Telas

README com os servidores e como rodar cada um.
README com os servidores e como rodar cada um.
O validador do Postgres: só SELECT, WITH, EXPLAIN e SHOW, um comando por vez.
O validador do Postgres: só SELECT, WITH, EXPLAIN e SHOW, um comando por vez.

Pontos fortes

Duas camadas no SQL

A query passa por uma lista de comandos permitidos e roda dentro de uma transação READ ONLY que sempre termina em rollback. Um WITH que altera dado é barrado pelo próprio banco.

Vários bancos num processo

Cada servidor atende várias organizações, escolhidas por nome e configuradas por variável de ambiente.

Saída do tamanho do contexto

O limite padrão é de 1000 linhas ou documentos por consulta, para não estourar o contexto do agente. No Mongo, $out e $merge são bloqueados.

Azure sem portal

Recursos, custos por serviço e por grupo, métricas e redes, com um service principal só de leitura.

Funcionalidades

  • mongodb-readonly: 11 ferramentas, de listar coleções a aggregate
  • postgres-readonly: 10 ferramentas, com schemas, chaves estrangeiras e consulta livre
  • mysql-readonly: 9 ferramentas
  • azure-readonly: 12 ferramentas de recursos, custos e métricas
  • excel: 6 ferramentas para ler, escrever e criar planilhas
  • Compatível com Cosmos DB no servidor de MongoDB

Como foi feito

Arquitetura

Monorepo com npm workspaces. Cada servidor usa o SDK oficial de MCP via stdio, com validação de entrada em zod.

Somente leitura por padrão

A ferramenta de escrita não existe. Não depende do agente obedecer a uma instrução.

O banco garante, não o texto

Nos servidores SQL a transação READ ONLY fica atrás da validação da query. Se a validação deixar passar algo, o banco recusa.

Código

{
  "mcpServers": {
    "mongodb-readonly": {
      "command": "node",
      "args": ["packages/mongodb-readonly/src/index.js"],
      "env": {
        "MONGO_ORGS": "Acme",
        "MONGO_ACME_URL": "mongodb://readonly:***@host:27017/acme",
        "MONGO_ACME_LABEL": "Acme"
      }
    }
  }
}

Configuração no .mcp.json, com uma organização de exemplo.