SEAL MCP (sealnet-mcp)
Servidor MCP local para agentes de IA compartilharem e receberem arquivos criptografados no lado do cliente via SEAL, com links expiráveis e revogação.
Documentação
Instalação
npx -y sealnet-mcp
Sem configuração: a primeira inicialização cria sua própria identidade
Registre-o com seu host MCP, seja Claude Desktop, Claude Code, Cursor, Cline ou qualquer coisa compatível com MCP:
{
"seal": {
"command": "npx",
"args": ["-y", "sealnet-mcp"]
}
}
Os padrões de produção já vêm incorporados (backend api.seal.net, links em seal.net), portanto nenhuma variável de ambiente é necessária. Implantações self-hosted definem SEAL_MCP_BACKEND_URL e SEAL_MCP_PUBLIC_HOST.
Ferramentas
| Ferramenta | Finalidade |
|---|---|
| seal_share(path, mode?, expire?, to?, tier?) | Entrega ao usuário ou a outro agente um arquivo ou pasta de qualquer tamanho. Modo padrão: handoff. |
| seal_request(what, kind?, where_url?, wait?) | Solicita ao usuário um arquivo ou segredo: um diálogo do sistema no computador dele, ou uma página seal.net. Retorna um caminho de arquivo, nunca o valor. |
| seal_open(url, mode?, dir?) | Lê metadados (o padrão: nada é baixado, nenhum contador é usado), salva em disco (arquivo), ou retorna texto pequeno inline. |
| seal_list() | Lista apenas os seals criados por este servidor MCP. |
| seal_revoke(handle) | Revoga por handle opaco. O modelo nunca aprende o ID bruto do seal. |
Handoff, encaminhamento, solicitação
Handoff (padrão): o link de compartilhamento é entregue a você via área de transferência do sistema (ou um arquivo local 0600 em máquinas headless); a chave está dentro do link, não há senha separada. O resultado da ferramenta que o modelo vê contém apenas um handle opaco e um recibo, portanto ele não pode exfiltrar um link que nunca recebeu.
Encaminhamento (opt-in explícito): o modelo recebe um link que somente o detentor da chave X25519 fornecida pode abrir (outro agente imprime sua chave com sealnet-mcp pubkey ou seal keygen). Com proteções: TTL ≤ 30 minutos, leitura única, chave do destinatário obrigatória. Cada encaminhamento é gravado no log de auditoria criptografado.
Solicitação: o modelo pede a você um arquivo ou segredo com seal_request. No seu computador, um diálogo do sistema é aberto; em outros lugares, você recebe uma página seal.net mostrando os mesmos três emojis do chat. A resposta vai para um arquivo 0600, e o modelo recebe o caminho, nunca o valor.
Acima de 1 GB: um seal comporta 1 GB gratuitamente. Para um arquivo maior, seal_share retorna um link de pagamento para um nível (a partir de $9); você paga uma vez com cartão e o upload continua no mesmo seal.
Estado e subcomandos
Todo o estado fica criptografado (Argon2id → AES-256-GCM) em ~/.config/seal-mcp/state.json: sua identidade X25519, handles de seals com tokens de proprietário e o log de auditoria.
sealnet-mcp serve # default — stdio MCP server (what hosts run)
sealnet-mcp serve --ephemeral # keep nothing on disk
sealnet-mcp init # optional: set it up with a passphrase you choose
sealnet-mcp pubkey # print this server's X25519 public key
sealnet-mcp doctor # diagnose keychain / state perms / backend reachability
sealnet-mcp reset --force # wipe state + keychain entry
Sem keychain (um contêiner, CI): o servidor roda de forma efêmera, os handles permanecem até ele reiniciar, e a expiração do seal não depende disso. SEAL_MCP_PASSPHRASE mantém o estado em disco, um opt-in explícito que registra um aviso. Arquivos de frase secreta em texto puro são recusados por design.