Diwall MCP

Español
Descargar v0.0.1

Credenciales en el directorio cifrado

El servidor escribe una contraseña solo desde un archivo del directorio gocryptfs que usted abre, solo en el origen exacto que el archivo nombra, y el valor no aparece nunca en lo que recibe el modelo.

El directorio cifrado lo abre usted

El servidor lee y escribe solo en un directorio de un volumen gocryptfs: credenciales, el perfil dedicado del navegador, el diario, las capturas y las descargas. Usted abre y cierra el volumen; el servidor nunca lo monta ni lo desmonta, nunca ejecuta gocryptfs ni fusermount3, y nunca conoce su contraseña. Mientras está cerrado, el servidor se niega a escribir, y no tiene ningún lugar alternativo sin cifrar. Acepta el montaje solo como un montaje fuse.gocryptfs de su propio usuario, sin la opción allow_other.

mcp-server-diwall-browser-setup lo hace por usted, en una terminal suya, y create escribe el perfil del operador cuando ha visto el volumen montado. create --temporary crea un volumen en memoria para una prueba, destruido por close, por el apagado de la máquina o por el fin de su sesión (las sesiones de los sitios, el diario y las capturas se pierden con él); create crea un volumen duradero; open lo abre de nuevo; close detiene el navegador y después desmonta. Usted teclea la contraseña cuando gocryptfs se la pide; el asistente no la lee. Un volumen que ya existe, copiado de otra máquina o creado por Plasma Vault, se toma con create --crypt-dir y --mount-dir: no se inicializa, solo se abre con su contraseña. Ejecutado sin argumento, el comando dice lo que su máquina permite y el siguiente comando.

A mano, con el volumen creado una vez (gocryptfs -init, cuya clave maestra va en papel o en un gestor de contraseñas, nunca en un archivo de este disco), ábralo y, la primera vez, cree los directorios del servidor:

gocryptfs ~/Vaults/Main.enc ~/Vaults/Main
mkdir -m 700 ~/Vaults/Main/mcp-server-diwall-browser
mkdir -m 700 ~/Vaults/Main/mcp-server-diwall-browser/credentials
mkdir -m 700 ~/Vaults/Main/mcp-server-diwall-browser/browser-profile

Para cerrarlo, cierre primero el navegador dedicado, que mantiene archivos abiertos en su perfil, y después:

fusermount3 -u ~/Vaults/Main

Nunca fusermount3 -u -z: un desmontaje diferido desvincula el directorio mientras un proceso aún puede escribir por la ruta antigua, que lleva entonces al directorio sin cifrar que hay debajo. El directorio abierto no debe entrar en ninguna copia de seguridad: exclúyalo por el límite del sistema de archivos (rsync --one-file-system) o en su herramienta de copias; los archivos cifrados pueden copiarse en otro lugar.

Un archivo por sitio

Un archivo de credenciales contiene el nombre de usuario y la contraseña de un sitio, en credentials/, en modo 600. Su nombre está formado por letras minúsculas, dígitos, ., _ y -, como máximo 64 caracteres, y luego .json. Sus claves son allowed_origins (obligatoria), username y password (al menos una de las dos), y nada más:

{
  "allowed_origins": ["https://account.example.invalid"],
  "username": "alice",
  "password": "replace-with-the-real-password"
}

Escríbalo con su editor, nunca con echo ni con una redirección de la shell, que dejarían la contraseña en el historial de su shell:

vim ~/Vaults/Main/mcp-server-diwall-browser/credentials/account.json
chmod 600 ~/Vaults/Main/mcp-server-diwall-browser/credentials/account.json

El origen es exacto. Con este archivo, una página de https://account.example.invalid recibe la credencial; http://account.example.invalid, https://account.example.invalid:8443 y https://www.account.example.invalid no la reciben (credential_not_bound). Se rechaza un archivo que enumere un comodín.

Lo que hace el modelo y lo que ve

El modelo rellena un campo con una referencia, nunca con el valor: {"key": "password"}, o {"key": "password", "name": "account"} cuando varios archivos están ligados a un mismo origen. El servidor lee el archivo en su propio proceso en el momento de escribir, envía el valor al navegador por la conexión local de depuración, y el resultado dice <secret:password>. Un campo que el servidor considera sensible (contraseña, tarjeta, código) rechaza el texto plano con sensitive_value_refused, de modo que una contraseña no puede pasar por error por el contexto del modelo.

El servidor no lee las credenciales guardadas en un formato antiguo, un archivo JSON por sitio con nombres de host y sin esquema. Un comando que usted ejecuta en su propia shell convierte un archivo, o un directorio de ellos, dentro de su propio proceso y no imprime ningún valor; no conserva ningún segundo factor y no sobrescribe nada:

cd ~/mcp-server-diwall-browser
.venv/bin/python -m mcp_server_diwall_browser.credential_import \
  --source-dir ~/Vaults/Main/old-credentials

Se probó con archivos del conjunto de pruebas en un volumen simulado, no en un volumen gocryptfs real. Todas las opciones, todos los rechazos y las seis comprobaciones que hace están en la sección 6 de la guía del operador.