FolderBridge MCP
FolderBridge MCP
简体中文 | English
[!TIP] Сам FolderBridge — это Windows-приложение из одного файла: скачайте
FolderBridge.exeнапрямую и запустите его двойным щелчком. Установка Python или Node.js не требуется. Бинарный файл находится на GitHub в разделе Releases → latest release → Assets; в списке исходных файлов репозитория его нет. Для ChatGPT на веб-сайте FolderBridge по-прежнему использует официальныйtunnel-client.exe, распространяемый OpenAI отдельно; лаунчер сам подскажет, как его выбрать. Вы также можете открыть полную страницу релиза, чтобы скачать EXE и, при желании, соседний файл контрольной суммы SHA-256.
Более безопасный, локальный мост между AI-клиентами и небольшим набором папок, которые вы выбираете явно и осознанно.
FolderBridge MCP — это MCP-сервер на Python без зависимостей плюс настольный лаунчер. Он позволяет ChatGPT в вебе — или любому клиен y, поддерживающему локальный stdio MCP, — просматривать и аккуратно редактировать ограниченное локальное рабочее пространство. Он намеренно избегает публичного HTTP-сервера, произвольного доступа к оболочке, телеметрии и скрытых фоновых служб.
[!IMPORTANT] Проект находится на ранней стадии публичной бета-версии. Он снижает поверхность атаки, но не является песочницей операционной системы. Открывайте доступ только к тем папкам и репозиториям, которым доверяете.
Ключевое в 0.5.1
Публикация в GitHub, авторизуемая через браузер: новое встроенное расширение
git-publisherумеет открыть авторизацию GitHub через Git Credential Manager, хранить OAuth-учётные данные в Windows Credential Manager, коммитить только явный список разрешённых файлов и отправлять только текущую ветку в существующий GitHub-HTTPS-remote. Никакое поле token/PAT/password не показывается модели.Git-публикация остаётся ограниченной: Publisher отклоняет уже проиндексированные изменения (staged), файлы, похожие на учётные данные/ключи, изменяющие содержимое Git-атрибуты и небезопасные локальные настройки репозитория; он никогда не выполняет
git add ., не принимает произвольный remote/ref, отключает Hook/подпись для своего ограниченного коммита и никогда не делает force-push.Собственный визуальный конвейер Microsoft Office: встроенное расширение
officeотображает.pptx,.docxи.xlsxв локально установленном Microsoft Office. PowerPoint экспортирует слайды напрямую в PNG; Word/Excel используют собственные механизмы макета фиксированной страницы и Windows PDF renderer для создания страниц PNG.Чтение структуры Word без запуска Word:
inspect_docxпредоставляет абзацы, стили/нумерацию, таблицы, секции / настройки страницы, колонтитулы, мультимедиа, гиперссылки, сноски/концевые сноски и комментарии из OOXML.Чтение структуры Excel и формул без запуска Excel:
inspect_xlsxпредоставляет листы, ограниченные диапазоны ячеек, функции plus закэшированные значения, объединённые диапазоны, скрытые строки/столбцы, определённые имена, параметры вычислений и компоненты внешних ссылок.Готовый к аудиту вывод: собственный рендеринг может записать детерминированный каталог PNG, ZIP рядом с ним, и возвращает SHA-256 / размер и для исходного Office-файла, и для результатов; существующий инструмент
image_openзатем может визуально проверить каждую страницу или элемент ZIP.Автоматизация Office ограничена: принимаются только пути внутри рабочей области без ссылок; форматы с макросами исключены; макросы автоматизации Office принудительно отключены; файлы открываются только для чтения; обновление ссылок Excel отключено; встроенный PowerShell-скрипт фиксирован и никогда не принимает произвольные команды.
Прежние улучшения безопасности и интерфейса 0.4.x сохранены: высокий DPI-скролл, диагностика управляемого сервиса ComfyUI, стабильный шлюз расширений, ограниченные глобальные функции и одностраничная поставка Windows — без изменений.
История всех релизов — в CHANGELOG.md, а описание границ управляемого сервиса и подключаемых модулей — в Extension ABI v1.
Related MCP server: Forge Workspace MCP Server
Почему FolderBridge?
Независимые границы папок: одно подключение может содержать до восьми канонических рабочих пространств; каждый вызов мульти- workspace-инструмента выбирает
workspace_id, а не объединяет корни.По умолчанию только чтение: переключение в режим чтения/записи выполняется явно в лаунчере.
Безопасные изменения при конфликте: для существующих файлов требуют SHA-256, получнный при последнем чтении; устаревшие изменения завершаются ошибкой, а не перезаписывают новую версию.
Нет произвольной оболочки: необязательные задачи являются именованными, локально просматриваются и утверждаются по точному хэш-конфигу.
Нет публичного слушателя: MCP-сервер использует только stdio.
Нет телеметрии: сам FolderBridge не выполняет сетевых запросов.
Безопасный с секретами лаунчер: ключ OpenAI Runtime API остаётся только в памяти и удаляется до того, как локальный процесс MCP сможет его использовать.
Понятный настольный интерфейс для новичков: список добавления/удаления папок, глобальный режим доступа, настройка Tunnel, диагностика, запуск/остановка, мониторинг процессов и логи (сокрытые пароли) — в одном окне.
Поддержка масштабирования Windows: шрифты и размеры окон следуют текущему DPI дисплея и обновляются при перемещении между мониторами с разными масштабами.
Быстрый старт
Требования зависят от того, как вы используете FolderBridge:
Автономный Windows-EXE: отдельная установка Python или Node.js не требуется; Windows — проверенная среда для запуска двойным кликом.
Запуск / разработка из исходников: требуется Python 3.11 или новее; для Windows рекомендуется Python 3.11 x64.
Возможности проекта: инструкция только тот инструментарий (toolchain), который требуется самому рабочему пространству (например, Node.js LTS для тестовых/сборочных скриптов Node/npm-проекта). Включение возможности само по себе не устанавливает соответствующий инструментарий.
Git необязателен. Ограниченные представления
status/diffиспользуют Git, если он доступен; расширение Git Publisher, кроме того, требует Git for Windows и Git Credential Manager для авторизации в GitHub через браузер.
Windows-исполняемый файл — рекомендуется
Скачайте из_RELEASEsingle FolderBridge.exe из последнего релиза GitHub Assets, или скачайте EXE напрямую. В списке исходных файлов репозитория этого бинарники не будет. FolderBridge.exe — это полное приложение FolderBridge, в котором уже работает среда выполнения Python, поэтому обычным пользователям EXE не нужно ставить Python или Node.js. Рядом с ним может находиться дополнительный файл FolderBridge.exe.sha256, он нужен только для проверки целостности.
Одностраничный исполняемый файл специально не включает сторонний разработанный OpenAI клиент tunnel-client; загрузите официальный клиент отдельно и выбирайте tunnel-client.exe в лаунчере, только когда используете ChatGPT на веб-версии.
[!NOTE] Текущая пользовательская сборка не подписана кодом, поэтому Windows определяет издателя как неизвестного. Если вы не доверяете неподписанному бинарнику, соберите его из проверенного исходного кода.
Запуск из исходников
Клонируйте репозиторий и запустите GUI:
git clone https://github.com/MoonTzai/folderbridge-mcp.git
cd folderbridge-mcp
python .\folderbridge_launcher.py guiДобавьте нужные рабочие папки, оставьте переключатель Read only для первого запуска и используйте панель состояния для завершения настройки. Настройки лаунчера хранятся вне репозитория; ключ Runtime API никогда не сохраняется. Устаревшая настройка одной рабочой области автоматически переносится в первую запись списка.
folderbridge_gui.pyw остаётся как удобство для Python-установок, у которых ассоциация .pyw указывает на интерпретатор Tkinter. Отдельный FolderBridge.exe — это поддерживаемая точка входа двойным кликом.
Дополнительные инструментарии для разработки и проектов
Это не является обязательным для обычного использования FolderBridge.exe:
Для разработки исходников или пересборки Windows EXE установите Python 3.11 x64 с официальной страницы загрузок Python and verify
python --version. Сборка использует изолированную.build-venvиrequirements-build.txt.Устанавливайте Node.js LTS с официальной страницы загрузки Node.js только в том случае, если целевой Node/npm-workspace требует
node/npmдля собственных команд тестов или сборки; проверьтеnode --versionиnpm --version.Другие проекты могут требовать свои собственные среды выполнения или компиляторы. Возможности FolderBridge предоставляют авторизацию и ограниченное обнаружение/выполнение, но не установку зависимостей.
Подключение ChatGPT на веб-сайте
ChatGPT не может подключиться напрямую к локальному процессу stdio. Для этого пути FolderBridge использует официальный Secure MCP Tunnel от OpenAI: Secure MCP Tunnel. Вам понадобятся:
[!IMPORTANT] Secure MCP Tunnel требует только исходящий HTTPS (по умолчанию порт 443) с этого компьютера и не требует входящего порта из интернета. Никогда не PowerPoint для FolderBridge Windows Remote Desktop, проброс портов на роутере, DMZ, UPnP-маппинг или порт
3389; ни один из них не является частью настройки Tunnel. Если брандмауэр спрашивает входящий доступ, не создавайте широкое публичное правило входящего доступа только для того, чтобы заработал Tunnel.
tunnel_idв настройках Tunnel платформ OpenAI;ключ для
tunnel-clientиз того же организации Runtime API Keys;официальный tunnel-client;
доступ ChatGPT developer-mode, соответствующий вашей учётной записи или рабочему пространству.
Нажмите 连接设置向导 (Connection setup guide) в верхнем правом углу лаунчера, чтобы увидеть те же шаг и подсказки, включая опциональный администратор Python/Node.
1. Скачайте официальную Windows x64 client
[!WARNING] Скачивайте только полный архив
tunnel-client-v<version>-windows-amd64.zip. Никогда не скачивайте и не выбирайтеtunnel-client-runtime-*. Runtime-файлы — это внутренние компоненты; они не реализуют командуinit, требуемую для настройки; их похожие имена могут привести к ошибке «configuration failed». После извлечения полного архива выбирайте только основную программу с именемtunnel-client.exe.
Откройте последний релиз
openai/tunnel-clientи разверните Assets.Скачайте полныйархив
tunnel-client-v<version>-windows-amd64.zip. В названиях файлов релизаamd64означает Windows x64 — это правильно для большинства компьютеров Intel/AMD.При желании скачайте
SHA256SUMS.txtдля проверки. Не выбирайте и не скачивайтеtunnel-client-runtime-*,windows-arm64,all.zip, исходники или лицензии; архив Runtime не может заменить полноценный клиент.Извлеките весь ZIP в постоянную папку; установщика нет, не запускайте его прямо из архива. Мастер может создать и открыть папку
%LOCALAPPDATA%\FolderBridge\binкак рекомендуемое место.Вернитесь в FolderBridge, нажмите 选择已解压的 EXE и выберите только файл с точным именем
tunnel-client.exe.
2. Создайте Platform Tunnel
Откройте настройки Tunnel платформы OpenAI, нажмите Create tunnel и используйте текущие варианты:
Поле | Рекомендуемое значение | Примечания |
Name |
| Настраиваемое отображаемое имя |
Description |
| Обязательно; настраивается |
Organizations |
| Для команд выберите Platform-организацию, которая управляет этим Tunnel |
ChatGPT workspaces | Рабочее пространство, в котором вы создадите приложение | Не оставляйте пустым; у личного аккаунта обычно один workspace ID |
После создания скопируйте Tunnel ID, начинающийся с tunnel_. Запуск и выбор этого Tunnel требует прав Tunnels Read + Use; создание или изменение также требует прав Manage. Привязывайте только те организации и рабочие пространства ChatGPT, которым действительно нужен доступ к этому локальному рабочему пространству.
Создайте ключ для tunnel-client в разделе Runtime API Keys той же Platform-организации: Runtime API Keys; его создателю нужны права Tunnels Read + Use. Вставляйте ключ только в FolderBridge, где он остаётся в памяти процесса. Не используйте ключ администратора (Admin API key) и не помещайте Runtime-ключ в поле Authentication приложения ChatGPT.
3. Запустите FolderBridge
Добавьте одну или несколько папок рабочих пространств (до восьми) и при первом запуске оставьте режим «Только чтение (рекомендуется)». Глобальный режим доступа применяется ко всем указанным папкам.
Выберите
tunnel-client.exeиз полного архива и никогда не используйте компонентtunnel-client-runtime-*; подходит профиль по умолчаниюfolderbridge.Введите тот же Tunnel ID и тот же ключ Runtime API. При желании один раз включите нужные глобальные возможности; расширенные именованные задачи для отдельных рабочих пространств оставьте отключёнными, если вам не нужна собственная команда.
Нажмите Start connection (Начать подключение). Лаунчер выполняет официальный процесс
init,doctorиrun. Продолжайте, только когда статус вверху перейдёт в 运行中 (Running). При последующем изменении папки или режима доступа снова нажмите 应用配置 (Apply configuration); лаунчер обновляет тот же управляемый им профиль.
4. Создание приложения ChatGPT в режиме разработчика
Откройте ChatGPT Plugins, нажмите + и используйте следующие важные параметры:
Поле | Требуемый выбор |
Connection | Tunnel |
Available Tunnel | Выберите тот же Tunnel, либо вставьте его ID |
Authentication | No authentication (без аутентификации) |
[!WARNING] Не оставляйте в форме выбранный по умолчанию вариант OAuth, а также не вставляйте адрес вида
https://tunnel-service...в поле Server URL. FolderBridge не реализует пользовательский OAuth, поэтому такая конфигурация приводит к ошибкеdoes not implement OAuth.
Вызов приложения в диалоге ChatGPT
Держите FolderBridge в статусе 运行中 (Running), затем начните новый диалог ChatGPT.
Нажмите + рядом с полем композера, откройте раздел More и выберите созданное приложение FolderBridge.
Отправьте задачу, например: «First use FolderBridge
server_infoto list the available workspaces, then read the root of the workspace I call». Перед одобрением проверьте в подтверждении любого инструментаworkspace_idи целевой файл.
Эта точка входа следует официальному руководству OpenAI по подключению и тестированию: connect and test guidance. Руководство по подключению в лаунчере включает те же шаги и готовый для копирования одним кликом пример запроса.
Держите лаунчер запущенным, пока ChatGPT работает с рабочим пространством. Его закрытие останавливает процесс Tunnel. Подтверждения режима разработчика и установки приложения на уровне аккаунт в ChatGPT; FolderBridge не автоматизирует ваш браузерный сеанс или настройки безопасности.
Расширение браузера не требуется. FolderBridge намеренно не загружает и не запускает тихо binaries через сеть.
Подключение другого локального MCP-клиента
Да. Слой совместимости FolderBridge — это стандартный MCP-сервер на stdio. ChatGPT Tunnel является лишь мостом для веб-клиента, который не может запустить локальный процесс. Транспорт MCP stdio также определяет, что клиент запускает серверный подпроцесс и обменивается JSON-RPC через стандартный ввод/вывод. MCP stdio specification
Требования к клиенту
Он может настроить локальную пару «команда + аргументы» и оставить подпроцесс работающим.
Поддерживает MCP через
stdio, оставляя stdout для протокольных сообщений.Может обнаруживать и вызывать MCP-инструменты (
initialize,tools/list,tools/callили спользованием современного процесса обнаружения 2026-07-28).Закрывает stdin или завершает подпроцесс при окончании сеанса.
Предпочтительно иметь клиент с интерфейсом подтверждения вызова инструментов, но не считайте его диалог подтверждения единственной границей безопасности.
Сейчас FolderBridge поддерживает пути протокола 2024-11-05, 2025-03-26, 2025-06-18, 2025-11-25 и 2026-07-28. Он возвращает стандартные схемы инструментов, текстовое содержимое и structuredContent; появление запроса подтверждения зависит от конкретного клиента. MCP Tools specification
Тип клиента | Прямое подключение? | Маршрут |
Локальное десктоп-приложение или IDE с MCP по stdio | Да | Используйте |
Локальное приложение с одним комбинированным полем команды | Обычно | Вставьте полное stdio-команду и сохраните кавычки пути |
Клиент, принимающий только удалённый HTTP/SSE URL | Нет | Используйте официальны chm=шлюз/прокси этого клиента либо разверните отдельно защищённый MCP-мост |
Только веб / мобильный / облачная песочница | Обычно не к локальному ПК | Используйте официальный Tunnel/удалённый механизм данного вендора на доверенном хосте, который может достичь рабочего пространства |
Кратчайшая локальная настройка
Добавьте в FolderBridge одно или несколько рабочих пространств и оставьте режим «Только чтение (рекомендуется)».
Откройте страницу 5 мастера 连接设置向导 и скопируйте JSON, TOML или полную stdio-команду.
Вставьте её в настройки MCP Servers клиента; точные имена полей смотрите в документации клиента.
Перезапустите или обновите клиент и проверьте, что видны
server_infoиworkspace.
Прямое stdio-подключение не требует tunnel-client, Tunnel ID, Runtime API-ключа или работающего графического интерфейса FolderBridge. При необходимости клиент запускает эту команду:
FolderBridge.exe serve --workspace C:\path\to\repo --read-onlyУказывайте --workspace несколько раз, чтобы добавить папки, сохраняя каждый корень независимым:
FolderBridge.exe serve --workspace C:\work\frontend --workspace C:\work\backend --read-onlyСгенерируйте конфигурации, готовые для вставки, из источника:
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-onlyJSON на выходе соответствует распространённому соглашению mcpServers, используемому многими десктоп-клиентами:
{
"mcpServers": {
"folderbridge": {
"command": "C:\\Tools\\FolderBridge.exe",
"args": ["serve", "--workspace", "C:\\work\\frontend", "--workspace", "C:\\work\\backend", "--read-only"]
}
}
}[!IMPORTANT] Ключи верхнего уровня в JSON/TOML — это распространённые соглашения, а не универсальные требования клиентов. Совместимость в итоге означает, что клиент запускает команду/аргументы без изменений как подпроцесс MCP через
stdio. Если клиент принимает только URL, в этой версии нет HTTP/SSE-слушателя; не открывайте эм локальный порт напрямую в публичном интернете.
См. исследование совместимости клиентов о версиях протоколов, жизненном цикле процессов, cwd/env, границах подтверждения и деталях удалённого моста.
Инструменты и порядок редактирования
Встроенные серверные инструменты не зависят от конфигурации задач для каждого рабочего пространства:
server_info: сообщает имя каждого доступного рабочего пространства, стабильныйworkspace_id, встроенные/глобальные возможности и границу безопасности;workspace: выводит список, читает, ищет и показывает ограниченный по объёму Git status/diff внутри выбранногоworkspace_id;file_info: возвращает ограниченные метаданные и SHA-256 для бинарных файлов;pptx_inspect: проверяет текст презентаций PPTX, диаграммы/связи OOXML и данные SmartArt, не исполняя содержимое Office;image_open: передаёт содержимое PNG/JPEG/GIF/WebP в MCP-клиент, включая точные изображения внутри ZIP-архивов;extension: стабильный шлайlist/info/runдля подгружаемых расширений; установка новых плагинов не добавляет новых имён MCP-инструментов;edit_file: в read/write-режиме создаёт или точно редактирует UTF-8 файл внутри выбранного рабочего пространства.
При любом одном рабочем пространстве существующие клиенты могут не передавать workspace_id. При нескольких рабочих пространствах инструменты, привязанные к workspace, требуют workspace_id, возвращённый функцией server_info; отсутствие или неизвестный ID приведёт к отклонению. Дублирующие друг друга корни, пересечения родитель/потомок, а также списокS более восьми записей отклоняются до запуска.
Безопасный цикл редактирования:
вывести список или найти файл;
прочитать его и сохранить возвращённый SHA-256;
отправить точную замену с этим хэшем;
проверить Git diff.
Сервер не может удалять или перемещатьфайлы. Абсолютные пути, .., символические ссылки, junction/reparse-точки, внутренние структуры VCS, стандартные папки пакетов/сборки и имена, похожие на учётные данные, отклоняются.
Глобальные предварительно авторизованные возможности
Лаунчер может один раз авторизовать общие возможности для всех текущих и будущих рабочих пространств: test, build, package-windows, package-android и git-push. Эти разрешения хранятся в настройках лаунчера, а не в .folderbridge-backup, поэтому рабочее пространство может получить поддерживаемый скрипт сборки через несколько месяцев после добавления — FolderBridge обнаружит его в момент вызова. Лаунчер также предоставляет элементы Select all и Clear для этой группы.
git-push остаётся низкоуровневой возможностью только push, ограничена GitHub HTTPS-origin, текущей веткой, без force push и без локального credential helper или конфигураций перезаписи цели push. Для авторизации браузера и commit + push из явных файлов используйте встроенное расширение Git Publisher. Возможности build/package могут выполнять локальный код проекта, поэтому включайте только те глобальные возможности, которые вам нужны.
Для прямых stdio-клиентов добавьте повторение --capability <name>, чтобы использовать команды serve или client-config. Лаунчер Windows представляет такие же возможности в виде постоянных флажков.
Расширения
Расширите FolderBridge Extension ABI v1 — это предпочтительный способ добавления будущих глобальных интеграций, таких как ComfyUI, FFmpeg, Blender, Ollama, ADB или других локальных инструментов, без изменения каталога MCP-инструментов. Windows-лаунчер имеет свернутую по умолчанию боковую панель Extensions, которая сканирует каталог пользовательских расширений, показывает состояние установленных/одобренных/загруженных и позволяет одобрять или отключать плагины при активном Tunnel.
Каждое расширение — это каталог минимум с двумя файлами: folderbridge-extension.json и plugin.py. Внешние плагины одобряются на точное SHA-256 полного каталога плагина и объявленного списка прав; изменение любого файла или списка прав делает одобрение недействительным. Расширения запускаются в отдельном подпроцессе с чистой средой, ограниченным протокольным I/O и объявленным таймаутом. Это изолирует сбои и «загрязнение» протокола, но это не пес ним от операционной системы — для непроверенного кода используйте виртуальную машину/контейнер.
Адаптация под конкретный workspace должна использовать workspace_adapter.mode=dynamic с detect.any_of / detect.all_of. FolderBridge заново проверяет эти шаблоны в момент вызова, поэтому расширениям не нужно внедрять задачи .folderbridge.json при установке — они могут стать применимыми позже, когда проект изменится. Постоянное состояние плагинов следует хранить в предоставленной директории состояния профиля (profile state), а не засорять репозитории.
ComfyUI — первое встроенное расширение. Его действие проверки состояния обращается к фиксированному loopback-адресу 127.0.0.1:8188; выполнение workflow требует одноразового подтверждения на боковой панели Extensions. В FolderBridge 0.4.1 лаунчер для Windows может также сам управлять локальным процессом ComfyUI: один раз выберите поддерживаемый корень Portable (python_embeded\\python.exe + ComfyUI\\main.py) или корень исходников (main.py + .venv\\Scripts\\python.exe / venv\\Scripts\\python.exe) — после этого лаунчер сможет автоматически запускать его с явными аргументами Python/main.py, shell=False и фиксированной привязкой к 127.0.0.1:8188. Если этот endpoint уже доступен до того, как FolderBridge запустит его, служба помечается как внешняя и переиспользуется, а не запускается повторно.
Владение управляемой службой намеренно строже, чем права расширений. FolderBridge хранит только install_root и auto_start — никогда не PID и не произвольную команду. Только in-memory-дескриптор Popen, созданный текущим запуском лаунчера, считается принадлежащим и останавливаемым. FolderBridge никогда не запускает выбранный пользователем BAT/CMD для ComfyUI и никогда не ищет и не убивает неизвестный процесс только потому, что он занимает порт 8188. При выходе FolderBridge останавливает принадлежащие ему управляемые службы до Tunnel/MCP; внешний ComfyUI остаётся запущенным.
В Windows лаунчер запрашивает режим Per-Monitor DPI V2 awareness, а также опрашивает текущий DPI окна как лёгкий запасной вариант. Фиксированные метрики GUI пересчитываются из первоначальных логических размеров (dpi / 96) только при реальном изменении DPI, поэтому переход 96 → 144 → 96 DPI не накапливает дрейф масштабирования.
Плагины ABI v1 должны использовать модули, поставляемые с FolderBridge, и стандартную библиотеку Python, а не рассчитывать на произвольные зависимости pip внутри однофайлового EXE. Внешнее ПО обычно следует подключать через точный loopback API или объявленную зависимость process.execute:<basename>. Выполните FolderBridge.exe extensions --json, чтобы посмотреть, что может обнаружить упакованный исполняемый файл. В приложении к руководству по подключению приведён полный формат, а также LLM plugin-development prompt в один клик — он предписывает модели запрашивать или загружать недостающую API-документацию, скрипты, workflow, примеры файлов или структуру проекта, а не угадывать. См. Extension ABI v1.
Необязательные именованные задачи для каждого workspace
Произвольный командный текст через MCP не принимается никогда. Чтобы задать нестандартные команды, специфичные для репозитория и не покрытые глобальными возможностями, создайте и проверьте локальную политику задач:
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\repoЗатем включите одобренные задачи в лаунчере или добавьте --allow-tasks к сгенерированной команде сервера. Включение этого флага не требует, чтобы каждый настроенный workspace содержал .folderbridge.json: workspace без конфигурации, workspace с одобренными задачами, workspace только с расширениями и workspace с ещё не одобренной конфигурацией могут сосуществовать в одном подключении. Одобрение проверяется в момент фактического вызова именованной задачи этого workspace. Модель может выбрать только имя задачи; она не может передать команду, аргументы, переменные окружения или рабочую директорию.
[!WARNING] Тесты, инструменты сборки и скрипты пакетов выполняют код из репозитория с правами вашего пользователя ОС. Для не доверяемых репозиториев используйте одноразовую VM или контейнер либо оставьте выполнение задач отключённым.
Модель безопасности
FolderBridge считает MCP-запросы, текст репозитория и вывод инструментов недоверенными данными. Проверки реализованы в коде самих инструментов, а не только в аннотациях MCP. Основные средства контроля:
каноническое ограничение путей и отказ от символических ссылок для каждого workspace, перекрывающиеся корни запрещены;
ограниченные по размеру чтение UTF-8, результаты поиска, вывод Git, вывод подпроцессов и известковые служебные сообщения;
атомарные записи с предусловием по актуальному хэшу текущего содержимого;
защищённые локальные файлы политик;
shell=False, фиксированные массивы аргументов, чистые окружения задач и таймауты;манифесты расширений отклоняют неизвестные или чрезмерно широкие названия прав; одобрение расширения привязывается к точным хэшам кода и правам; выполнение плагинов вынесено из процесса MCP;
нет входящего сетевого слушателя и никакой телеметрии FolderBridge.
См. подробное описание модели безопасности и исследование вышестоящей архитектуры. Для сообщений об уязвимостях — SECURITY.md.
Разработка
Сторонних зависимостей времени выполнения (runtime dependencies) нет.
python -m unittest discover -s tests -vПрежде чем открывать pull request, см. CONTRIBUTING.md.
Сборка Windows-исполняемого файла
Сборка использует зафиксированную зависимость PyInstaller только на время сборки. Релизный EXE использует консольный bootloader с флагом hide-console=hide-early: одиночный клик открывает только GUI, но тот же самый EXE сохраняет stdio-каналы, когда Tunnel запускает подкоманду 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.exeАртефакты и файл SHA-256 записываются в release\windows-x64.
Лицензия
Распространяется по лицензии Apache License 2.0.
FolderBridge MCP является независимым проектом с открытым исходным кодом. Он не связан с OpenAI, не одобрен и не спонсируется ей. ChatGPT, OpenAI, MCP и другие названия продуктов принадлежат их соответствующим владельцам.
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