Skip to main content
Glama
quangtruong2003

Local Workspace MCP Manager

Local Workspace MCP Manager

Настольное приложение для Windows, которое позволяет ChatGPT Web (режим разработчика) безопасно читать, искать, просматривать и редактировать файлы в папках, которые вы явно одобрили, и при желании выполнять одобренные команды разработчика. Собрано как однопроцессное приложение Rust/Tauri со встроенным MCP-сервером (Streamable HTTP на 127.0.0.1), публикуемым в ChatGPT через Tailscale Funnel.

К вашей файловой системе есть ровно один MCP-вход: конвеер политик, закрывающийся при сбое (fail-closed). Через него проход каждый вызов MCP-инструмента. Десктоп-интерфейс — это отдельн контур админиестративного управления правами рабочиых про странств, настройками подключения и жизненным циклом; стро ки аудита в UI — это операционная история, а не управляющий затвор конвейера, который закрывает доступ при сбое.

Каун истроен коннекшен

  • MCP-сервер привязывается к адресу только loopback (127.0.0.1:<ephemeral port>).

  • Встроенный sidecar Tailscale Funnel публикует этот loopback-сервер в публичный интернет по адресу https://<your-hostname>.ts.net (одноразовое включение администратором tailnet: HTTP-сертификаты и атрибут узла funnel).

  • Публичный URL содержит секретный capability-токен. Funnel — это публичный вход (public ingress): единственная защита endpoint — это тайность самого URL, поэтому общаться с ним как с апаролем: любой, кто его получил, к может вызь вать ваш MCP-коннектор. В любое время вы можете перевыпустить его в разделе Безопасность → Перевыпустить URL подключения.

Related MCP server: local-mcp-chatgpt-tunnel

Технологический стек

  • Shell: Tauri 2 (Rust) с системным треем (открыть, запустить/остановить туннель, приостановить MCP-доступ, выйти), закрытием в трей, автозапуском при входе в систему, запуском в свернутом в трей виде и защитой от повторного запуска

  • UI: React 18 + TypeScript (строгий), стили на Tailwind CSS v4 и включенных в проект primitives shadcn/ui (new-york/zinc, токены радиуса 2px «Quiet Console»); toasts через sonner; встроенные шрифты Inter Variable / JetBrains Mono Variable; тема Light/Dark/System сохраняется в настройках

  • Базовый конвейер: crates/core — конвейер политик с закрытием при отказе (пауза → рабочая область → capability → изоляция → денай-лист чustвительных файлов → выполнение) с append-only SQLite аудитом журналом

Предварительные условия

  • Windows 10/11

  • Инструментариальный набор Rust с целью MSVC (rustup default stable-x86_64-pc-windows-msvc) и Visual Studio Build Tools (рабочая нагрузка C++)

  • Node.js (LTS) + npm

  • Аккаунт Tailscale (бесплатности достаточно); админ tailnet должен один раз включить Funnel (HTTPS-сертификат в настройках DNS и атрибут узла funnel в Access controls)

Сборка и запуск

npm install

# Development (hot-reload UI):
npx tauri dev

# Release build (produces an NSIS installer):
npx tauri build

Артифакты попадают в src-tauri/target/release/ (исполняемый файл) и src-tauri/target/release/bundle/nsis/ (установщик).

Бинарные файлы sidecar

Sidecar Tailscale Funnel (Go, в sidecars/tailscale-funnel) собирается шагом упаковки (npm run build:sidecarscripts/build-tailscale-sidecar.ps1) и является единственным сетевым sidecar, поставляемым как binaries/tail.scale-funnel-sidecar. Ранее запущенный туннельный рантайм OpenAI/Cloudflare больше не компилируется и не паккезуется; устарение пар- с лишь изся оставлено только для совместимости с обстовлением.

Первичная настройка

  1. Запустите приложение и проходите мастер настройки: добавте на одной** рабочее про странство (по умолчанию включено чтение, запись/выполнение — выключены), затем ады определльной вход в Tailscale по запросу.

  2. Наж мите Запуск на поверхности. Приложение за стрит локальный MCP-сервер, за спускает sidecar Funnel и проводит через одноразовые одобрения со стороны tailnet-администратора.

  3. Когда карточкам станет Онлайн, скопируйте секретный capability URL в ChatGPT (Developer Mode → создайте коннектор типа MCP / remote endpoint) и держите его в секрете.

Повседневное поведение настройается в Настройках:

  • Общие: автоматический запусти туннеля при начале приложения, апуск с Windows, сворачивание в трен при запуске, продолжение работы в трее при закрытии окна

  • Внешний вид: theme Light / Dark / System

  • Подключение: метка Funnel hostname (для е из зменения требует сбруса айдентичности Tailscale)

Системный трей отражает основные действия: открыть окна, дозапустить/остановить туннель, приполнозить/возобновить MCP-доступ, выйти.

MCP-инструментарий

Предоставляется десять инструтментов. list_workspaces возврацает идентификаторы одобренных рабочих пространств (редакция — никогдаабсолютные путы; на него действуют пауза и аудит, как и на любой инструмент). Девять workspace-скопных инструтов: list_directory, find_files, search_text, read_file, read_files (≤8 за вызов), create_file (≤10 объекта), apply_patch, run_command (одобренные baseимена: git, cargo, rustc, npm, npx, node, pnpm, yarn, python, python3, pip), и go, dotnet и run_powershell (требуется Full PowerShell режим рабочего пространства). Инструты чтения возвращают ограниченные результаты (read_file возвращает окно ≤256 KB с флагом усечения) и содержат revision (sha256); apply_patch требуется как base_revision.

Модель безопасности

  • Только адрес loopback: MCP-сервер слушает строго 127.0.0.1, никогда всех интерфейсов. Единственный внешнический выход — єто исходящий HTTPS-фunnel через sidecar.

  • Секретный capability URL: публичный endpoint внедряет неугадываемый capability-токен; на самом endpoint нет логина. Если он утечка, повторите его из страницы Security.

  • Переключатель паузы (kill switch): один тумблер (UI, трей) приостанавливает все вызовы MCP tools (вкл. list_workspaces), UI работает дальше. Пауза действует даже в несбитой mode.

  • Конвейер fail-closed: каждый вызов инструмента проходит одинконвейер — паузер, поиск рабочего пространства, capability gate (READ_DISABLED / WRITE_DISABLED / EXECUTE_DISABLED),ограничение пути (канонизированный, почистовой containment; symlinked paths не могут выйти за пределы), deny-list sensitive файлов, политика выполнения — и записывает ровно одну строку адита. Любое failure конвейера расшибка в короткое замыкание, и несписанная а дефицит-строка вызывает отказ вызова.

  • Deny-list чувствительных файлов: .env*, *.pem, *.key, id_rsa*, .git/config, credentials*, *.pfx, *.p12, secrets.* и всё node_modules/** блокируется на любой глубине, как для чтении so и для записи. Преодоление запретов requires unrestricted mode (см. ниже) либо code changes.

  • Редактирование через пачи: изменеения — это якорные подstrom замены (apply_patch), а не перезапись files; каждое изменение carry base_revision (SHA-256 содержимого файла по последнему виду) и вызовет ошибку FILE_CHANGED_SINCE_READ, если файлл был изменен elsewhere. Новые заданы атомарно через временный file + rename.

  • Append-only audit log: каждый MCP-запрос записывает apprently одну аудиrow (allow / deny / error) перед отправиение ответа; строки записей never can be измненены или удалены. Record с in restricted are marked. UI показывавает последние 100 an event events.

  • Limited выплолнение: команды запускатся без shell (без проа поверхс to quoting/parsing), в пределах Infinite Job Object Windows (timeout kill the whole processor &quotkernel three), с обрегом окружением, тайм-аут по умолчанию 60 c / макс. 10 миниут, 512 KiB per output stream. PowerShell-скрипт передается только через stdin — не через argv, ауди-деталей or диагностики; дочерние console windows not показывются at all.

  • Неограниченныйо дострип (неопт-ин, на volont): переключатель на странице Security, прячето за подтверждением typed and stale red band. Mosлабляет capability gates, deny-list, approved-command list, and Full-PowerShell mode gate — для всех рабочих простр. Граница папок (paths still inside registered workspaces), kill pause-truck, audit logging remains. Includes он, эгаy and ecology of conversation.

  • Обработке secret: capability-токен never пападает в readback-пути UI, командной строке and diagnostics. Секреты соединения го house in DPAPI store underВ шестые LocalAppData; settings.json не содержит никакие secrets, only non-secret prferences.

  • **Защищенный webview: непустой Content-Security-Policy (default-src 'self', ограниченный connect-src для IPC, allowaclсо Inline styles for Radix positit.); opener plugin includes only login.tailscale.com, tailsccale.com and *.ts.net URLs.

From slowdowns (Honest)

  • Рабочая directory-ограничness не является Windows security sandbox: accessable program ка be изняние paths outside workspace в вашем имя.

  • Tunneль — это публичный вход; единственный защитник endpoint — секретность capability URL. По сомнению — перенаправьте его.

  • Tailscale-tailnet + ChatGPT acceptance — о. Неполная принятие-реша, до объявления релиза production-certificate, автоматизирующую безопасность lifecycle/MCP — не заменяет внешней проверки.

Codes errors

Errors tools present structured results { code, message, detail? } with stable codes:

Code

Meaning

ACCESS_PAUSED

задействован аварийный переключатель

WORKSPACE_NOT_FOUND

неизвестный workspace_id

READ_DISABLED / WRITE_DISABLED

возможность отключена

EXECUTE_DISABLED / POWERSHELL_DISABLED

выполнение отключено / рабочее место не в режиме Full PowerShell

COMMAND_NOT_ALLOWED

программа нет в approved list (или былa задана directory path)

PATH_OUTSIDE_WORKSPACE

выход за пределы рабочей области (записано в audit с подробностями)

SENSITIVE_FILE_BLOCKED

denylist один из denied files

FILE_NOT_FOUND

цель не найдена

FILE_EXISTS

столкновение при creation

INVALID_PATCH

якорь отсутствует / неоднозначный

FILE_CHANGED_SINCE_READ

несоответствие ревизии

RESULT_TOO_LARGE

лимit превышен, truncation impossible

INVALID_ARGUMENT

corrupted request (bad regex/glob, >8 read_files paths)

IO_ERROR

file system failure (includes OS message)

Development

npx tsc --noEmit        # frontend type gate
npm run build           # frontend production build
cargo test --workspace  # 240+ Rust unit + integration tests

Integration suites drive the real sidecar- spawning and parseric pipeline across a fake sidecar fixture — no Tailscale network needed.

F
license - not found
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables ChatGPT Web Developer Mode to interact with local repositories through MCP, providing tools for file editing, shell execution, Git worktrees, semantic navigation, and checkpoints.
    318
    2
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables ChatGPT Developer Mode to securely invoke multiple Windows-local stdio MCP servers through a single gateway, with tool namespacing, path restrictions, and serial execution control. It includes safe-file, image, and download tools for local workspace interaction.
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables ChatGPT to securely operate a single Windows development workspace via a local MCP server, offering file editing, Git status, static analysis, approved test/build, and limited ADB operations with audit logging.
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables ChatGPT Web to securely access local files and run commands via MCP, with optional OpenCode agent mode for autonomous tasks.

View all related MCP servers

Related MCP Connectors

  • Search and reason over your Obsidian-style Markdown vault, right from ChatGPT.

  • Securely search and manage workspace context files for AI agents and teams.

  • Build, version, review, and export websites, web apps, and games from a conversation.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/quangtruong2003/MCP-Local'

If you have feedback or need assistance with the MCP directory API, please join our Discord server