SafeGrd
Verifique seus backups e faça um antes de uma migração arriscada. O SafeGrd faz backup de PostgreSQL, MySQL, MongoDB, SQLite, arquivos e caixas de e-mail, criptografados e bloqueados, e os restaura em Fire Drills para provar que funcionam. Um agente pode ler backups e drills e solicitar um backup ou um drill; nenhuma ferramenta exclui um backup.
Servidor MCP hospedado
npx add-mcp 'https://safegrd.dev/mcp'Instala no Claude Code, Codex, Cursor e outros
Documentação
Agentes de IA (MCP)
O SafeGrd fala o Model Context Protocol, então um agente de codificação pode verificar seus backups, fazer um antes de uma migração arriscada e comprovar que ele restaura, sem que ninguém abra o console. Existem dois servidores. O remoto lê o estado de cada host e solicita um backup ou um drill. Ele nunca armazena dados nem descriptografa nada. O local roda em um host e faz backup, verifica e restaura com a configuração e a chave desse host.
O servidor remoto está incluído em todos os planos pagos; no plano gratuito, ele responde com 402 e o motivo. O servidor local faz parte da CLI e não requer plano.
| Servidor | Onde roda | O que pode fazer |
|---|---|---|
| Remoto | https://safegrd.dev/mcp | Ler organizações, projetos, superfícies, snapshots e drills; solicitar um backup ou um Fire Drill agora; ler uso de armazenamento e estatísticas de drill. |
| Local | safegrd mcp, no host | Status, list, doctor, backup, verificação, restauração em um destino novo ou vazio e exportação. |
O que um agente não pode fazer
Nenhuma ferramenta exclui um snapshot, altera onde os backups são armazenados, rotaciona uma chave ou muda cobrança ou membros. O servidor recusa essas ações para um token de acesso pessoal em todas as rotas da API, então um token não pode fazê-las via REST também. Um snapshot sob Object Lock em modo de conformidade não pode ser excluído antes que o bloqueio expire, por ninguém. Toda ferramenta é marcada como não destrutiva em suas anotações MCP, e as ferramentas de leitura são marcadas como somente leitura, para que um cliente possa executá-las sem perguntar a cada vez.
Cada request_backup e request_drill, e as mesmas solicitações feitas pelo console, são listados na página Tokens do console com a pessoa, o nome do token, se veio via MCP e se foi aceito.
O servidor remoto
Crie um token de acesso pessoal no console em Tokens e adicione o servidor ao seu cliente. No Claude Code:
claude mcp add --transport http safegrd https://safegrd.dev/mcp \
--header "Authorization: Bearer sg_pat_..."
Ou instale o plugin do Claude Code, que solicita o token e adiciona habilidades que fazem backup e executam um Fire Drill antes de uma mudança arriscada, além de relatar a saúde dos backups. A fonte está em safegrd/agent-plugins.
/plugin marketplace add safegrd/agent-plugins
/plugin install safegrd@safegrd
Qualquer cliente que suporte o transporte Streamable HTTP e um cabeçalho bearer funciona da mesma forma. O servidor é stateless: cada chamada é verificada contra o token como ele está no momento, então revogar o token no console interrompe o agente na próxima chamada.
Outros clientes
No Cursor, adicione isto a ~/.cursor/mcp.json, ou a .cursor/mcp.json em um projeto:
{
"mcpServers": {
"safegrd": {
"url": "https://safegrd.dev/mcp",
"headers": { "Authorization": "Bearer sg_pat_..." }
}
}
}
No VS Code, adicione isto a .vscode/mcp.json. O VS Code solicita o token na primeira vez que inicia o servidor e o armazena, então o arquivo não contém segredo:
{
"inputs": [
{ "type": "promptString", "id": "safegrd-token",
"description": "SafeGrd personal access token", "password": true }
],
"servers": {
"safegrd": {
"type": "http",
"url": "https://safegrd.dev/mcp",
"headers": { "Authorization": "Bearer ${input:safegrd-token}" }
}
}
}
O SafeGrd está listado no MCP Registry como dev.safegrd/safegrd, que clientes que navegam pelo registro instalam a partir dele, e no Smithery como safegrd/safegrd. No Smithery, insira o valor completo do cabeçalho, Bearer sg_pat_..., no campo x-safegrd-token.
| Ferramenta | Argumentos | O que faz |
|---|---|---|
| list_organizations | Organizações às quais o token pertence, com plano e cotas. | |
| list_projects | org_id | Projetos de uma organização, como produção e staging. |
| list_surfaces | project_id, limit, cursor (todos opcionais) | Bancos de dados, árvores de arquivos, caixas de correio e hosts, com último backup, drill e estado de alerta. |
| get_surface | node_id | Uma superfície ou host. |
| list_snapshots | node_id; limit, cursor (opcional) | Snapshots de uma superfície, do mais novo ao mais antigo: quando, tamanho, bloqueado até quando e se um drill os verificou. |
| get_snapshot | snapshot_id | Metadados registrados de um snapshot: digests, contagens, bloqueio, veredito do Threat Shield. |
| list_drills | node_id; limit, cursor (opcional) | Relatórios de Fire Drill de uma superfície, do mais novo ao mais antigo, com suas asserções e assinaturas. |
| request_backup | node_id | Solicitar um backup agora. Recusado dentro de uma hora do último backup, porque cada um é bloqueado e armazenado até expirar. |
| request_drill | node_id | Solicitar um Fire Drill do snapshot mais recente agora. Contabilizado na cadência de drill do plano. |
| storage_usage | org_id | Armazenamento hospedado: se é oferecido, a cota e quanto está bloqueado. |
| drill_stats | org_id | Taxa de aprovação e resultados de Fire Drill em uma organização. |
O servidor remoto não executa nada por conta própria. Em uma superfície que seu host faz backup, uma solicitação é captada pelo daemon no próximo check-in, então o host precisa do daemon em execução para request_backup e request_drill fazerem algo. Uma superfície configurada como Back up on SafeGrd ou Drill on SafeGrd no console é enfileirada no SafeGrd e não precisa de daemon. Uma recusa retorna como erro de ferramenta nas próprias palavras da API, para que o agente possa explicar o motivo.
As três ferramentas de listagem retornam {"items": [...], "next_cursor": "..."}, 25 por vez, a menos que limit diga o contrário (até 200). Passe next_cursor de volta como cursor para a próxima página; ele está ausente na última.
O servidor local
safegrd mcp serve o SafeGrd deste host via stdio, para um agente executando na mesma máquina. No Claude Code:
claude mcp add safegrd -- safegrd mcp
Em um host que executa a CLI como contêiner, execute a mesma imagem com o volume que contém sua configuração e chave, aquela com a qual você se registrou:
claude mcp add safegrd -- docker run -i --rm \
-v safegrd:/home/safegrd/.safegrd ghcr.io/safegrd/cli mcp
Cada ferramenta executa o comando CLI de mesmo nome com a configuração deste host e recusa o que o comando recusa. Mais dois limites:
- Nenhuma ferramenta aceita chave privada. A
key_pathdo host é usada, então sua chave nunca passa pelo contexto de um agente. - restore grava apenas em um diretório novo ou vazio, ou em um banco de dados que a restauração confirma estar vazio. Um agente não pode restaurar sobre dados.
| Ferramenta | Argumentos | Executa |
|---|---|---|
| status | safegrd status | |
| list | safegrd list | |
| doctor | safegrd doctor | |
| backup | surface ou files (opcional) | safegrd backup --surface para uma superfície da configuração do host, --files para uma árvore de diretórios, ou o banco de dados configurado |
| verify | snapshot_id, sandbox_url (opcional) | safegrd verify --dry-run, ou um drill completo em um banco de dados vazio |
| restore | snapshot_id, e target_dir ou target_url | safegrd restore em um destino vazio |
| export | to_dir, ou to_bucket e to_endpoint | safegrd export, ainda criptografado |
A API REST por baixo
Toda ferramenta remota é uma chamada às mesmas rotas /api/v1 que o console usa. As rotas que um agente precisa estão descritas em /openapi.json, e /llms.txt aponta um agente para estes documentos. As ferramentas do servidor remoto estão listadas sem token em /.well-known/mcp/server-card.json.