local-code-agent
local-code-agent
Ein lokaler MCP-Server, entwickelt mit FastMCP: Ermöglicht externen KIs (ChatGPT, Claude usw.) durch Cloudflare Tunnel einen sicheren Fernzugriff auf das lokale Arbeitsverzeichnis – Datei-Lesen/Schreiben/Bearbeiten, Suchen, Shell-Befehle, Git-Operationen – und bietet Bearer-Token-Authentifizierung, Sandbox-Isolation und Audit-Logs.
Dieses Projekt enthält keine AI/LLM-Logik, sondern nur Tool-Schicht-Dienste und Tunnel-Konfiguration.
Umgebungsanforderungen
Python 3.10+ (zwingend für FastMCP)
pip install -r requirements.txt(fastmcp, pyyaml)
Schnellstart
# 1. 安装依赖
pip install -r requirements.txt
set MCP_AUTH_TOKEN=your_long_random_token
set MCP_WORKSPACE=D:\projects\my-project
# 2. 启动服务(默认监听 127.0.0.1:8000,路径 /mcp)
python server.py
# 3. 公网穿透(临时域名)
cloudflared tunnel --url http://127.0.0.1:8000
# 固定域名(绑定自有域名)
cloudflared tunnel --url http://127.0.0.1:8000 --hostname mcp.yourdomain.comGesundheitscheck: GET http://127.0.0.1:8000/health (standardmäßig ohne Authentifizierung; andere Endpunkte müssen Bearer-Token mitführen).
Grafische Oberfläche (optional)
Auch ohne Kommandozeile nutzbar. tkinter gehört zur Python-Standardbibliothek, keine zusätzliche Installation erforderlich.
python -m gui.appKonsolenfunktionen:
Arbeitsverzeichnis-Ordner: Klicken Sie auf „Auswählen…“, um einen Ordner auszuwählen. Es kann nur ein Ordner ausgewählt werden; alle KI-Operationen sind auf diesen Ordner (Sandbox) beschränkt. Ein Wechsel des Ordners ersetzt die aktuelle Auswahl.
Authentifizierungs-Token: Beim Start wird automatisch ein zufälliges Token generiert, das über „Neu generieren“ ausgetauscht werden kann. Dieses Token muss im KI-Client als
Authorization: Bearer ...eingetragen werden.Port / Nur-Lesen-Modus: Legen Sie den Überwachungsport fest; aktivieren Sie den Nur-Lesen-Modus, um Schreib-/Bearbeitungs-/Befehls-Tools zu deaktivieren.
Dienst starten/stoppen:
server.pywird als untergeordneter Prozess ausgeführt; Stoppen beendet den Prozess.Statusleiste: Fragt
/healthab und zeigt Dienstversion, aktuelles Arbeitsverzeichnis und Laufzeit an; unterstützt auch das Kopieren des Cloudflared-Tunnel-Befehls mit einem Klick.Logbereich: Zeigt die Ausgabe des Server-Unterprozesses in Echtzeit an; bei mehr als 600 Zeilen wird automatisch gekürzt.
Die GUI ist nur ein Starter für server.py, verwendet die gleichen Authentifizierungs-, Sandbox- und Audit-Sicherheitsmechanismen; die öffentliche Anbindung erfolgt wie in der Kommandozeile.
Client-Anbindung
ChatGPT Custom Connector: URL auf https://<tunnel-host>/mcp setzen, Header Authorization: Bearer your_long_random_token hinzufügen.
Claude Desktop claude_desktop_config.json:
{
"mcpServers": {
"local-code-agent": {
"url": "https://mcp.yourdomain.com/mcp",
"headers": { "Authorization": "Bearer your_long_random_token" }
}
}
}Werkzeugliste
Werkzeug | Parameter | Beschreibung |
| path, offset=0, limit=0 | limit 0 bedeutet alle; offset überspringt die angegebene Anzahl von Startzeilen |
| path, content | Erstellt automatisch übergeordnete Verzeichnisse; sensible Pfade werden abgelehnt |
| path, old_text, new_text, dry_run=false | Text muss exakt und eindeutig sein |
| path=".", recursive=false | Überspringt .git |
| pattern, path=".", file_pattern="*" | Regex; bei ungültigem Regex Rückfall auf Teilstring-Suche |
| path | Größe, mtime, Typ |
| path, lines=100 | Liest Datei-Ende |
| pattern, path="." | Rekursiver Glob |
| source, destination | Überschreibt kein vorhandenes Ziel |
| source, destination | Kopiert nur Dateien, überschreibt nicht |
| path | Erstellt automatisch übergeordnete Verzeichnisse |
| path | Löscht nur Dateien; benötigt |
| path, url | Domain-Whitelist; keine Weiterleitungen; 50 MB Grenze |
| command, timeout=30 | Whitelist; gefährliche Befehle benötigen Bestätigung; SSE-Streaming |
| — | Nur Lesen |
| message |
|
Sicherheitsmodell
Sandbox: Alle Pfade werden über
realpathaufgelöst und müssen innerhalb des Arbeitsverzeichnis-Roots liegen (verhindert Symlink-Ausbrüche).../und absolute Pfade können nicht ausbrechen.Authentifizierung: FastMCP
DebugTokenVerifierprüft das Bearer-Token. Das Token wird nur ausMCP_AUTH_TOKENgelesen (für Entwicklung--token). Fehlt es, wird der Start verweigert.Sensible Dateien:
.env,.env.*,*.pem,*.key,id_rsa,.ssh/,.aws/,credentialswerden auf jeder Pfad-Ebene abgefangen. Es wird einheitlich „access denied“ zurückgegeben, ohne preiszugeben, ob die Datei existiert.Befehls-Whitelist: In
config.yamldie Schlüsselcommand_allow,command_deny,danger_commands(benötigenx-confirm: true).Downloads: Nur http(s)-Hosts aus
download_allow_domainserlaubt; Weiterleitungen verboten; über 50 MB wird der Vorgang abgebrochen und die unvollständige Datei gelöscht.Audit-Logs: JSON-Zeilenformat, Rotation 10 MB × 5, zeichnet Zeitstempel, Werkzeugname, anonymisierte Parameter, Ergebnis, Dauer auf.
Nur-Lesen-Modus:
python server.py --readonlyregistriert nur Lese-/Such-/Git-Anzeige-Werkzeuge.
Konfigurationspriorität
Arbeitsverzeichnis: --workspace > Umgebungsvariable MCP_WORKSPACE > config.yaml (Standard .). Alle anderen Konfigurationen stammen aus config.yaml (siehe Datei für Standardwerte).
Projektstruktur
server.py # FastMCP 入口:配置、认证、/health
tool_registry.py # 工具注册(与生命周期分离)
config.py / config.yaml # 默认值 + YAML
sandbox.py # 路径沙盒 + 敏感文件过滤
command_whitelist.py # 命令白名单校验
audit.py # 轮转 JSON 审计日志
tools/file_ops.py # 读/写/编辑/列目录/搜索
tools/file_management.py # 删/改名/复制/建目录/stat/tail/glob
tools/download.py # 域名白名单下载
tools/command.py # 同步 run_command(测试/非流式)
tools/git_ops.py # status/diff/log/branch/commit
gui/ # tkinter 启动器
start.py / start.spec # GUI 入口 + PyInstaller onedir
tests/ # test_core.py + test_extra.pyBekannte Einschränkungen
Python 3.8 kann diesen Dienst nicht ausführen (fastmcp benötigt 3.10+); die Logikmodule sind kompatibel mit 3.8, kann mit
python tests/test_core.pyüberprüft werden.Das standardmäßige Timeout von Cloudflare Tunnel liegt bei etwa 100 Sekunden.
run_commandverwendet SSE-Streaming; maximales Timeout 3600 Sekunden.Es wird nur ein einzelnes Arbeitsverzeichnis unterstützt. Mehrere Arbeitsverzeichnisse und sitzungsbezogener Kontext sind noch nicht implementiert (YAGNI).
Paketierung:
pip install -r requirements-build.txt && pyinstaller start.spec, Ausgabedist/start/start.exe. Die GUI erfordert manuelles Klicken auf „Dienst starten“.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analy…
Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.
The bridge from K2 agents through Wrangler to your master AI - safe, approval-gated Cloudflare ops.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/jhonsmithsamsmith/webmcp-coder'
If you have feedback or need assistance with the MCP directory API, please join our Discord server