JFSecure (jfs mcp)
Permite que los agentes de IA usen tus claves API y contraseñas sin verlas: ejecuta comandos con secretos en el entorno y devuelve salida enmascarada, renderiza archivos .env que nunca lee; cada uso se aprueba en la aplicación de escritorio JFSecure.
Documentación
jfs — secretos para agentes de IA que nunca los ven
jfs es la línea de comandos y el servidor MCP de JFSecure, un gestor de contraseñas y
fragmentos sin conexión. Permite que Claude Code, Cursor o cualquier agente MCP use un secreto sin obtenerlo nunca — y tú
apruebas cada uso en la aplicación.
Este repositorio es la fuente de jfs en sí, para que puedas leer exactamente con qué habla un agente. Es un cliente ligero:
envía una solicitud JSON a través de una tubería local a la aplicación JFSecure en ejecución y desbloqueada e imprime la respuesta. Nunca
abre archivos de bóveda, nunca ve la contraseña de la bóveda y no tiene criptografía. (La aplicación es una descarga separada; jfs se incluye con ella).

Herramientas MCP
| Herramienta | Qué hace | Qué recibe el agente |
|---|---|---|
list_secrets | Lista nombres de secretos y claves, con la variable de entorno que cada clave se convierte | Solo nombres |
run_with_secrets | Ejecuta un comando con las claves de un secreto como variables de entorno (todas, algunas o una en stdin) | Código de salida y salida, cada valor enmascarado como [JFSecure: NAME] |
render_template | Rellena {{Secret:key}} en una plantilla y escribe el archivo (p. ej. .env) | Qué nombres se rellenaron |
No existe una herramienta "obtener", a propósito. Cada uso abre una ventana de aprobación en JFSecure que muestra el programa, el comando exacto y el secreto: permitir una vez, permitir 15 minutos o denegar. Para Claude Code, una aprobación de 15 minutos cubre solo ese comando y ese secreto.
# the agent called run_with_secrets(secret: "github", command: …)
exit code 0
variables set: TOKEN
--- stdout ---
token is [JFSecure: TOKEN]
{"login": "octocat", "plan": {"name": "pro"}}
Configuración
- Instala JFSecure y abre tu bóveda:
brew install theone55/jfsecure/jfsecure(macOS),scoop bucket add jfsecure https://github.com/theone55/scoop-jfsecure; scoop install jfsecure/jfsecure(Windows), o el instalador (Windows, macOS, Linux).jfsviene con él: en Windows, la aplicación lo coloca en PATH en su primer inicio (abre una nueva terminal después); en macOS (.dmg) y el AppImage de Linux usa Configuración → Instalar el comando jfs; Homebrew y el .deb lo instalan por ti. - Agrega el servidor MCP:
claude mcp add --scope user jfsecure -- jfs mcp
Cursor (~/.cursor/mcp.json), Claude Desktop, Windsurf, VS Code — cualquier cliente MCP stdio:
{ "mcpServers": { "jfsecure": { "command": "jfs", "args": ["mcp"] } } }
Más: https://secure.jfolio.org/agents
También como un paquete MCP (.mcpb, Windows / macOS / Linux) en la página de lanzamientos, y en el Registro MCP oficial como io.github.theone55/jfs.
Línea de comandos
jfs status is the app running and unlocked
jfs ls [secret|folder] names only, no approval needed
jfs get github/token print a value (approved in the app)
jfs copy github/token to the clipboard, nothing printed
jfs run github -- gh api user run with the secret's keys as env vars ($token → TOKEN); output masked when piped
jfs render .env.tpl -o .env fill {{Secret:key}} into a file
git config --global credential.helper "!jfs git-credential"
Guía completa: https://secure.jfolio.org/cli
Qué protege — y qué no
- El modelo nunca recibe un valor, por lo que no puede terminar en una transcripción o un registro.
- Un agente inyectado por prompt solo puede preguntar; tú ves el comando exacto.
- La tubería es solo del usuario de tu sistema operativo, y la aplicación identifica al llamante a través del sistema operativo, no por lo que dice.
- El enmascaramiento es un cinturón de seguridad, no una pared: un comando que apruebas aún puede enviar un valor. Lee el comando.
Compilación
cargo build --release # Rust stable; Windows, macOS, Linux
cargo test
La copia aquí sigue cada lanzamiento de JFSecure (version en Cargo.toml = la versión de la aplicación con la que se envió).
Los problemas y preguntas son bienvenidos aquí.
Licencia MIT.