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).

Claude Code asks, JFSecure shows the exact command, the agent gets the output with the token masked

Herramientas MCP

HerramientaQué haceQué recibe el agente
list_secretsLista nombres de secretos y claves, con la variable de entorno que cada clave se convierteSolo nombres
run_with_secretsEjecuta 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_templateRellena {{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

  1. 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). jfs viene 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.
  2. 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.