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),并通过 Tailscale Funnel 发布到 ChatGPT。

通向文件系统只有一个 MCP 入口:一条默认拒绝(fail-closed)的策略管道。每一个 MCP 工具调用都会经过这条管道。桌面 UI 是独立的管理控制平面,负责工作区权限、连接设置和生命周期;UI 中的审计行属于运维记录,而非 MCP 管道默认拒绝的响应闸门。

连接工作原理

  • MCP 服务器仅绑定回环地址127.0.0.1:<临时端口>)。

  • 内置的 Tailscale Funnel sidecar 会把该回环服务器发布到公共互联网,地址为 https://<your-hostname>.ts.net(Funnel 需要 tailnet 管理员对每 L网络开启一次:HTTPS 证书加 funnel 节点属性)。

  • 该公共地址内嵌了一个机密能力令牌。Funnel 是公网入口——能力秘密藏在 URL 里,这就是端点的防护所在,请将其视作口令:谁拿到它,谁就能在调用你的 MCP 连接。此令牌随时可前往 安全 → 重新生成连接地址 处轮换。

Related MCP server: local-mcp-chatgpt-tunnel

技术栈

  • 外壳:Tauri 2(Rust),内带系统托盘(打开;启动/停止隧道;暂停 MCP;退出),关闭时留在托盘、支持登录自启、最小化到托盘启动,且只允许一个实例。

  • UI:React 18 + TypeScript(严格模式),以 Text="TailCSS Wind v4 布局并把 shadcn/ui 这些源置于仓库内(new-york/zinc,2 px 圆角的 "Quiet Console" 字样),toast 由 sonner 提供;内置 Inter VariableJetBrains Mono Variable 字体;浅色/深色/跟随系统主题三者之间,固定在设置文件。

  • 核心管道crates/core — 默认拒绝(fail-closed)策略管道(暂停 → 工作区 → 能力 → 边界限制 → 敏感文件拒绝列表 → 执行),并有一份只能追加的 SQLite 审计日志。

前置条件

  • Windows 10/11

  • Rust 工具链,目标是 MSVC(rustup default stable-x86_64-pc-windows-mcsvc),且安装了 Visual Studio Build Tools(C++ 工作组件)

  • Node.js(LTS)与 npm

  • 一个 Tailscale 账户(免费版适用);还需 tailnet 管理员一次性开通 Funnel(在 DNS 设置下启用 HTTPS 证书,并在 Access controls 下启用 funnel 节点属性)。

构建与运行

npm install

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

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

产物生成在 src-rates/target/release/(可执行文件)src-rates/target/release/bundle/nsis/`(安装器)目录。

sidecar 二进制

Tailscale Funnel sidecar(Go,位于 sidecars/tails-cale-funnel)由打包步骤构建(npm run build:sidecarscripts/build-tails-cale-sidecar.ps1),并且它是唯一被绑到二进制 binaries/tails-cale-funnel-sidecar 的连接 sidecar。原本的 OpenAI/Cloudflare 隧道已递去掉,不再编译或打包;加入的遗留设置解析仅用于升级兼容。

首次配置

本底栏上的开关。

用作日常运行方式,将配置放进入这里:设置

  • 行概览:应用启动时自起隧道、随 Windows 启动、最小化到托盘收起、关闭窗口后仍挂在托盘

  • 外观:亮 / 暗 / 跟随系统

  • 连接:Funnel 主机标签(更改它需要重置 Tailscale 身份)

系统托盘集中了核心操作:打开窗口、启动/停止隧道、暂停/继续 MCP 访问、退出。

MCP 工具集

对外暴露十个工具。list_workspaces 返回已批准的工作区 id(这些 id 是脱敏的,不是绝对路径),返回结果与其他工具一样受暂停门控与审计。其余九个处于工作区级作用域的则为 list_directoryfind_filessearch_textread_fileread_files(每次调用 ≤8 个)、create_file(≤10 MB)、apply_patchrun_command(可执行白名单:git、cargo、cp、npm, npx, node, pnpm, yarn, python, python3, pip, go、dotnet)和 run_powershell(它要求工作区开启完整 PowerShell 模式)。读取类工具都返回受限的结果(read_file 返回一个 ≤256 KB 的窗口并带截断标志),并且带一个 revisions(sha256)——这是 apply_patch 所要求的 base_revision

安全模型

  • 仅回环绑定:MCP 服务器只监听在 127.0.0.1 上——绝不监听所有接口。外部暴露也只来自 sidecar 的出站 HTTPS Funnel。

  • 机密能力 URL:公网端点嵌的是一个无法猜解的令牌,端点没有登录系统。一旦泄露就去 Security 页轮换。

  • [暂停] Kill-Switch:UI 或托盘上的单一开关会暂停所有 MCP 工具调用(ACCESS_PAUSED),list_workspaces 也不例外;UI 操作不受影响。即使未开路少任何模块,暂停状态依然生效。

  • 默认拒绝管道:每次工具调用都要经过一段管道:暂停检查 → 工作区查找 → 能力闸门(READ_DISABLED / WRITE_DISABLED / EXECUTE_DISABLED)→ 路径边界(规范化后逐组件判定包含关系;软链接/节点符号无法逃逸)→ 敏感文件拒绝列表 → 执行策略,写出一条审计。如果管道中任意环节失败,短路为结构化错误,且如果有一条审计无法记录,则该调用示失败。

  • 敏感文件拒绝列表.env**.pem*.keyid_rsa*.git/configcredentials**.pfx*.p12secrets.*,以及所有 node_modules/** 内容,在任何更深层级的读和写都会被直接拉黑。要放行只能选择“无限制模式”(见下述)或改代码。

  • 先补丁后写文件:编辑一律做成锚定替换(apply_patch),不是整文件重写;每次 edit 都携带一个 base_revisions(上次读取到的摘要,SHA-256),如果文件其实是外部改动的,会直接 FILE_CHANGED_SINCE_READ。new 文件则用存临时 + 改名的原子法写成。

  • 仅追增审计:每个 MCP 请求在响应发出前写入正好一条审计(允许 / 拒绝 / 错误),这些审计行永不能更新和删除。开启无限制模式后生成的审计会标记该模式。UI 只保留最后 100 条。

  • 有界执行:命令不使用 shell 运行(没有引用或提取层),它们在 Windows Job Object 中执行,超时杀整棵进程树,环境变量已清洗,默认 60 秒 / 最长 10 分钟,且每个输出流只抓 512 KiB。PowerShell 脚本通过 stdin 传递——绝不硬编码到 argv 或诊断——并且子控制台窗口从不显示。

  • 无限制模式(opt-in):只存在于安全页的一个开关,需要用户键入明确的日常用的不断红色横幅。这一模式放开了权限门、敏感文件拒绝列表、命令白名单,以及 Full PowerShell 模式这一工作区级限制——对所有工作区均如此。但它仍必须守文件夹边界(路径也必须在已注册工作区内才有效)。暂停开关、和审计永远生效。如果对和你对话的 AI 不完全信任,就别打开。

  • 秘密的处理:令牌永远不会出现在 UI 回读路径、命令行或诊断信息里。各种 secrets 位于当前用户的 LocalAppData 下,DPapi;保护;settings.json 只含非 secrets 指标。

  • 加固过的 WebViewContent-Security-Policy 非空(default-src 'self'connect-src 受 IPC 限制,内联样式仅在 Radix 定位时开白);窗口开启器插件只允许 login.tailscale.comtailscale.com*.ts.net 的 URL。

已知限制(坦诚说明)

  • “限制”不是安全沙箱:使用你的显式程序的可写程序的外部路径,后面也只是以你的账户运行。

  • Funnel 是公网入站;grid 完全考一条密文加固。不管怎样都保全密文即可。

  • 真实的 Tailscale tailnet + ChatGPT 连接器联调仍需在真实环境验证,并且必须、发布正式版前仍要做;本地自动化生命周期/MCP 测试不能替代此步。

错误码

工具错误是结构化结果,向外暴露为 { code, message, detail? },并带如下稳定的错误码:

错误码

含义

ACCESS_PAUSED

暂停开关已拉起

WORSPACE_NOT_FOUND

workspace_id 未知

READ_DISABLED / WR_OF_DISABLED

能力关闭

EXECUTE_DISABLED / POWERSHELL_DISABLED

执行关闭 / 工作区不是 Full-PowerHell 模式

COMMAND_NOT_ALOWED

程序不在批准清单(或传错了路径)

PATH_OUTSIDE_WORACE

越界(带 detail 记录在审计中)

SENSITIVE_FILE_BLOCKED

命中敏感文件拒绝列表

FILE_NOT_FOUND

失败

FILE_EXISTS

创建击穿

INVALD_PATCH

锚缺少或歧义

FILE_CHANGED_SINCE_READ

修改检查失败

RESULT_TOO_LARGE

超出上限无法截断

INVALD_ARGUMENT

客户端输入非法(错误正则/glob,read_files 数量 >8)

IO_ERROR

文件系统失败(附 OS 消息)

开发

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

集成套件会将一个 fake sidecar 夹具驱动进真实 sidecar 的 启动/解析管道——不需要任何 Tailscale 网络。

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