Skip to main content
Glama

BotDuaChuot Host MCP

Ein minimaler MCP-Server, der es ChatGPT ermöglicht, direkt auf Ihrem Rechner zu arbeiten, begrenzt auf HOST_WORKSPACE_DIR.

Dieses Repository hat zwei Hauptfunktionen:

  1. Dateien lesen, schreiben, durchsuchen und Befehle auf dem Host ausführen.

  2. Arbeitsanleitungen sowie ein reales Inventar der auf dem Rechner installierten Tools über duachuot_knowledge bereitstellen.

Aufbau

app/
├── host/                 # File, command, policy and tool-inventory logic
├── geo/                  # Geo Engine (convert, geodesic, exif, reverse, timezone)
├── ops/                  # OPSEC gate
├── platform/             # OS/distro/arch/shell + tool resolution
├── tools/                # MCP adapters: health, host, knowledge, geo, probes, ops
├── config.py
├── mcp_server.py
└── main.py

knowledge/
├── WORKING_GUIDE.md
├── HOST_ENVIRONMENT.md
├── TOOL_CATALOG.json
├── GEO_PLAYBOOK.md
├── FORENSICS_PLAYBOOK.md
└── OSINT_PLAYBOOK.md

skills/
├── ctf-geo/
├── ctf-forensics-plus/
├── ctf-osint-plus/
└── ctf-stego-plus/

datasets/
└── landmarks.json

resources/
└── RESOURCE_MAP.json (generated from the host ctf-tools repo)
└── landmarks.json

install.sh
scripts/
├── install_basic.sh
├── install_cli.sh
├── uninstall_cli.sh
├── restart_server_only.sh
├── start_tunnel_server.sh
├── dev.sh
├── install_datasets.py
└── test.sh

Related MCP server: local-drive-mcp

Installation

1. Einzeilige Installation (empfohlen)

curl -fsSL https://raw.githubusercontent.com/cornhub69-x/botduachuot_mcp/main/install.sh | bash

Standardmäßig klont das Skript den main-Branch nach ~/.botduachuot_mcp, erstellt ein .venv, installiert Abhängigkeiten, erstellt eine .env mit 600-Berechtigungen und verlinkt die CLI unter ~/.local/bin/duachuot. Das erneute Ausführen desselben Befehls aktualisiert die Installation per Fast-Forward; wenn das Arbeitsverzeichnis nicht committete Dateien enthält, stoppt das Installationsprogramm, um das Überschreiben von Benutzerdaten zu vermeiden.

Es kann mit Umgebungsvariablen angepasst werden:

curl -fsSL https://raw.githubusercontent.com/cornhub69-x/botduachuot_mcp/main/install.sh | \
  DUACHUOT_INSTALL_DIR="$HOME/apps/botduachuot_mcp" \
  DUACHUOT_BIN_DIR="$HOME/.local/bin" \
  DUACHUOT_BRANCH=main \
  bash

Unterstützte Variablen: DUACHUOT_REPO_URL, DUACHUOT_INSTALL_DIR, DUACHUOT_BIN_DIR, DUACHUOT_BRANCH. DUACHUOT_SKIP_PIP_UPGRADE=true sollte nur in Testumgebungen oder Offline-Setups mit vorbereitetem Paket-Cache verwendet werden.

2. Manuelle Installation aus einem lokalen Repository

cd botduachuot_mcp
./install.sh

scripts/install_basic.sh wird aus Kompatibilitätsgründen beibehalten und leitet direkt an das Hauptinstallationsprogramm weiter.

3. Konfiguration und Prüfungen nach der Installation

Stellen Sie sicher, dass ~/.local/bin in Ihrem PATH ist:

export PATH="$HOME/.local/bin:$PATH"

Fügen Sie diese Zeile zu ~/.bashrc oder ~/.zshrc hinzu, um sie über Sitzungen hinweg beizubehalten.

Konfigurieren Sie .env, bevor Sie den Dienst freigeben. Die Standardvorlage erfordert Authentifizierung:

REQUIRE_AUTH=true
GATEWAY_TOKEN=<secret-random-token>
HOST_WORKSPACE_DIR=/home/user

Dann verifizieren:

duachuot version
duachuot config validate
duachuot doctor

Ausführung über Cloudflare Tunnel

./run_mcp_tunnel.sh
./run_mcp_tunnel.sh --status
./run_mcp_tunnel.sh --url
./run_mcp_tunnel.sh --stop

Die Connector-URL sieht wie folgt aus:

https://<random>.trycloudflare.com/mcp

Streamable HTTP ist zustandslos konfiguriert und gibt JSON direkt zurück. Jede ChatGPT-Anfrage arbeitet unabhängig: Es ist keine mcp-session-id erforderlich und für reguläre Tool-Aufrufe wird kein SSE-Stream aufrechterhalten.

MCP_JSON_RESPONSE=true
MCP_STATELESS_HTTP=true

REST-API

Die REST-API teilt sich die Host-Dienste mit dem MCP-Server und läuft auf demselben Server/Tunnel. Basispfad:

/api/v1

OpenAPI-Dokument:

/api/v1/openapi.json

Hauptendpunkte:

Methode

Endpunkt

Zweck

GET

/api/v1/health

Serverstatus

GET

/api/v1/capabilities

Tools, Arbeitsbereich und Limits

GET

/api/v1/files

Verzeichnis auflisten

GET

/api/v1/files/content

Textdatei lesen

PUT

/api/v1/files/content

Datei erstellen oder überschreiben

PATCH

/api/v1/files/content

Text in Datei ersetzen

POST

/api/v1/files/append

Inhalt an Datei anhängen

POST

/api/v1/directories

Verzeichnis erstellen

GET

/api/v1/search

Text im Arbeitsbereich durchsuchen

POST

/api/v1/commands/check

Befehl prüfen

POST

/api/v1/commands/run

Befehl auf dem Host ausführen

GET

/api/v1/knowledge

Anleitungen und Tool-Inventar lesen

Wenn REQUIRE_AUTH=true ist, verwenden Sie einen dieser Header:

Authorization: Bearer <GATEWAY_TOKEN>
X-Gateway-Token: <GATEWAY_TOKEN>

Beispiel:

BASE_URL="https://<tunnel>.trycloudflare.com"
TOKEN="<GATEWAY_TOKEN>"

curl -H "Authorization: Bearer $TOKEN" \
  "$BASE_URL/api/v1/files?path=GitHub"

curl -X PUT \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"path":"Workspace/demo.txt","content":"hello REST\n"}' \
  "$BASE_URL/api/v1/files/content"

curl -X POST \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"command":"git status --short","cwd":"GitHub/botduachuot_mcp"}' \
  "$BASE_URL/api/v1/commands/run"

MCP-Tools

health_check
get_capabilities
duachuot_list_directory
duachuot_read_file
duachuot_write_file
duachuot_replace_in_file
duachuot_append_file
duachuot_make_directory
duachuot_search_text
duachuot_check_command
duachuot_run_command
duachuot_knowledge

duachuot_run_command hat keinen Parameter approval="approved". Die Richtlinie wird vollständig serverseitig entschieden.

Ermittlungswerkzeuge (Forensik + OSINT + Geo)

BotDuaChuot fügt 21 spezielle Ermittlungswerkzeuge hinzu, vollständig offline und deterministisch:

# Geo Engine (offline, no network required)
duachuot_geo_extract         # EXIF GPS, exiftool/exiv2 cross-check, DOP/HPE, timezone, landmarks
duachuot_geo_scan            # scan arbitrary text/logs/SRT/NMEA/MGRS/UTM for coordinates
duachuot_coord_convert       # DMS/decimal/UTM/MGRS + datum transform (WGS84/ED50/NAD27)
duachuot_geo_calc            # geodesic distance/bearing + uncertainty from DOP/HPE
duachuot_geo_reverse         # offline reverse geocoding (landmarks + country resolution)
duachuot_geo_verify          # conclude only with >= 2 independent facts; fewer -> BLOCKER
duachuot_geo_landmark_check  # radius check around a landmark
duachuot_timezone_at         # offline timezone/UTC offset from coordinates

# Probes
duachuot_media_probe         # file + exiftool JSON + ffprobe
duachuot_pcap_probe          # conversations/endpoints/DNS + GPS hints (NMEA, Wi-Fi probes)
duachuot_disk_probe          # fsstat + fls
duachuot_mem_probe           # Volatility 3 (info/pslist)
duachuot_stego_probe         # binwalk + steghide, WAV LSB detection, LSB/MP3 extraction
duachuot_ocr_probe           # tesseract + QR (zxing-cpp)
duachuot_win_probe           # SAM/SYSTEM hives, LNK, prefetch (pure-Python, Linux/Windows)

# OPSEC + platform
duachuot_ops_check           # blocks telemetry / attack tools / discovery while ctf-live / flags in commands
duachuot_ops_jitter          # human-like delay between network queries
duachuot_ops_redact          # redact secret/flag before writing logs
duachuot_platform            # probe OS/arch/distro/shell + tool availability (native/WSL/missing)
duachuot_plan                # generate an investigation plan by artifact type
duachuot_resource_lookup     # resolve a managed ctf-tools resource from RESOURCE_MAP.json

Ressourcen-Registry: resources/RESOURCE_MAP.json wird aus dem Host-ctf-tools-Repository von scripts/generate_resource_map.py generiert (Skills, Skripte, Werkzeuge, Notizen). Abfragen geben Pfad + Aufrufvorlage + Verfügbarkeit zurück; fehlende Ressourcen sind BLOCKER, niemals stille Fallbacks.

Vollständige Playbooks: knowledge/GEO_PLAYBOOK.md, knowledge/FORENSICS_PLAYBOOK.md, knowledge/OSINT_PLAYBOOK.md. Gebündelte Skills: skills/ctf-geo, skills/ctf-forensics-plus, skills/ctf-osint-plus, skills/ctf-stego-plus.

OPSEC (während CTF verpflichtend)

  • Standard ctf-live: keine Abfragen öffentlicher Quellen (Sherlock/Maigret/whois/dnsrecon/Suchmaschinen), keine automatisierten Angriffswerkzeuge gegen den Zielbereich, keine automatische Flag-Übermittlung — immer über einen Menschen.

  • investigation-Modus (OSINT_MODE=true) öffnet OSINT-Abfragen, begrenzt auf das, was der Bediener angibt.

  • Zwischen Netzwerkabfragen: auf duachuot_ops_jitter() warten (800–3000 ms).

  • Jede Koordinatenschlussfolgerung benötigt >= 2 unabhängige Fakten (verifiziert über duachuot_geo_verify).

duachuot_knowledge

duachuot_knowledge(section="overview")
duachuot_knowledge(section="guide")
duachuot_knowledge(section="tools", query="python", include_versions=true)
duachuot_knowledge(section="search", query="docker")

Dieses Tool liest die Dokumente in knowledge/ und gleicht TOOL_CATALOG.json mit dem tatsächlichen PATH des Rechners ab.

Tests

./scripts/test.sh
./scripts/quality_gate.sh
./scripts/manual_test_installer.sh

manual_test_installer.sh verwendet ein temporäres Repository und HOME in /tmp; es startet, stoppt oder startet nie einen echten Cloudflare-Tunnel neu.

Wichtige Konfiguration

HOST_WORKSPACE_DIR=/home/light
HOST_RESTRICT_TO_WORKSPACE=true
HOST_COMMAND_POLICY=guarded
MAX_TIMEOUT_SECONDS=60
MAX_OUTPUT_BYTES=500000
REQUIRE_AUTH=true
GATEWAY_TOKEN=<secret>

guarded ist nur eine Schutzschicht gegen offensichtlich destruktive Operationen, keine Sandbox. Der MCP-Server läuft mit den Rechten des Benutzers, der den Prozess startet.

Siehe auch: docs/ARCHITECTURE.md und SECURITY.md.

duachuot-CLI

Das Repository enthält eine einheitliche CLI zum Bedienen der Brücke/des Tunnels und zum Aufrufen der REST-API, ohne curl manuell schreiben zu müssen.

Installieren Sie den bearbeitbaren Einstiegspunkt:

.venv/bin/python -m pip install -e . --no-deps

Führen Sie es auf beide Arten aus:

./bin/duachuot --help
.venv/bin/duachuot --help

Lokale Operationsgruppe:

duachuot start
duachuot status
duachuot url
duachuot server restart   # restart the bridge only, keep the tunnel URL
duachuot restart --yes    # restart the tunnel too, URL may change
duachuot stop

REST-API-Gruppe:

duachuot health
duachuot --public health
duachuot capabilities --tools
duachuot fs ls GitHub
duachuot fs cat GitHub/project/README.md --lines 1:40
duachuot fs write GitHub/demo.txt --text "hello"
printf 'next\n' | duachuot fs append GitHub/demo.txt --stdin
duachuot fs search FastMCP --path GitHub/botduachuot_mcp
duachuot cmd check 'git status --short'
duachuot cmd run 'git status --short' --cwd GitHub/botduachuot_mcp
duachuot knowledge tools --query python --versions

Unterstützende Operationsgruppen:

duachuot logs server -n 100
duachuot logs follow server
duachuot config show
duachuot config validate
duachuot doctor
duachuot completion bash

Jeder Befehl unterstützt --json. Globale Optionen können vor oder nach dem Unterbefehl platziert werden:

duachuot --public health --json
duachuot health --public --json

Standardmäßig ruft die CLI den lokalen REST-Endpunkt unter http://127.0.0.1:<MCP_PORT> auf. Verwenden Sie --public, um die aktuelle URL aus logs/tunnel_url.txt zu übernehmen, oder --base-url, um auf einen anderen Endpunkt zu zeigen.

Haupt-Ausgangscodes:

0  success
1  operation failed
2  invalid arguments
3  cannot reach the server
4  authentication failed
5  blocked by policy
6  resource not found
7  timeout
8  conflict

Bei duachuot cmd run gilt: Wenn der Server den Befehl auf Anfrageebene erfolgreich ausgeführt hat, spiegelt der Exit-Code den tatsächlichen Exit-Code des Befehls wider.

Vollständiges Design: docs/CLI_DESIGN_PLAN.md.

Zusätzliche CLI-Dokumentation: docs/CLI_MANUAL_TEST_PLAN.md und docs/CLI_IMPLEMENTATION_REPORT.md.

Betrieb und Wiederherstellung

./scripts/quality_gate.sh
./scripts/quality_gate.sh --runtime
./scripts/quality_gate.sh --full

Strikter Doctor und Konfiguration:

duachuot doctor --local-only
duachuot doctor --strict
duachuot config validate --strict

Diagnose mit redigierter sensibler Konfiguration sammeln:

./scripts/collect_diagnostics.sh

Laufzeitarchitektur und Grenzen: docs/ARCHITECTURE.md und SECURITY.md.

Betrieb und Wiederherstellung

./scripts/quality_gate.sh
./scripts/quality_gate.sh --runtime
./scripts/quality_gate.sh --full

Strikter Doctor und Konfiguration:

duachuot doctor --local-only
duachuot doctor --strict
duachuot config validate --strict

Diagnose mit redigierter sensibler Konfiguration sammeln:

./scripts/collect_diagnostics.sh

Installation, Neustart mit erhaltenem Tunnel, Wiederherstellung, Rollback und der Release-Checkliste sind in docs/OPERATIONS_RUNBOOK.md beschrieben.

Architektur und Releases

  • Laufzeitarchitektur und Grenzen: docs/ARCHITECTURE.md

  • Sicherheitsmodell und Härtung: SECURITY.md

  • Betrieb, Wiederherstellung und Rollback: docs/OPERATIONS_RUNBOOK.md

  • Release-Checkliste: docs/RELEASE_CHECKLIST.md

GitHub Actions führt die Qualitätsprüfung bei Push und Pull Request aus; Dependabot überwacht die Abhängigkeiten von Python und GitHub Actions.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server enabling ChatGPT to interact with local filesystem via controlled file operations like read, write, edit, and search, with configurable guardrails for safety.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Local MCP server enabling Codex and ChatGPT to read/write files, execute commands, manage processes, use Git, and inspect images on the user's machine with full privileges.
    Apache 2.0