WorkspaceGuard MCP
WorkspaceGuard MCP
WorkspaceGuard MCP es un servidor MCP local y multiplataforma que permite a ChatGPT o a un cliente MCP operar sobre un workspace designado. El proyecto se ha construido desde cero tras investigar FileMCP, conservando los principios de seguridad útiles y reduciendo las partes que aún no son necesarias para la primera versión.
¿Para qué sirve?
Listar, leer por archivo o por líneas, buscar por nombre y buscar por contenido.
Escribir archivos de forma atómica, con soporte de
dry_runyexpected_sha256para evitar sobrescribir cambios más recientes."Eliminar" moviendo a
.workspaceguard/trash, con posibilidad de restauración manual.Leer el estado de Git, el log y el diff sin activar shell.
Ejecutar terminal opcionalmente mediante
program + args, sin concatenar cadenas a través del shell y permitiendo solo ejecutables en la allowlist.Usar mediante
stdioo MCP Streamable HTTP en127.0.0.1con token.Registrar auditoría JSONL sin guardar el contenido de los archivos ni los parámetros completos de los comandos.
Related MCP server: Kastor
Principales mejoras
Tema | FileMCP original | WorkspaceGuard MCP |
Núcleo multiplataforma | Swift y C# en implementación paralela | Un único núcleo TypeScript para macOS/Windows/Linux |
Permisos | Archivo/Git; shell activado o desactivado |
|
Ejecución de comandos | Cadena de shell ( | Ejecutable + array de args, |
Escritura de archivos | Escritura/append, con reemplazo atómico | Reemplazo atómico + dry-run + bloqueo optimista SHA-256 |
Eliminación | Borrado real de archivos/directorios | Movimiento a papelera interna |
Archivos secretos | Sin denylist propia | Bloqueo de |
Seguimiento | Log de runtime | Auditoría JSONL con ID de solicitud, resultado y duración |
Protocolo | Parser HTTP/MCP de implementación propia | SDK oficial de MCP TypeScript v2 del proyecto MCP |
La aplicación tiene una interfaz de escritorio Electron para elegir workspace, elegir modo, elegir la allowlist de comandos, iniciar/detener el servidor, probar MCP dentro de la propia app y conectar Secure MCP Tunnel. Siguiendo el enfoque de FileMCP, la app genera un nuevo token loopback por sesión, mantiene el servidor en 127.0.0.1, gestiona el ciclo de vida de tunnel-client y guarda la Runtime API key mediante el mecanismo de cifrado del sistema operativo (Keychain en macOS cuando está disponible). El binario tunnel-client lo descarga el usuario de OpenAI; el proyecto no incluye ese binario. El runtime local y el Tunnel no llaman a Codex ni a modelos/API de OpenAI: se usa la app con ChatGPT Web mediante la app en modo desarrollador, por lo que no se consume cuota de Codex. La conversación sigue sujeto a los límites del plan de ChatGPT en uso.
Requisitos
Node.js 20 o superior (probado con Node.js 24).
Git si se usan las herramientas
git_*.Para ChatGPT: un workspace que admita apps MCP personalizadas, un Secure MCP Tunnel y una runtime API key con permisos de túnel adecuados. Consulta OpenAI Secure MCP Tunnel.
Ejecución paso a paso
Paso 1 — instalar dependencias
cd "/Users/danhpham/Documents/ChatGPT/MCP"
npm installNo pongas la API key en .env ni la subas a Git.
Paso 2 — comprobar todo el proyecto
npm run verifyEste comando ejecuta typecheck, pruebas unitarias/de integración, build de producción y smoke test semántico mediante MCP stdio.
Paso 3 — ejecutar la interfaz de escritorio (la forma más fácil)
npm run desktopEn la ventana de WorkspaceGuard:
Pulsa Elegir carpeta… y selecciona un workspace de prueba.
Mantén Solo lectura la primera vez.
Pulsa Iniciar MCP. Cuando el estado cambie a En ejecución, el servidor HTTP estará listo en
127.0.0.1:<puerto>.Pulsa Detener al terminar. Cerrar la aplicación también detiene tanto el servidor como el Tunnel.
La interfaz no muestra ni guarda el token HTTP; el token se genera de nuevo en el proceso principal en cada inicio.
Probar todo el MCP dentro de la interfaz
Después de que el servidor indique En ejecución, pulsa Ejecutar prueba MCP. Se trata de un cliente MCP real en el proceso principal de Electron, no una prueba simulada a través de la interfaz.
Con Solo lectura, la app comprueba el handshake HTTP de MCP, el descubrimiento de herramientas,
workspace_infoylist_files.Con Leer y escribir, la app comprueba además
write_file→read_file→trash_path. Debes marcar la confirmación porque el archivo de prueba con nombre aleatorio se moverá a.workspaceguard/trash.Con Ejecutar comando, mantén marcado
nodeen la allowlist para que la app compruebe ademásrun_commandconnode --version.
Elige una carpeta de prueba independiente para los dos últimos modos. El resultado de cada paso aparece al instante en la sección de pruebas de la interfaz.
Paso 4 — compilar el núcleo con terminal (opcional)
npm run buildEl punto de entrada de producción es:
/Users/danhpham/Documents/ChatGPT/MCP/dist/index.jsPaso 5 — elegir workspace y modo con terminal (opcional)
Conviene empezar con una carpeta de prueba pequeña:
mkdir -p /tmp/workspaceguard-demo
printf 'Xin chào MCP\n' > /tmp/workspaceguard-demo/hello.txtTres modos:
read-only: solo herramientas de lectura de archivos y lectura de Git. Es el valor por defecto.workspace-write: añadewrite_fileytrash_path.command: añade permisos de escritura yrun_command.
Nota: el servidor sigue registrando auditoría interna en .workspaceguard/audit.jsonl en los tres modos. "Read-only" describe las herramientas públicas, no el sandbox de filesystem del propio proceso del servidor.
Paso 6A — ejecutar mediante stdio (recomendado)
node dist/index.js \
--root /tmp/workspaceguard-demo \
--transport stdio \
--mode read-onlyLa terminal esperará a que el cliente MCP envíe solicitudes por stdin. Este es el comportamiento correcto, no es un cuelgue.
Paso 6B — activar permisos de escritura
node dist/index.js \
--root /tmp/workspaceguard-demo \
--transport stdio \
--mode workspace-writetrash_path tiene dry_run=true por defecto. Solo cuando el llamador envía dry_run=false la ruta se mueve a la papelera.
Paso 6C — permitir ejecutar comandos de terminal
node dist/index.js \
--root /tmp/workspaceguard-demo \
--transport stdio \
--mode command \
--allow-command git,node,npm,npxEjemplo de entrada de herramienta:
{
"program": "npm",
"args": ["test"],
"cwd": "",
"timeout_seconds": 120
}run_command no usa shell, pero no es un sandbox de SO. node, npm, Python o cualquier ejecutable permitido pueden leer/escribir fuera del workspace, usar la red y lanzar otros procesos con los permisos de la cuenta actual. Usa el modo command solo con workspaces y flujos de trabajo de confianza.
Paso 7 — conectar ChatGPT con la interfaz Secure MCP Tunnel
En OpenAI Platform, crea un Secure MCP Tunnel y una runtime API key con permiso para usar el túnel. Descarga el tunnel-client adecuado para tu sistema operativo. No envíes la Runtime API key a Codex ni la escribas en .env, en el código fuente o en Git.
En la app, después de que MCP indique En ejecución:
Pega el Tunnel ID con el formato
tunnel_....Pega la Runtime API key. La próxima vez puedes dejarla vacía para usar la clave guardada cifrada.
Introduce
tunnel-clientsi el binario ya está enPATH, o pulsa Elegir archivo… para seleccionar el binario descargado.Mantén el perfil por defecto, pulsa Conectar Tunnel y espera el aviso "listo para ChatGPT".
La línea verde "listo para ChatGPT" confirma que la parte local está conectada. Pulsa Abrir ChatGPT Web; esta app no abre ni llama a Codex.
Pulsa Desconectar Tunnel si solo quieres desconectar ChatGPT; pulsa Detener para detener tanto el Tunnel como el servidor MCP.
La app realiza el equivalente a la secuencia tunnel-client init --sample sample_mcp_remote_no_auth → doctor --explain → run, con el endpoint MCP http://127.0.0.1:<puerto>/mcp, endpoint de salud local y el header de token pasado mediante variable de entorno. Los perfiles de túnel están en los datos propios de la app, no en el workspace.
En ChatGPT Web, activa Developer Mode/app MCP personalizada según la política del workspace, crea una app nueva, elige la conexión Tunnel, selecciona el túnel recién creado, ejecuta Scan Tools y luego prueba workspace_info, list_files y read_file antes de activar las herramientas de escritura. Si no ves la opción Tunnel, comprueba que el workspace tenga permiso de lectura y uso de Tunnel.
Paso 8 — HTTP loopback (opcional)
export WORKSPACE_MCP_TOKEN="$(openssl rand -hex 32)"
node dist/index.js \
--root /tmp/workspaceguard-demo \
--transport http \
--mode read-only \
--port 7331Comprobación de salud:
curl --fail http://127.0.0.1:7331/healthzLa solicitud MCP debe enviar el header:
X-Workspace-MCP-Token: <WORKSPACE_MCP_TOKEN>El servidor HTTP solo se vincula a 127.0.0.1, comprueba Host, Origin, token, framing básico y límite de cuerpo. Usa stdio si no necesitas HTTP específicamente.
Herramientas disponibles
Siempre disponibles
workspace_infolist_filesread_fileread_file_rangesearch_filenamessearch_contentgit_statusgit_loggit_diff
Modo workspace-write o command
write_filetrash_path
Solo modo command
run_command
Restaurar archivos movidos a la papelera
La herramienta devuelve trashPath. Restaura con un comando local, por ejemplo:
mv "/tmp/workspaceguard-demo/.workspaceguard/trash/<id>/remove-me.txt" \
"/tmp/workspaceguard-demo/remove-me.txt"WorkspaceGuard no vacía la papelera automáticamente en esta versión para evitar borrados accidentales de datos.
Estructura
src/
├── config.ts # CLI/env và mode
├── security/path-policy.ts # containment + sensitive-path policy
├── services/files.ts # file/search/write/trash
├── services/git.ts # Git read-only
├── services/process.ts # process limits + tree cleanup
├── tools.ts # MCP schemas, annotations, audit
├── server.ts # stdio + HTTP loopback
├── desktop/ # Electron main/preload + renderer an toàn
└── index.ts # CLI entry
tests/ # unit, integration, MCP semantic smoke
docs/ # phân tích source và lộ trìnhDocumentación adicional
Licencia y fuentes de referencia
El proyecto usa Apache License 2.0. FileMCP también usa Apache-2.0; consulta NOTICE para conocer las fuentes de diseño de referencia. No se incluye el binario tunnel-client; el operador descarga la versión adecuada desde la fuente oficial de OpenAI.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables ChatGPT to inspect and edit local projects through a secure MCP interface, offering workspace management, file operations, git integration, and safe command execution.4MIT
- AlicenseNot gradedqualityAmaintenanceLets ChatGPT or MCP clients work with files on your machine, with tools for reading, editing, searching, git operations, and safety checks.MIT
- AlicenseNot gradedqualityBmaintenanceEnables ChatGPT to securely operate a single Windows development workspace via a local MCP server, offering file editing, Git status, static analysis, approved test/build, and limited ADB operations with audit logging.MIT
- AlicenseAqualityBmaintenanceEnables ChatGPT and Codex to safely work with explicitly authorized local project folders through MCP, providing constrained file reading, searching, patch editing, Git inspection, and whitelisted tasks without exposing arbitrary shell, deletion, or deployment capabilities.17MIT
Related MCP Connectors
Securely search and manage workspace context files for AI agents and teams.
Project management MCP for AI agents with safe task reads and writes.
Search your AI chat history (ChatGPT, Claude, Codex) from any MCP client. Remote, private, read-only
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/phamcongdanh98/MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server