FolderBridge MCP
FolderBridge MCP
简体中文 | English
[!TIP] FolderBridge en sí es una aplicación de Windows de un solo archivo: descarga
FolderBridge.exedirectamente y haz doble clic en él. No se requiere instalar Python ni Node.js. El binario está en GitHub Releases → latest release → Assets; no aparece en la lista de archivos fuente del repositorio. Para ChatGPT en la web, FolderBridge sigue usando eltunnel-client.exeoficial distribuido por separado por OpenAI; el lanzador te guía para seleccionarlo. También puedes abrir la página de la versión completa para obtener el EXE y su archivo opcional de suma de verificación SHA-256.
[!IMPORTANT] Este proyecto se encuentra en una beta pública temprana. Reduce la superficie de ataque; no es un sandbox del sistema operativo. Expón únicamente carpetas y repositorios de confianza.
Novedades de 0.5.1
Publicación en GitHub autorizada por el navegador: la nueva extensión incluida
git-publisherpuede abrir la autorización de GitHub a través de Git Credential Manager, guardar las credenciales OAuth en el Administrador de credenciales de Windows, hacer commit únicamente de una lista explícita de archivos permitidos y hacer push solo de la rama actual al origin HTTPS existente de GitHub. Ningún campo de token/PAT/contraseña queda expuesto al modelo.La publicación con Git sigue limitada: el publicador rechaza cambios ya en staging, archivos tipo credencial/clave, atributos de Git que transforman el contenido y ajustes de Git locales al repositorio no seguros; nunca ejecuta
git add ., nunca acepta un remote/ref arbitrario, desactiva hooks/firmas para su commit acotado y nunca hace force-push.Proceso visual nativo con Microsoft Office: la extensión incluida
officepuede renderizar.pptx,.docxy.xlsxcon Microsoft Office instalado localmente. PowerPoint exporta las diapositivas directamente a PNG; Word/Excel usan sus motores de diseño nativos de formato fijo y el renderizador PDF de Windows para generar PNG de página.Lectura de la estructura de Word sin iniciar Word:
inspect_docxexpone párrafos, estilos/numeración, tablas, secciones/configuración de página, encabezados/pies de página, multimedia, hipervínculos, notas al pie/finales y comentarios desde OOXML.Lectura de estructura/fórmulas de Excel sin iniciar Excel:
inspect_xlsxexpone hojas, rangos de celdas acotados, fórmulas y valores en caché, rangos combinados, filas/columnas ocultas, nombres definidos, ajustes de cálculo y partes de vínculos externos.Salida preparada para auditoría: el renderizado nativo puede escribir un directorio de PNG determinista junto con un ZIP complementario y devuelve metadatos de SHA-256/tamaño tanto del archivo de Office de origen como de las salidas generadas; la herramienta existente
image_openpuede entonces inspeccionar visualmente cada página o miembro del ZIP.La automatización de Office está limitada: solo se aceptan rutas relativas al espacio de trabajo que no sean enlaces simbólicos; los formatos habilitados para macros quedan excluidos; las macros de automatización de Office se deshabilitan por la fuerza; los archivos se abren en modo de solo lectura; las actualizaciones de vínculos de Excel están deshabilitadas; el script de PowerShell incluido es fijo y nunca acepta comandos arbitrarios.
Se mantienen las mejoras de seguridad/UI de 0.4.x: el desplazamiento en high-DPI, los diagnósticos del servicio administrado de ComfyUI, la puerta de enlace estable de extensiones, las capacidades globales acotadas y la distribución de Windows en un solo archivo no cambian.
Consulta CHANGELOG.md para el historial completo de versiones y Extension ABI v1 para los límites del servicio administrado y los plugins.
Related MCP server: Forge Workspace MCP Server
¿Por qué FolderBridge?
Límites de carpetas independientes: una conexión puede contener hasta ocho espacios de trabajo canónicos; cada llamada de herramienta de múltiples espacios de trabajo selecciona un
workspace_iden lugar de fusionar las raíces.Solo lectura de forma predeterminada: cambia a lectura/escritura explícitamente en el lanzador.
Ediciones seguras frente a conflictos: los archivos existentes requieren el SHA-256 devuelto por la última lectura; las ediciones obsoletas fallan en lugar de sobrescribir el trabajo más reciente.
Sin shell arbitrario: las tareas opcionales se nombran, se revisan localmente y se aprueban mediante el hash de configuración exacto.
Sin listener público: el servidor MCP usa solo stdio.
Sin telemetría: FolderBridge no realiza ninguna solicitud de red.
Lanzador consciente de secretos: la clave de API de OpenAI Runtime permanece en memoria y se elimina antes de que el proceso MCP local pueda usarla.
Interfaz de escritorio apta para principiantes: una lista para añadir/quitar carpetas, modo de acceso global, configuración de Tunnel, diagnósticos, inicio/detención, supervisión de procesos y registros censurados en una sola ventana.
Compatibilidad con el escalado de Windows: las fuentes y el tamaño de la ventana siguen el DPI actual de la pantalla y se actualizan al moverla entre monitores con distintos factores de escala.
Inicio rápido
Los requisitos dependen de cómo uses FolderBridge:
EXE independiente de Windows: no se requiere ninguna instalación separada de Python o Node.js; Windows es el entorno de lanzador de doble clic probado.
Ejecutar/desarrollar desde el código fuente: se requiere Python 3.11 o superior; Python 3.11 x64 es la base de compilación recomendada en Windows.
Capacidades del proyecto: instala solo la cadena de herramientas que requiera el propio espacio de trabajo (por ejemplo, Node.js LTS para los scripts de prueba/compilación de un proyecto Node/npm). Activar una capacidad no instala esa cadena de herramientas.
Git es opcional. Las vistas acotadas de
status/diffusan Git cuando está disponible; la extensión Git Publisher requiere además Git para Windows con Git Credential Manager para commits/pushes de GitHub autorizados por el navegador.
Ejecutable de Windows — recomendado
Descarga el FolderBridge.exe único desde los Assets de la última versión de GitHub, o descarga el EXE directamente. El binario no aparece en la lista de archivos fuente del repositorio. FolderBridge.exe es la aplicación FolderBridge completa y ya contiene su runtime de Python, por lo que los usuarios normales del EXE no instalan Python ni Node.js. El archivo adyacente FolderBridge.exe.sha256 es opcional y existe únicamente para verificar la integridad.
El ejecutable de un solo archivo deliberadamente no vuelve a incluir el tunnel-client publicado de forma independiente por OpenAI; descarga el cliente oficial por separado desde la versión de OpenAI y selecciona tunnel-client.exe en el lanzador solo cuando uses ChatGPT en la web.
[!NOTE] La compilación comunitaria actual no está firmada con código, por lo que Windows identifica su editor como desconocido. Si no confías en un binario sin firmar, compílalo desde el código fuente auditado.
Ejecutar desde el código fuente
Clona el repositorio e inicia la GUI:
git clone https://github.com/MoonTzai/folderbridge-mcp.git
cd folderbridge-mcp
python .\folderbridge_launcher.py guiAñade los espacios de trabajo que necesites, mantén seleccionado Solo lectura para la primera ejecución y usa el panel de estado para completar la configuración. Las preferencias del lanzador se guardan fuera del repositorio; la clave de API de Runtime nunca se guarda. Una configuración heredada de un único espacio de trabajo se migra automáticamente a la primera entrada de la lista.
folderbridge_gui.pyw se mantiene como una utilidad solo de código fuente para instalaciones de Python cuya asociación .pyw apunta a un intérprete con Tkinter. El FolderBridge.exe independiente es el punto de entrada de doble clic compatible.
Cadenas de herramientas opcionales para desarrollo y proyectos
Estos no son requisitos previos para el uso normal de FolderBridge.exe:
Para desarrollo desde el código fuente o para recompilar el EXE de Windows, instala Python 3.11 x64 desde las descargas oficiales de Python para Windows y verifica
python --version. El flujo de empaquetado usa un.build-venvaislado yrequirements-build.txt.Instala Node.js LTS desde las descargas oficiales de Node.js solo cuando un espacio de trabajo Node/npm de destino necesite
node/npmpara sus propios comandos de prueba o compilación; verifica connode --versionynpm --version.Otros proyectos pueden requerir sus propios runtimes o compiladores. Las capacidades de FolderBridge proporcionan autorización y descubrimiento/ejecución acotados, no instalación de dependencias.
Conecta ChatGPT en la web
ChatGPT no puede conectarse directamente a un proceso stdio local. FolderBridge usa el Secure MCP Tunnel oficial de OpenAI para esta vía. Necesitas:
[!IMPORTANT] Secure MCP Tunnel solo requiere HTTPS saliente (puerto 443 de forma predeterminada) desde este equipo y ningún puerto entrante expuesto a Internet. No habilites nunca el Escritorio remoto de Windows, el reenvío de puertos del router, DMZ, asignaciones UPnP ni el puerto
3389para FolderBridge; ninguno de ellos forma parte de la configuración de Tunnel. Si un firewall pregunta por acceso entrante, no crees una regla entrante pública amplia solo para que Tunnel funcione.
un
tunnel_idde OpenAI Platform Tunnel settings;una clave para
tunnel-clientde los Runtime API Keys de la misma organización;el
tunnel-clientoficial;acceso en modo desarrollador de ChatGPT adecuado para tu cuenta o espacio de trabajo.
Haz clic en 连接设置向导 (guía de configuración de conexión) en la esquina superior derecha del lanzador para ver los mismos pasos y accesos directos que aparecen a continuación, incluido el apéndice opcional sobre Python/Node.
1. Descarga el cliente oficial de Windows x64
[!WARNING] Descarga únicamente el archivo completo
tunnel-client-v<version>-windows-amd64.zip. Nunca descargues ni selecciones un archivotunnel-client-runtime-*. Los archivos Runtime son componentes internos y no implementan el comandoinitnecesario para la configuración; sus nombres similares pueden provocar el error “configuration failed”. Después de extraer el archivo completo, selecciona únicamente el programa principal llamado exactamentetunnel-client.exe.
Abre la última versión de
openai/tunnel-clienty expande Assets.Descarga el archivo completo llamado
tunnel-client-v<version>-windows-amd64.zip. En los nombres de archivo de las versiones,amd64significa Windows x64 y es el correcto para la mayoría de PC Intel/AMD.Opcionalmente, descarga
SHA256SUMS.txtpara verificar. No elijastunnel-client-runtime-*,windows-arm64,all.zip, archivos de código fuente ni archivos de licencia; un archivo Runtime no puede sustituir al cliente completo.Extrae el ZIP completo a una carpeta estable; no hay instalador y no debes ejecutarlo desde dentro del archivo. La guía puede crear y abrir
%LOCALAPPDATA%\FolderBridge\bincomo ubicación recomendada.Vuelve a FolderBridge, haz clic en 选择已解压的 EXE y selecciona únicamente el archivo llamado exactamente
tunnel-client.exe.
2. Crea el Platform Tunnel
Abre OpenAI Platform Tunnel settings, haz clic en Create tunnel y usa estas opciones actuales:
Campo | Valor recomendado | Notas |
Nombre |
| Nombre visible personalizable |
Descripción |
| Obligatorio; personalizable |
Organizaciones |
| Para equipos, selecciona la organización de Platform que gestiona este Tunnel |
Espacios de trabajo de ChatGPT | El espacio de trabajo donde crearás la aplicación | No lo dejes en blanco; una cuenta personal suele tener un ID de espacio de trabajo |
Tras la creación, copia el ID de Tunnel que comienza por tunnel_. Ejecutarlo y seleccionarlo requiere Tunnels Read + Use; crearlo o editarlo también requiere Manage. Asocia únicamente las organizaciones y los espacios de trabajo de ChatGPT que necesiten acceso a este espacio de trabajo local.
Crea la clave para tunnel-client bajo las Runtime API Keys de la misma organización de Platform; su creador necesita Tunnels Read + Use. Pégala solo en FolderBridge, donde permanece en la memoria del proceso. No uses una clave de API de Admin y no pongas la clave de Runtime en el campo Authentication de la aplicación de ChatGPT.
3. Iniciar FolderBridge
Añade uno o más carpetas de espacio de trabajo explícitas (hasta ocho) y mantén Read only (recomendado) para la primera ejecución. El modo de acceso global se aplica a todas las carpetas listadas.
Selecciona
tunnel-client.exedel archivo completo, nunca un componentetunnel-client-runtime-*; el perfilfolderbridgepredeterminado es adecuado.Introduce el mismo ID de Tunnel y la misma clave de API de Runtime. Opcionalmente, habilita una sola vez las capacidades globales que quieras; deja deshabilitadas las tareas avanzadas con nombre por espacio de trabajo a menos que necesites un comando personalizado.
Haz clic en Start connection. El lanzador ejecuta el flujo oficial
init,doctoryrun. Continúa solo después de que el estado superior muestre 运行中 (Running). Cuando cambies la carpeta o el modo de acceso más tarde, haz clic de nuevo en 应用配置 (Apply configuration); el lanzador actualiza el mismo perfil que gestiona.
4. Crear la aplicación en modo desarrollador de ChatGPT
Abre ChatGPT Plugins, haz clic en + y usa estas opciones críticas:
Campo | Opción obligatoria |
Connection | Tunnel |
Available Tunnel | Selecciona el mismo Tunnel, o pega su ID |
Authentication | No authentication |
[!WARNING] No dejes el formulario en su opción predeterminada OAuth y no pegues una dirección
https://tunnel-service...en Server URL. FolderBridge no implementa OAuth de usuario, por lo que esa configuración produce un errordoes not implement OAuth.
Invocar la aplicación en una conversación de ChatGPT
Mantén el estado de FolderBridge en 运行中 (Running) y luego inicia una nueva conversación de ChatGPT.
Selecciona el + junto al compositor, abre More y elige la aplicación FolderBridge que acabas de crear.
Envía una tarea como: "Primero usa FolderBridge
server_infopara listar los espacios de trabajo disponibles, luego lee la raíz del espacio de trabajo que nombre." Revisa elworkspace_idy el archivo de destino en cualquier confirmación de herramienta antes de aprobarla.
Este punto de entrada sigue la guía oficial de conexión y prueba de OpenAI. La guía de conexión del lanzador incluye los mismos pasos y un prompt de ejemplo copiable con un clic.
Mantén el lanzador en ejecución mientras ChatGPT usa el espacio de trabajo. Cerrarlo detiene el proceso del Tunnel. Las confirmaciones de instalación de la aplicación y del modo desarrollador a nivel de cuenta permanecen en ChatGPT; FolderBridge no automatiza tu sesión de navegador ni tus ajustes de seguridad.
No se requiere ninguna extensión de navegador. FolderBridge no descarga ni ejecuta silenciosamente binarios entregados por red.
Conectar otro cliente MCP local
Sí. El punto de compatibilidad de FolderBridge es su servidor MCP stdio estándar. El Tunnel de ChatGPT es solo un puente para un cliente web que no puede lanzar un proceso local. El transporte MCP stdio también especifica que el cliente lanza el subproceso del servidor e intercambia JSON-RPC a través de la entrada/salida estándar. Especificación MCP stdio
Requisitos del cliente
Puede configurar un par local de comando + argumentos y mantener el subproceso en ejecución.
Admite MCP sobre
stdio, reservando stdout para los mensajes del protocolo.Puede descubrir y llamar a herramientas MCP (
initialize,tools/listytools/call, o el flujo de descubrimiento moderno de 2026-07-28).Cierra stdin o termina el subproceso cuando la sesión finaliza.
Prefiere un cliente con UX de aprobación de herramientas, pero no trates su diálogo de confirmación como la única frontera de seguridad.
FolderBridge gestiona actualmente las rutas de protocolo 2024-11-05, 2025-03-26, 2025-06-18, 2025-11-25 y 2026-07-28. Devuelve esquemas de herramientas estándar, contenido de texto y structuredContent; si aparece o no un aviso de confirmación depende del cliente. Especificación de herramientas MCP
Tipo de cliente | ¿Conexión directa? | Ruta |
Aplicación de escritorio local o IDE con MCP stdio | Sí | Usa |
Aplicación local con un único campo de comando combinado | Generalmente | Pega el comando stdio completo y conserva las comillas de la ruta |
Cliente que acepta solo una URL HTTP/SSE remota | No | Usa la puerta de enlace/proxy stdio oficial de ese cliente, o despliega un puente MCP protegido por separado |
Solo web, móvil o sandbox en la nube | Generalmente no al PC local | Usa el mecanismo oficial de Tunnel/remoto del proveedor en un host de confianza que pueda alcanzar el espacio de trabajo |
Configuración local más breve
Añade uno o más espacios de trabajo en FolderBridge y mantén Read only (recomendado).
Abre la página 5 de 连接设置向导 y copia JSON, TOML o el comando stdio completo.
Pégalo en la configuración de MCP Servers del cliente; sigue la documentación de ese cliente para conocer los nombres exactos de sus campos.
Reinicia o actualiza el cliente y verifica que aparezcan
server_infoyworkspace.
Una conexión stdio directa no necesita tunnel-client, ID de Tunnel, clave de API de Runtime ni la GUI de FolderBridge en ejecución. El cliente inicia este comando cuando lo necesita:
FolderBridge.exe serve --workspace C:\path\to\repo --read-onlyRepite --workspace para añadir carpetas manteniendo cada raíz independiente:
FolderBridge.exe serve --workspace C:\work\frontend --workspace C:\work\backend --read-onlyGenera configuraciones listas para pegar desde el origen:
python .\folderbridge_launcher.py client-config --workspace C:\path\to\repo --format json --read-only
python .\folderbridge_launcher.py client-config --workspace C:\path\to\repo --format toml --read-only
python .\folderbridge_launcher.py client-config --workspace C:\path\to\repo --format tunnel --read-onlyLa salida JSON sigue la convención común mcpServers utilizada por muchos clientes de escritorio:
{
"mcpServers": {
"folderbridge": {
"command": "C:\\Tools\\FolderBridge.exe",
"args": ["serve", "--workspace", "C:\\work\\frontend", "--workspace", "C:\\work\\backend", "--read-only"]
}
}
}[!IMPORTANT] Las claves de nivel superior de JSON/TOML son convenciones comunes, no requisitos universales de los clientes. La compatibilidad significa en última instancia que el cliente lanza comando/argumentos sin cambios como un subproceso MCP stdio. Si el cliente acepta solo una URL, esta versión no tiene un listener HTTP/SSE integrado; no expongas un puerto local ad hoc directamente a la internet pública.
Consulta la investigación de compatibilidad de clientes para conocer las versiones de protocolo, el ciclo de vida del proceso, cwd/env, los límites de aprobación y los detalles del puente remoto.
Herramientas y flujo de edición
Las herramientas integradas del servidor no dependen de la configuración de tareas por espacio de trabajo:
server_info: informa de cada nombre de espacio de trabajo disponible,workspace_idestable, capacidades integradas/globales y límite de seguridad;workspace: lista, lee, busca y muestra la salida acotada de estado/diff de Git dentro delworkspace_idseleccionado;file_info: devuelve metadatos acotados y SHA-256 para archivos binarios;pptx_inspect: inspecciona texto PPTX, relaciones de diagramas OOXML y datos SmartArt sin ejecutar contenido de Office;image_open: devuelve contenido de imagen PNG/JPEG/GIF/WebP acotado al cliente MCP, incluidos los miembros de imagen exactos dentro de archivos ZIP;extension: la puerta de enlace establelist/info/runpara extensiones cargadas en caliente; instalar más plugins no añade nombres de herramientas MCP;edit_file: en modo lectura/escritura, crea o edita exactamente un archivo UTF-8 dentro del espacio de trabajo seleccionado.
Con un solo espacio de trabajo, los clientes existentes pueden seguir omitiendo workspace_id. Con varios espacios de trabajo, las herramientas con ámbito de espacio de trabajo requieren un workspace_id devuelto por server_info; los ID faltantes o desconocidos se rechazan. Las raíces duplicadas, las superposiciones padre/hijo y las listas de más de ocho entradas se rechazan antes del inicio.
Un bucle de edición seguro es:
lista o busca un archivo;
léelo y conserva el SHA-256 devuelto;
envía un reemplazo exacto con ese hash;
inspecciona el diff de Git.
El servidor no puede eliminar ni mover archivos. Las rutas absolutas, .., los enlaces simbólicos, los junctions/reparse points, los internos de VCS, las carpetas comunes de dependencias/compilación y los nombres similares a credenciales están denegados.
Capacidades globales preautorizadas
El lanzador puede autorizar capacidades comunes una sola vez para todos los espacios de trabajo actuales y futuros: test, build, package-windows, package-android y git-push. Estos permisos residen en la configuración del lanzador, no en .folderbridge.json, por lo que un espacio de trabajo puede obtener un script de compilación compatible meses después de haberse añadido y FolderBridge lo detectará en el momento de la llamada. El lanzador también proporciona controles Select all y Clear para este grupo.
git-push sigue siendo una capacidad de bajo nivel solo de push restringida a un origin HTTPS de GitHub, la rama actual, sin push forzado y sin configuración de helper de credenciales local del repositorio / reescritura del destino de push. Para la autorización del navegador más la confirmación de archivos explícita y el push, usa en su lugar la extensión incluida Git Publisher. Las capacidades de compilación/empaquetado pueden ejecutar código de proyecto local, así que habilita solo las capacidades globales que quieras.
Para clientes stdio directos, repite --capability <name> en el comando serve o client-config. El lanzador de Windows expone las mismas opciones como casillas de verificación persistentes.
Extensiones
La ABI v1 de extensiones de FolderBridge es la forma preferida de añadir futuras integraciones globales como ComfyUI, FFmpeg, Blender, Ollama, ADB u otras herramientas locales sin cambiar el catálogo de herramientas MCP. El lanzador de Windows tiene una barra lateral Extensions plegada por defecto que escanea en caliente el directorio de extensiones del usuario, muestra el estado instalado/aprobado/cargado y te permite aprobar o deshabilitar plugins mientras el Tunnel permanece conectado.
Cada extensión es un directorio que contiene al menos folderbridge-extension.json y plugin.py. Los plugins externos se aprueban contra el SHA-256 exacto del directorio completo del plugin más la lista de permisos declarada; cambiar cualquier archivo o permiso hace que la aprobación quede obsoleta. Las extensiones se ejecutan en un subproceso separado con un entorno limpio, E/S de protocolo acotada y un tiempo de espera declarado. Esto aísla los fallos y la contaminación del protocolo, pero no es un sandbox de seguridad del sistema operativo: usa una VM/contenedor para código de plugins no confiable.
La adaptación específica del espacio de trabajo debe usar workspace_adapter.mode=dynamic con detect.any_of / detect.all_of. FolderBridge reevalúa esos patrones en el momento de la llamada, por lo que las extensiones no necesitan inyectar tareas .folderbridge.json al instalarse y pueden volverse aplicables después de que un proyecto cambie más adelante. El estado persistente de los plugins debe usar el directorio de estado de perfil proporcionado en lugar de contaminar los repositorios.
ComfyUI es la primera extensión incluida. Su acción de estado comprueba el endpoint de bucle cerrado fijo 127.0.0.1:8188; la ejecución del flujo de trabajo requiere una aprobación única en la barra lateral de Extensiones. En FolderBridge 0.4.1, el lanzador de Windows también puede gestionar el proceso local de ComfyUI por sí mismo: elija una raíz Portable compatible (python_embeded\\python.exe + ComfyUI\\main.py) o una raíz de código fuente (main.py + .venv\\Scripts\\python.exe / venv\\Scripts\\python.exe) una vez, y el lanzador puede iniciarlo automáticamente con argumentos explícitos de Python/main.py, shell=False y enlace fijo a 127.0.0.1:8188. Si ese endpoint ya está en línea antes de que FolderBridge lo inicie, el servicio se marca como externo y se reutiliza en lugar de duplicarse.
La propiedad de los servicios gestionados es intencionalmente más estricta que los permisos de las extensiones. FolderBridge solo almacena install_root y auto_start, nunca un PID o un comando arbitrario. Solo el manejador Popen en memoria creado por la ejecución actual del lanzador se considera propiedad y se puede detener. FolderBridge nunca ejecuta un BAT/CMD seleccionado por el usuario para ComfyUI y nunca busca ni mata un proceso desconocido simplemente porque ocupa el puerto 8188. Al salir, detiene los servicios gestionados de su propiedad antes de Tunnel/MCP; el ComfyUI externo permanece en ejecución.
En Windows, el lanzador solicita la conciencia de DPI por monitor V2 y también sondea el DPI actual de la ventana como respaldo ligero. Las métricas fijas de la GUI se recalculan a partir de sus tamaños lógicos originales (dpi / 96) solo cuando el DPI realmente cambia, por lo que pasar de 96 → 144 → 96 DPI no acumula deriva de escala.
Los plugins ABI v1 deben usar los módulos empaquetados con FolderBridge y la biblioteca estándar de Python en lugar de asumir dependencias pip arbitrarias dentro del EXE de un solo archivo. El software adicional normalmente debe alcanzarse a través de una API de bucle cerrado precisa o una dependencia declarada process.execute:<basename>. Ejecute FolderBridge.exe extensions --json para inspeccionar lo que el ejecutable empaquetado puede descubrir. El apéndice de la guía de conexión contiene el formato completo más un prompt de desarrollo de plugins LLM de un clic que le dice al modelo que solicite/cargue documentación de API faltante, scripts, flujos de trabajo, archivos de muestra o estructura del proyecto en lugar de adivinar. Consulte Extension ABI v1.
Tareas nombradas opcionales por espacio de trabajo
El texto de comando arbitrario nunca se acepta a través de MCP. Para comandos inusuales específicos del repositorio que no están cubiertos por las capacidades globales, cree y revise una política de tareas local:
python .\folderbridge_launcher.py init --workspace C:\path\to\repo
# Review C:\path\to\repo\.folderbridge.json
python .\folderbridge_launcher.py approve --workspace C:\path\to\repoLuego habilite las tareas aprobadas en el lanzador o agregue --allow-tasks al comando de servidor generado. Habilitar este interruptor no requiere que cada espacio de trabajo configurado contenga .folderbridge.json: los espacios de trabajo sin configuración, los espacios de trabajo con tareas aprobadas, los espacios de trabajo solo de extensión y los espacios de trabajo cuya configuración aún no ha sido aprobada pueden coexistir en una sola conexión. La aprobación se verifica cuando se invoca realmente la tarea nombrada de ese espacio de trabajo. El modelo solo puede seleccionar un nombre de tarea; no puede proporcionar un comando, argumentos, variables de entorno o directorio de trabajo.
[!WARNING] Las pruebas, herramientas de compilación y scripts de paquete ejecutan código del repositorio con los permisos de su usuario actual del sistema operativo. Use una VM o contenedor desechable para repositorios no confiables, o deje la ejecución de tareas deshabilitada.
Modelo de seguridad
FolderBridge trata las solicitudes MCP, el texto del repositorio y la salida de las herramientas como datos no confiables. La aplicación se encuentra en la implementación de la herramienta, no solo en las anotaciones MCP. Los controles principales son:
confinamiento de ruta canónica y rechazo de enlaces por espacio de trabajo, con raíces superpuestas denegadas;
lecturas UTF-8 limitadas, búsquedas, salida de Git, salida de subprocesos y mensajes de protocolo;
escrituras atómicas con una condición previa de hash de contenido actual;
archivos de política local protegidos;
shell=False, matrices de argumentos fijas, entornos de tarea limpios y tiempos de espera;los manifiestos de extensión rechazan nombres de permisos desconocidos o demasiado amplios, las aprobaciones de extensión vinculan hashes de código y permisos exactos, y la ejecución de plugins se mueve fuera del proceso MCP;
sin listener de red entrante y sin telemetría de FolderBridge.
Lea el modelo de seguridad completo y la investigación de diseño ascendente. Para informar una vulnerabilidad, siga SECURITY.md.
Desarrollo
No hay dependencias de terceros en tiempo de ejecución.
python -m unittest discover -s tests -vConsulte CONTRIBUTING.md antes de abrir una solicitud de extracción.
Compilar el ejecutable de Windows
Las compilaciones usan una dependencia PyInstaller fijada, solo en tiempo de compilación. El EXE publicado usa el cargador de arranque de consola con hide-console=hide-early: hacer doble clic abre solo la GUI, mientras que el mismo ejecutable conserva stdio cuando Tunnel inicia su subcomando serve.
python -m venv .build-venv
.\.build-venv\Scripts\python.exe -m pip install -r requirements-build.txt
.\scripts\build_windows.ps1 -Python .\.build-venv\Scripts\python.exeLos artefactos y un archivo SHA-256 se escriben en release\windows-x64.
Licencia
Licenciado bajo la Apache License 2.0.
FolderBridge MCP es un proyecto de código abierto independiente. No está afiliado, respaldado ni patrocinado por OpenAI. ChatGPT, OpenAI, MCP y otros nombres de productos pertenecen a sus respectivos propietarios.
Available Tools
10 toolsedit_fileCreate or exactly edit one fileADestructive
Atomically create a UTF-8 file, or edit one using unique exact replacements and a current whole-file SHA-256. workspace(read) returns that SHA for small files; use file_info for larger files. When multiple workspaces are configured, pass the same workspace_id used for inspection. Cannot delete files, edit the local task config, follow links, or access credential-like paths.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| replacements | No | ||
| workspace_id | No | Required when server_info lists multiple workspaces. | |
| create_content | No | Used only when creating a new file. | |
| expected_sha256 | No | Required when editing an existing file. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive behavior, but the description adds important context: atomicity, exact replacement matching, SHA requirement, and explicit forbidden actions (delete, config, links, credentials).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise single paragraph that front-loads the core purpose and then efficiently covers SHA, workspace_id, and limitations without unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers creation vs. editing, SHA requirements, workspace_id, and limitations; with no output schema, return values need no explanation, though failure behavior on non-unique replacements could be mentioned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 60% of parameters with descriptions; the tool description clarifies replacement uniqueness, SHA acquisition, and workspace_id usage, though it adds little for the obvious path parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (create/edit) and resource (UTF-8 file), clearly distinguishing from siblings by noting exact replacements, SHA-256, and forbidden operations like deletion or credential access.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides practical guidance on obtaining the SHA via workspace or file_info, workspace_id handling, and constraints, but does not explicitly name an alternative like write_file.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extensionUse FolderBridge extensionsADestructive
Stable extension gateway. action=list returns a compact pageable catalog of installed/hot-reloaded extensions and action names; action=info returns the full schema for one extension; action=run invokes one declared extension action. Long foreground actions may be transport-safely promoted in-place to a host-owned Job; use action=job_list to rediscover workspace Jobs, action=job_status to inspect completion/runtime health/results, and action=job_cancel to terminate the owned worker process tree. Installing more extensions does not add MCP tool names. External extension code requires exact-hash local approval; globally authorized actions must also be enabled in the FolderBridge extension sidebar. Dynamic workspace adapters are re-evaluated at call time, so later project changes do not require workspace task injection.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Catalog/job page size for action=list/job_list. | |
| action | Yes | ||
| job_id | No | Required for job_status/job_cancel; returned by an explicit or auto-promoted Job action. | |
| offset | No | Catalog/job result offset for action=list/job_list. | |
| params | No | Action parameters validated against the extension's declared input_schema. | |
| extension_id | No | Required for info/run. | |
| workspace_id | No | Optional for list/info; required by workspace-bound run/job operations when multiple workspaces are configured. | |
| extension_action | No | Required for run; choose an action declared by extension info/list. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond the annotations by mentioning that job_cancel terminates the owned worker process tree, that external extension code requires exact-hash local approval, and that globally authorized actions must be enabled. This adds meaningful safety context beyond the destructiveHint and readOnlyHint annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is somewhat dense and list-like, but it is still focused and each sentence contributes necessary information about actions, job handling, or authorization. It could be organized into clearer bullets, but it is far from bloated or redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity—8 parameters, multiple actions, job lifecycle, and extension authorization—the description covers the essential operational context. It lacks explicit output format details, but no output schema is provided, and the action-specific behavior is sufficiently described for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already high at 88%, and the description adds useful semantic relationships, such as job_id being returned by an explicit or auto-promoted Job action and workspace_id being required for workspace-bound operations when multiple workspaces are configured. This clarifies parameter behavior beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies this as a stable extension gateway and enumerates the exact actions (list, info, run, job_list, job_status, job_cancel). It also distinguishes the tool from ordinary file operations by noting that installing more extensions does not add MCP tool names, making its role unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides practical guidance on how to use the tool: it explains the purpose of each action, how long foreground actions can be promoted to jobs, and that extension code requires approval. It does not explicitly mention competing alternatives, but it gives enough context for an agent to decide when this gateway is the appropriate entry point.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
file_infoInspect file metadata and SHA-256ARead-only
Return bounded metadata and whole-file SHA-256 for a regular file without exposing its bytes; use this SHA before editing large text files. Uses the same workspace confinement, link denial, and sensitive-path policy as text tools.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| workspace_id | No | Required when server_info lists multiple workspaces. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and non-destructive behavior. The description adds that bytes are not exposed and mentions shared workspace/link/sensitive-path policies, providing extra context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, tightly packed with essential information: function, limitation, use case, and policy alignment. No fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple metadata/hash tool, the description covers key aspects: what it returns, what it avoids, and when to use it. The absence of an output schema is compensated by the clear explanation of the return value. It is complete enough for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions cover workspace_id but not path, giving 50% coverage. The description does not add any parameter details, but the parameters are simple and self-explanatory (path, workspace_id). This is adequate but not enhanced.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns metadata and SHA-256 for a regular file, and explicitly notes it does not expose bytes, distinguishing it from content-reading tools. The phrase 'use this SHA before editing large text files' gives a concrete purpose and workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a specific use case ('use this SHA before editing large text files') and clarifies the tool's non-content nature. While it doesn't compare directly to sibling tools, the 'without exposing its bytes' phrase implies when not to use it, giving adequate guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
file_opsCopy or move one file within or across workspacesADestructive
Core FolderBridge regular-file copy/move with workspace confinement on both ends. Use source_workspace_id when multiple workspaces are configured; destination_workspace_id is optional and defaults to the source workspace. Paths remain workspace-relative, links/reparse points, credentials, dependencies and protected control config writes are denied. No-clobber is the default; overwrite requires the current destination SHA-256. Cross-volume move falls back to verified copy then source removal.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | ||
| max_bytes | No | ||
| overwrite | No | ||
| source_path | Yes | ||
| create_parents | No | ||
| destination_path | Yes | ||
| source_workspace_id | No | Required when more than one workspace is configured. | |
| expected_source_sha256 | No | Optional source-byte guard; also enables safe already-completed retry recognition. | |
| destination_workspace_id | No | Optional; defaults to source_workspace_id. | |
| expected_destination_sha256 | No | Required when overwrite=true; must match the current destination bytes. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses critical behaviors beyond the destructiveHint annotation: it denies links, credentials, dependencies, and protected writes; explains no-clobber default with overwrite requiring SHA-256; and describes cross-volume move fallback. These specifics are valuable safety context not present in the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, leading with the core purpose and then detailing constraints. It avoids unnecessary words and presents information in a logical flow, though it could benefit from a clear separation of parameter usage from general behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 10 parameters, no output schema, and moderate complexity, the description covers important safety and overwrite aspects but omits explanations for max_bytes, create_parents, expected_source_sha256 usage, and action semantics. These gaps could lead to incorrect invocation, especially for a file operation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning for workspace IDs, overwrite requirements, and no-clobber default, which helps with parameters lacking schema descriptions. However, it does not explain max_bytes limits, create_parents behavior, or the action enum values, leaving gaps despite the low schema coverage of 40%. It partially compensates but not fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the exact operation (copy/move) on a single regular file, with workspace confinement. It clearly distinguishes from edit/write operations and sets expectations about scope. The phrasing 'Core FolderBridge regular-file copy/move' is specific and actionable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides parameter-level guidance (workspace IDs, overwrite behavior) but does not explicitly indicate when to choose this tool over siblings like edit_file or write_file. There is no mention of conditions for selecting this tool or exclusions for other operations, leaving tool selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flight_recorderRead recent FolderBridge flight diagnosticsARead-only
Read FolderBridge's compact local reliability flight recorder. It keeps only the latest 15 minutes with a 20 MiB total cap, records MCP/Tunnel metadata and bounded redacted diagnostics, and never stores full MCP request/response bodies. Use action=status for storage health, recent for a bounded timeline, or errors for warning/error events only.
| Name | Required | Description | Default |
|---|---|---|---|
| role | No | all | |
| limit | No | ||
| action | Yes | ||
| minutes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses retention limits (15 minutes, 20 MiB), recording of MCP/Tunnel metadata, bounded redacted diagnostics, and explicitly states it never stores full request/response bodies, going beyond the read-only annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, first summarizing the tool's purpose and data characteristics, second giving actionable usage for actions; no unnecessary fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Lacks explanation of parameters like role, limit, minutes, and their interaction; while the action usage is covered, the tool cannot be fully used without inferring parameter meanings from the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Description does not explain any of the parameters (action, role, limit, minutes) except implicitly mentioning action usage; schema has enums and defaults but description adds no parameter definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the verb 'Read' and the resource 'FolderBridge's compact local reliability flight recorder' clearly, distinguishing it from other read tools like server_info or file_info by specifying the domain.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides guidance on which action to use (status, recent, errors) but does not compare with sibling tools or explain when to choose this over others; still, the action-specific advice is useful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
image_openOpen a workspace image or ZIP image memberARead-only
Return one bounded PNG/JPEG/GIF/WebP as MCP image content, either from a direct workspace path or from one exact member inside a workspace ZIP. The archive is never extracted to disk.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Direct image path. Mutually exclusive with archive_path. | |
| member | No | Exact POSIX member path inside archive_path. | |
| archive_path | No | ZIP path containing the image. Mutually exclusive with path. | |
| workspace_id | No | Required when server_info lists multiple workspaces. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavior beyond the annotations: it states supported formats, the 'bounded' size constraint, and that the archive is never extracted to disk. These are useful operational details that the readOnlyHint annotation does not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the return value and formats, and the key behavioral guarantee is stated in one short second sentence. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the return form (MCP image content), supported formats, and the two input paths, which is sufficient for an agent to call the tool correctly. It does not describe error cases, but the schema and annotations cover the essential requirements.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters. The description adds context about the two usage modes but does not go beyond the schema's mutual-exclusion notes or parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Return') and a precise resource: one bounded PNG/JPEG/GIF/WebP as MCP image content. It also clearly distinguishes the two input modes (direct path vs. ZIP member), which separates this tool from sibling file operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use the tool: when you need an image as MCP content, either from a workspace path or from a ZIP member. It does not explicitly name alternative tools or exclusion criteria, but the direct-vs-archive distinction is actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pptx_inspectInspect PPTX OOXML and SmartArtARead-only
Safely inspect a PPTX inside the selected workspace using Python standard-library ZIP/XML parsing. Returns slide text, diagram-to-slide mappings, dgm:pt points, dgm:cxn connections, and orphan/duplicate diagnostics. Does not execute macros, embedded objects, or workspace code.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| page_end | No | ||
| page_start | No | ||
| workspace_id | No | Required when server_info lists multiple workspaces. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly discloses safety-relevant behavior: it does not execute macros, embedded objects, or workspace code. This goes beyond the readOnly/destructive annotations and reassures the agent about side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well structured: a safety-and-method sentence, a returns list, and a non-execution guarantee. Every sentence adds meaningful information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the return-value list is helpful, and the safety behavior is clear. However, the description omits parameter semantics and does not fully explain how page_start/page_end affect inspection, leaving noticeable gaps for a four-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25% and the description does not explain path, page_start, or page_end. Only workspace_id is described in the schema; the description adds no parameter-level clarification, leaving the agent to guess meanings and ranges.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('inspect a PPTX') and resource, and lists concrete outputs ('slide text, diagram-to-slide mappings, dgm:pt points...'). It is clearly differentiated from the sibling tools by its OOXML/SmartArt focus.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives such as file_info or image_open. It implies use for PPTX inspection but does not explicitly state selection criteria or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
server_infoLocal workspace safety statusARead-only
List the fixed workspace IDs, enabled capabilities, approved tasks, and safety boundary.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, which the description aligns with by using the non-destructive verb 'List'. The description adds useful specificity about what information is returned, going beyond the annotations. No contradictions are present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that lists the exact outputs. It is well-structured and front-loaded with the action verb, making it easy to understand at a glance. No unnecessary words or complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that there is no output schema, the description adequately informs the agent of what the tool returns: fixed workspace IDs, enabled capabilities, approved tasks, and safety boundary. This is sufficient for understanding the tool's result without needing additional details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the input schema is fully covered with an empty properties object. Since there are no parameters to describe, the baseline of 4 applies. The description does not need to explain parameters because there are none.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb 'List' and identifies the exact resources it returns: workspace IDs, capabilities, approved tasks, and safety boundary. This makes the tool's function unambiguous and distinct from typical file or workspace operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus its siblings. While it is clearly a read-only status tool, it does not explicitly state that it should be used for checking workspace safety before operations, nor does it mention alternatives. Thus, usage context is implied but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workspaceInspect the local workspaceARead-only
List files, page through UTF-8 text, stream literal search across large UTF-8 files, or page through git status/diff output. When multiple workspaces are configured, pass a workspace_id returned by server_info. All paths are relative; links, credentials, dependencies, and VCS internals are denied.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | . | |
| limit | No | Returned byte page size for read/status/diff. | |
| query | No | Required for literal search. | |
| action | Yes | ||
| offset | No | Byte offset for read/status/diff; result offset for list/search. | |
| pattern | No | Glob for list. | * |
| max_results | No | ||
| workspace_id | No | Required when server_info lists multiple workspaces. | |
| case_sensitive | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint=true, and the description is consistent with that while adding behaviors beyond it: literal (not regex) UTF-8-only searches, streaming/paging for large files, and denied content categories. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three front-loaded sentences: action capabilities first, workspace_id routing second, path/denial constraints third. No filler; every sentence carries operational information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter, five-action tool with no output schema, the description covers the action space, key routing, and constraints well. It does not specify output shapes or per-action result semantics, but the action names themselves make the expected results reasonably clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 56% schema coverage, the description adds meaning to several parameters: workspace_id's source and trigger, path's relative-base convention, query's literal-search nature, and limit/offset's page semantics. It does not expand on max_results or case_sensitive, but those are named and defaulted in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names explicit actions — list, read, search, status, diff — with concrete resource and scope (files, UTF-8 text, git output). This distinguishes it from sibling tools like file_info and edit_file by making clear it is a broad read-only workspace inspection surface.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear context for use: multi-workspace routing via server_info, relative paths, and a hard denial list (links, credentials, dependencies, VCS internals). It does not explicitly name sibling tools or say when to prefer file_info or edit_file, so it stops short of full alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_fileTransactionally write a large UTF-8 fileADestructive
Host-owned five-action transaction for large whole-file creates or replacements without requiring one giant MCP message. Use begin, then one or more append calls with the exact next UTF-8 byte offset, optionally status, then commit with the complete expected size and SHA-256; abort discards staging. Staging stays outside the workspace, replace mode rechecks the original target SHA at commit, and successful commit uses a same-directory fsync + atomic replace.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Required only for begin. | |
| path | No | Required only for begin. | |
| chunk | No | Required for append; runtime-enforced maximum is 4 MiB of UTF-8 bytes so even worst-case JSON escaping stays below the MCP message ceiling. | |
| action | Yes | ||
| offset | No | Required for append; exact next UTF-8 byte offset, making retries non-duplicating. | |
| workspace_id | No | Required when server_info lists multiple workspaces. | |
| expected_size | No | Required for commit; complete UTF-8 byte length. | |
| transaction_id | No | Returned by begin; required by append/status/commit/abort. | |
| expected_sha256 | No | Required for commit; SHA-256 of complete new UTF-8 bytes. | |
| expected_target_sha256 | No | Required for begin in replace mode; obtain with file_info. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only supply the generic destructive/idempotent profile; the description adds substantive traits beyond them: staging lives outside the workspace, replace mode rechecks the original target SHA at commit, abort discards staging, and commit is a same-directory fsync plus atomic replace. The offset-based non-duplicating retry guarantee is also stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences that lead with the transaction model, then the action sequence, then the durability and safety guarantees. Nothing is repetitive of the name or title, and every clause carries operational information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter, multi-action tool with no output schema, the description covers the full lifecycle and the return of transaction_id is captured in the schema itself. It leaves unstated what status or commit return on success and what happens when an offset mismatch or commit-contract failure occurs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 90%, so per-parameter documentation is already strong (baseline 3). The description goes further by binding parameters to actions as a cross-field contract: commit needs the complete expected size and SHA-256, append needs the exact next byte offset, and replace mode requires the original target SHA. It doesn't add format examples for the hashes, which the schema already constrains.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource with scope: a host-owned five-action transaction for large whole-file creates or replacements. The 'whole-file ... without requiring one giant MCP message' framing distinguishes it from the sibling edit_file, which handles partial edits.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit protocol sequencing (begin, one or more appends, optionally status, commit, abort) and the size/whole-file condition that motivates it. It stops short of naming edit_file as the alternative for small or partial changes, so the routing decision is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v0.8.36- Added
file_ops
1 tool update
v0.8.33- Changed
write_file1 field changed- changed
Input schema / properties / chunk / descriptionPrevious value: -"Required for append; runtime-enforced maximum is 128 KiB of UTF-8 bytes so even worst-case JSON escaping stays below the 1 MiB MCP message limit."New value: +"Required for append; runtime-enforced maximum is 4 MiB of UTF-8 bytes so even worst-case JSON escaping stays below the MCP message ceiling."
9 tool updates
v0.8.25- First observed
edit_file - First observed
extension - First observed
file_info - First observed
flight_recorder - First observed
image_open - First observed
pptx_inspect - First observed
server_info - First observed
workspace - First observed
write_file
TDQS
Scored across 10 tools
Each tool has a clearly distinct purpose: file operations, editing, reading/searching, metadata, specific format inspection, extension management, and server info. Even edit_file vs write_file are separated by size/chunking, and workspace vs file_info differ in scope. No overlapping or ambiguous tools.
All names use lowercase with underscores, but the verb/noun order varies: edit_file and write_file use verb_noun, while file_info and server_info use noun_verb, and workspace and extension are bare nouns. This inconsistency makes the pattern less predictable, though still readable.
10 tools is well-scoped for a file management and inspection server. Each tool covers a distinct aspect (copy/move, create/edit, read/search, metadata, format inspection, extensions, diagnostics) without redundancy or bloat.
The surface covers most file lifecycle operations (create, edit, read, copy, move, metadata) but lacks a delete operation. Also missing directory creation and possibly rename (though move may cover that). These are notable gaps for a file management server.
Maintenance
Related MCP Connectors
Persistent cloud workspaces for AI agents: run commands, edit files, use git and a browser.
Work on your own computers from Claude or ChatGPT: run commands, edit and search files.
- flockfsOAuthcom.flockfs
A real-time, multiplayer filesystem for agents and humans: shared files, live edits, history.
Give every project one workspace for its files, its team, and its AI agents.
Related MCP Servers
- FlicenseBqualityDmaintenanceA read-only MCP server that exposes a local code workspace to AI clients via stdio, providing file browsing and text search capabilities with path safety rules.1-
- AlicenseNot gradedqualityCmaintenanceA deliberately narrow, approval-gated workspace server that safely reads and writes files and runs allowlisted commands only inside one configured workspace, requiring visible approval for every write, process execution, and file read, with stale-overwrite protection and symlink-escape rejection.1MIT
- FlicenseAqualityCmaintenanceA read-only MCP server that lets AI assistants inspect local workspace files, search context, view git diffs, and fetch a fixed GitHub profile, all within a sandboxed stdio transport.5-
- AlicenseNot gradedqualityAmaintenanceEnables AI clients to safely read, search, understand, and edit local project code and files, with Git inspection, code indexing, and controlled command execution within permissioned workspaces.3 npm6MIT