Skip to main content
Glama

ChatWithMCP

Ein Kommandozeilen-Chat-Client für Claude (Anthropic) mit Anbindung an eigene und externe MCP-Server. Der Chat läuft direkt im Terminal, ruft Tools automatisch (oder nach Rückfrage) auf und bringt ein eingebautes System zum Generieren und Bewerten von Prompt-Varianten mit.

Features

  • Interaktiver Chat im Terminal (OpenAI-kompatible API, openai-SDK gegen Anthropic-Endpoint)

  • Anbindung eines lokalen MCP-Servers (mcp-server/) mit eigenen Tools

  • Optionale Anbindung des offiziellen GitHub MCP Servers über Docker

  • Drei Ausführungs-Modi für Tool-Aufrufe: auto, approve (Rückfrage) und plan (nur Plan, keine Ausführung)

  • Streaming-Antworten und Extended Thinking (optional zuschaltbar)

  • Tools einzeln oder komplett de-/aktivierbar

  • Dateien per /attach in den Chat-Kontext laden

  • Eigene Tools für Netzwerk-Diagnose und (passive) Security-Checks (Port-Scan, TLS-Konfiguration, HTTP-Security-Header)

  • Prompt-Generierung und -Evaluierung über eigene MCP-Tools (siehe PROMPT_EVALUATION.md)

Related MCP server: MCP Chat

Voraussetzungen

  • Node.js (ESM/type: module, siehe package.json)

  • Ein Anthropic API-Key

  • Optional: Docker (nur für den GitHub-MCP-Server) und ein GitHub Personal Access Token

  • Optional: ein Tavily API-Key (für das web_search-Tool)

  • Optional: SSH-Key(s), falls das ssh_execute-Tool genutzt werden soll

Installation

npm install

Konfiguration

Lege eine .env-Datei im Projektwurzelverzeichnis an (wird von .gitignore ausgeschlossen):

ANTHROPIC_API_KEY=dein-anthropic-api-key
BASE_URL=https://api.anthropic.com/v1
TAVILY_API_KEY=dein-tavily-api-key
GITHUB_PERSONAL_ACCESS_TOKEN=dein-github-token
  • ANTHROPIC_API_KEY / BASE_URL — werden für den Chat-Client und das generate_prompts-Tool benötigt

  • TAVILY_API_KEY — nur nötig für das web_search-Tool

  • GITHUB_PERSONAL_ACCESS_TOKEN — nur nötig, wenn der GitHub-MCP-Server (via Docker) genutzt werden soll

  • Für ssh_execute werden je nach Zielhost zusätzliche, serverseitig konfigurierte Variablen benötigt (z. B. private SSH-Keys, Standard-User je Host) — Zugangsdaten werden nie als Tool-Parameter übergeben

Allgemeine Einstellungen (Modell, Token-Limits, Basisverzeichnis für /attach, GitHub-Toolsets) stehen in config.mjs.

Nutzung

Chat starten:

npm start

Der lokale MCP-Server (mcp-server/server.mjs) wird dabei automatisch als Subprozess gestartet. Der GitHub-MCP-Server wird optional über Docker verbunden — schlägt das fehl, läuft der Chat ohne GitHub-Tools weiter.

Den MCP-Server lässt sich auch unabhängig starten (z. B. zum Testen mit einem MCP-Inspector):

npm run mcp-server

Befehle im Chat

Allgemein

  • /system TEXT — System-Prompt setzen

  • /nosystem — System-Prompt entfernen

  • /clear — Chat-Verlauf löschen

  • exit — Chat beenden

Tool-Verwaltung

  • /tools — verfügbare Tools mit Status anzeigen

  • /disable-tool <name> / /enable-tool <name> — einzelnes Tool de-/aktivieren

  • /disable-all-tools / /enable-all-tools — alle Tools de-/aktivieren

Chat-Optionen

  • /options — aktuelle Einstellungen anzeigen

  • /enable-streaming / /disable-streaming — Streaming umschalten (deaktiviert währenddessen alle Tools)

  • /enable-thinking / /disable-thinking — Extended Thinking umschalten

Ausführungs-Modus

  • /plan-mode — Modell liefert nur einen Plan, führt keine Tools aus

  • /auto-mode — Tools werden ohne Rückfrage ausgeführt (Standard)

  • /auto-approve — vor jedem Tool-Aufruf muss bestätigt werden

  • /mode — aktuellen Modus anzeigen

Dateien

  • /attach <pfad> — Datei einlesen und dem Chat-Verlauf hinzufügen (relative Pfade werden gegen config.attachBaseDir aufgelöst)

Prompt Evaluation

  • /generate-prompts <count> <prompt> [--style=formal|casual|technical|creative|concise]

  • /evaluate-prompts

  • /prompts

  • /clear-prompts

Details dazu in PROMPT_EVALUATION.md.

Verfügbare MCP-Tools

Der lokale MCP-Server (mcp-server/tools/) stellt folgende Tools bereit:

Tool

Beschreibung

get_current_date

Liefert das aktuelle Datum des Systems

getTime

Liefert die aktuelle Uhrzeit

get_weather

Wetterabfrage für einen Ort (Koordinaten)

web_search

Websuche über die Tavily-API (benötigt TAVILY_API_KEY)

fetch_page

Lädt eine Webseite und wandelt sie in lesbaren Text um

read_file / save_to_file

Dateien einlesen bzw. Inhalte im output/-Verzeichnis speichern

list_directory

Verzeichnisinhalt auflisten (optional rekursiv)

ssh_execute

Einzelnen Befehl per SSH auf einem entfernten Server ausführen (Auth über serverseitig konfigurierten Key)

get_network_info

Netzwerkschnittstellen, Subnetze, MAC-Adressen und DNS-Server des lokalen Rechners anzeigen

discover_network_hosts

Aktive Hosts im lokalen IP-Netzwerk per TCP-Connect-Scan finden

scan_host_ports

TCP-Ports eines externen Hosts prüfen und passiv Banner auslesen (kein Payload, kein aktives Ausnutzen)

check_tls_security

TLS-/Zertifikatskonfiguration eines Hosts prüfen (Protokollversionen, Cipher, HSTS, Redirects)

check_http_security_headers

HTTP-Security-Header und Cookie-Flags einer URL passiv analysieren (CSP, HSTS, X-Frame-Options, CORS, Cookies …)

generate_prompts

Prompt-Varianten mit Claude erzeugen

evaluate_prompts

Prompts gegen Test-Cases evaluieren und scoren

Die Netzwerk- und Security-Tools (discover_network_hosts, scan_host_ports, check_tls_security, check_http_security_headers) sind rein passiv bzw. nutzen nur reguläre TCP-/TLS-Verbindungsversuche ohne Payloads — trotzdem gilt: nur für eigene bzw. ausdrücklich autorisierte Hosts/Netzwerke verwenden.

Über den optionalen GitHub-MCP-Server stehen zusätzlich Tools für Repos, Issues, Pull Requests und Actions zur Verfügung (siehe config.mjs → github.toolsets).

Projektstruktur

chat.mjs                       CLI-Chat-Client
config.mjs                     Konfiguration (Modell, Token-Limits, GitHub-Optionen)
mcp-server/
  server.mjs                   MCP-Server (stdio)
  tools/
    date.mjs                   get_current_date
    time.mjs                   getTime
    weather.mjs                get_weather
    web-search.mjs             web_search
    fetch-page.mjs             fetch_page
    read-file.mjs               read_file
    save-file.mjs               save_to_file
    list-directory.mjs         list_directory
    ssh.mjs                    ssh_execute
    network-info.mjs           get_network_info
    network-scan.mjs           discover_network_hosts
    host-port-scan.mjs         scan_host_ports
    tls-security-check.mjs     check_tls_security
    http-security-headers.mjs  check_http_security_headers
    prompt-generator.mjs       generate_prompts
    prompt-evaluator.mjs       evaluate_prompts
    lib/                       gemeinsame Hilfsfunktionen (Netzwerk-Utils, URL-Safety-Checks)
output/                        Ablage für generierte Dateien (z. B. über save_to_file)
PROMPT_EVALUATION.md           Dokumentation des Prompt-Evaluation-Systems

Related MCP Connectors

Related MCP Servers