SEAL MCP (sealnet-mcp)
Servidor MCP local para que agentes de IA compartan y reciban archivos cifrados del lado del cliente a través de SEAL, con enlaces de expiración y revocación.
Documentación
Instalación
npx -y sealnet-mcp
Sin configuración: el primer inicio crea su propia identidad
Regístralo con tu host MCP, ya sea Claude Desktop, Claude Code, Cursor, Cline o cualquier otro compatible con MCP:
{
"seal": {
"command": "npx",
"args": ["-y", "sealnet-mcp"]
}
}
Los valores predeterminados de producción están integrados (backend api.seal.net, enlaces en seal.net), por lo que no se necesitan variables de entorno. Los despliegues autoalojados configuran SEAL_MCP_BACKEND_URL y SEAL_MCP_PUBLIC_HOST.
Herramientas
| Herramienta | Propósito |
|---|---|
| seal_share(path, mode?, expire?, to?, tier?) | Entrega al usuario u otro agente un archivo o carpeta de cualquier tamaño. Modo predeterminado: traspaso. |
| seal_request(what, kind?, where_url?, wait?) | Solicita al usuario un archivo o secreto: un diálogo del sistema en su computadora, o una página de seal.net. Devuelve una ruta de archivo, nunca el valor. |
| seal_open(url, mode?, dir?) | Lee metadatos (el predeterminado: no descarga nada, no usa contador), guarda en disco (archivo), o devuelve texto pequeño en línea. |
| seal_list() | Lista solo los sellos creados por este servidor MCP. |
| seal_revoke(handle) | Revoca mediante un identificador opaco. El modelo nunca conoce el ID de sello en bruto. |
Traspaso, reenvío, solicitud
Traspaso (predeterminado): el enlace de compartición se entrega mediante el portapapeles del sistema (o un archivo local 0600 en máquinas sin interfaz); la clave está dentro del enlace, no hay contraseña separada. El resultado de la herramienta que ve el modelo contiene solo un identificador opaco y un recibo, por lo que no puede filtrar un enlace que nunca recibió.
Reenvío (opt-in explícito): el modelo recibe un enlace que solo el titular de la clave X25519 dada puede abrir (otro agente imprime su clave con sealnet-mcp pubkey o seal keygen). Con protecciones: TTL ≤ 30 minutos, lectura única, clave del destinatario requerida. Cada reenvío se escribe en el registro de auditoría cifrado.
Solicitud: el modelo te pide un archivo o secreto con seal_request. En tu computadora se abre un diálogo del sistema; en otros lugares obtienes una página de seal.net que muestra los mismos tres emojis que el chat. La respuesta se guarda en un archivo 0600, y el modelo obtiene su ruta, nunca el valor.
Más de 1 GB: un sello contiene 1 GB gratis. Para un archivo más grande, seal_share devuelve un enlace de pago para un nivel (desde $9); pagas una vez con tarjeta y la subida continúa en el mismo sello.
Estado y subcomandos
Todo el estado vive cifrado (Argon2id → AES-256-GCM) en ~/.config/seal-mcp/state.json: tu identidad X25519, identificadores de sello con tokens de propietario y el registro de auditoría.
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
Sin llavero (un contenedor, CI): el servidor se ejecuta de forma efímera, los identificadores viven hasta que se reinicia, y la expiración del sello no depende de ello. SEAL_MCP_PASSPHRASE mantiene el estado en disco en su lugar, un opt-in explícito que registra una advertencia. Los archivos de frase de contraseña en texto plano se rechazan por diseño.