内容
# 本地编码代理
本地 **MCP 服务器** 让 ChatGPT Web(或任何 MCP 客户端)可以在**您自己的机器上**作为编码代理 - 读取/写入文件,运行命令,管理后台进程,并使用 git - 仅限于您选择的目录。附带 **Windows 系统托盘应用程序** 进行管理,以及**本地指标仪表盘**。
> ⚠️ 此工具可以在您的计算机上运行命令。请在使用的**安全性.md**之前阅读。它不是沙箱;仅连接您信任的工作区。
## 功能
- **20 多种编码工具** 通过 MCP:`repo_overview`、`list_files`、`find_files`、`read_file`、`read_many`(批量读取)、`search_text`(ripgrep/git,带上下文 + 通配符)、`write_file`、`replace_in_file`、`apply_patch`(多文件)、`make_dir`、`move_path`、`delete_path`、`run_command`(cmd/powershell/bash)、后台进程(`proc_start/list/output/stop`)、`git` 和笔记。
- **速度优化**:紧凑的 JSON、相对路径、批量读取、一次性 repo 映射 - 减少通过隧道的往返次数。
- **安全层**:仅限回环绑定、根目录限制、`safe`/`full` 模式、灾难性命令阻止列表、可选的 bearer token、审计日志。
- **Windows 系统托盘应用程序**(C#/ .NET):启动/停止、状态、复制 MCP URL、加密密钥存储(DPAPI)、权威停止。
- **本地仪表盘** (`/ui`):工具调用指标、估计令牌吞吐量、每分钟图表、热门工具和最近的调用及错误原因。
## 架构
```
ChatGPT 网络
│ (通过 OpenAI 安全 MCP 隧道 - 私有到您的帐户)
▼
tunnel-client.exe ──► Node MCP 服务器 (127.0.0.1:8787) ──► 您的文件/命令
│
└─► 本地仪表盘 (127.0.0.1:8790/ui, 不通过隧道)
Windows 系统托盘应用程序监督 Node 服务器 + tunnel-client。
```
## 仓库布局
```
server/ Node MCP 服务器 (server.mjs) + 测试
tray-app/ C#/ .NET WinForms 系统托盘应用程序(源代码)
scripts/ 启动隧道脚本 start-tunnel.ps1
tools/ (您创建)放置 tunnel-client.exe - 已 gitignore
```
## 先决条件
- **Node.js 18+** (用于服务器)。
- **.NET 8+ SDK** (仅当您构建系统托盘应用程序时)。
- **ChatGPT 帐户**,具有 MCP 连接器 / 应用程序访问权限。
- **OpenAI 安全 MCP 隧道客户端** (`tunnel-client.exe`)。它**不包含**在此仓库中(专有)。从 OpenAI 获取并放置在 `tools/tunnel-client.exe`。
## 快速开始
**1) 运行 MCP 服务器**
```bash
cd server
npm install
# PowerShell: $env:AGENT_WORKSPACE="C:\path\to\your\repo"
# bash: export AGENT_WORKSPACE="/path/to/your/repo"
npm start
```
检查:打开 `http://127.0.0.1:8787/healthz` 和仪表盘 `http://127.0.0.1:8790/ui`。
**2) 通过安全隧道暴露给 ChatGPT**
将 `tunnel-client.exe` 放入 `tools/`,然后:
```powershell
# 编辑脚本顶部的变量(工作区,隧道路径)
powershell -ExecutionPolicy Bypass -File scripts\start-tunnel.ps1
```
粘贴隧道运行时 API 密钥,然后将生成的 MCP URL 添加为 ChatGPT 中的连接器。
**3) (可选)使用系统托盘应用程序代替脚本**
```powershell
cd tray-app
dotnet run
# 或构建单个独立 exe:
powershell -ExecutionPolicy Bypass -File build.ps1
```
## 配置
| 变量 | 默认值 | 含义 |
| --- | --- | --- |
| `PORT` | `8787` | MCP 端口。 |
| `AGENT_HOST` | `127.0.0.1` | 绑定地址(保持回环)。 |
| `AGENT_WORKSPACE` | `../agent-workspace` | 代理可以触及的主要根目录。 |
| `AGENT_EXTRA_ROOTS` | _(空)_ | 额外的根目录,以 `;` 分隔。 |
| `AGENT_MODE` | `safe` | `safe` = 保守的阻止列表;`full` = 根目录内无限制。 |
| `AGENT_ALLOW_DANGEROUS` | _(未设置)_ | `1` 允许灾难性系统命令。保持未设置。 |
| `MCP_AUTH_TOKEN` | _(空)_ | 如果设置,`/mcp` 需要 `Authorization: Bearer <token>`。 |
| `DASHBOARD_PORT` | `8790` | 本地仪表盘(`0` 禁用)。避免 `8788`(隧道使用)。 |
## 安全
参见 **[安全性.md](SECURITY.md)**。简而言之:这不是沙箱,提示注入是真实的,请保持 `safe` 模式,除非您知道自己在做什么,否则永远不要在没有 `MCP_AUTH_TOKEN` 的公共隧道上公开它。
## 许可证
**[AGPL-3.0-or-later](LICENSE)** 2026 Long Nguyễn ([@LongNgn204](https://github.com/LongNgn204)).
免费且开源。您可以自由使用、学习、修改和分享 - 但如果您分发或以网络服务的形式运行修改后的版本,则必须在相同的 AGPL-3.0 许可证下发布源代码并保留版权声明。这使项目对所有人保持免费并**防止封闭/专有分叉**。
> 本项目与 OpenAI 无关或未得到 OpenAI 的认可。“ChatGPT”及相关商标属于其所有者。您必须获得隧道客户端并按照 OpenAI 的条款使用 ChatGPT。