Skip to main content
Glama
sid-stack001

DevContext

by sid-stack001

DevContext

Python MCP License: MIT

DevContext ist ein Prototyp eines Model Context Protocol (MCP)-Servers und CLI-Tools, das KI-Codeassistenten und Entwicklern Laufzeit-Observability-Daten (Logs, Deploys und Health-Metriken) bereitstellt, um die Incident-Triage zu unterstützen.


Überblick

Codierungsassistenten können Quellcode-Repositories inspizieren und Fixes entwerfen, aber ihnen fehlt oft der Einblick in das, was bei Laufzeit-Störungen passiert (z. B. kürzliche Deployments, Fehlerratenspikes, volle Festplatten oder Ausfälle von Downstream-APIs). DevContext ist ein Proof-of-Concept-Tool, das Laufzeitkontext über eine Befehlszeilen-Schnittstelle (CLI) und standardmäßige MCP-Toolaufrufe bereitstellt.


Related MCP server: Nibble

CLI- & Tool-Befehle

DevContext kann direkt von der Kommandozeile ausgeführt oder als MCP-Server registriert werden.

1. devcontext diagnose

Führt eine automatisierte Incident-Triage gegen integrierte Datensätze oder benutzerdefinierte Dateien/Ordner durch:

# Diagnose built-in service dataset
devcontext diagnose --service order-processing

# Output raw JSON format
devcontext diagnose --service order-processing --json

# Point at custom log, deploy, and health paths (files or log directories)
devcontext diagnose --log-path /var/log/app/ --deploys-path deploys.json --health-path health.json

# Enable experimental Groq LLM extraction
devcontext diagnose --service order-processing --use-llm

2. devcontext serve

Startet den Stdio-MCP-Server für die Verbindung zu MCP-Hosts (z. B. Claude Desktop, Antigravity):

devcontext serve

Optionen für das Log-Parsing

  1. Deterministischer Parser (parser.py): Verwendet Heuristiken, um Logzeilen zu sampeln und eine Strukturzuordnung zu versuchen (JSON-lines, CSV, Key-Value-Paare oder einfache Timestamps in eckigen Klammern/leerzeichengetrennt).

    • Einschränkung: Am besten geeignet für einfache einzeilige Logs. Komplexe mehrzeilige Stack-Traces oder nicht standardkonforme benutzerdefinierte Formate können auf einen einfachen Zeilenabgleich zurückfallen.

  2. Experimentelle LLM-Extraktion (extraction.py): Sendet optionale Log-Chunks an die Groq-API ( response_format={"type": "json_object"}), um strukturierte Ereignisobjekte zu extrahieren.

    • Einschränkung: Verursacht API-Latenz (ca. 200–400 ms) und Token-Kosten; falls der API-Key fehlt oder Anrufe ein Zeitlimitüberschreiten, wird auf den deterministischen Parser zurückgegriffen.


Optionen für Datenquellen

  • Integrierte Mock-Daten: Einen Dienstnamen übergeben (z. B. service_name="order-processing"), um die enthaltenen Demo-Daten abzufragen.

  • Benutzerdefinierte Datei- oder Ordnerpfade:

    • log_path: Pfad zu einer einzelnen Log-Datei oder einem Verzeichnis mit aufgeteilten .log- / .txt-Dateien.

    • deploys_path: Pfad zu einer benutzerdefinierten deploys.json-Datei.

    • health_path: Pfad zu einer benutzerdefinierten health.json-Datei.


Evaluierung & Test-Szenarien

Das Repository enthält eine Evaluierungs-Umgebung (eval.py), die gegen 5 synthetische Test-Szenarien getestet wurde:

Szenario

Service

Szenariotyp

Erwartetes Ergebnis

Ergebnis

scenario_1_bad_deploy

payment-service

Reduzierung des Ressourcenlimits

Deployment f8a1c92 identifizieren

Bestanden

scenario_2_disk_full

storage-service

Festplatte voll (kein neues Deployment)

Festplattenerschöpfung (98 %) identifizieren

Bestanden

scenario_3_memory_leak

analytics-worker

Memory Leak / OOM

Speichersättigung (97 %) identifizieren

Bestanden

scenario_4_downstream_outage

notification-service

Ausfall der externen API

SendGrid-503-Fehler identifizieren

Bestanden

scenario_5_bad_migration

user-service

Fehlgeschlagene Datenbankmigration

d4e912f-Deployment identifizieren

Bestanden

Einschränkungen & Umfang

  • Kleine Test-Suite: Diese Evaluations-Suite enthält 5 synthetische Testfälle zu Validierungszwecken. Dies ist kein erschöpfender Produktions-Benchmark.

  • Heuristischer Abgleich: diagnose() verwendet einfache Regeln (z. B. Prüfung, ob ein Deployment innerhalb von 10 Minuten nach dem ersten Fehler stattfand). Reale Infrastruktur-Störungen sind oft komplexer und können mehrfach zusammenhängende wid himelastende, zusammenspielende Faktoren umfassen.


Architektur

┌─────────────────────────────────────────────────────────┐
│              CLI / MCP Clients                          │
│     (devcontext CLI / Claude Desktop / Antigravity)     │
└───────────────────────────┬─────────────────────────────┘
                            │ CLI Args / stdio JSON-RPC
┌───────────────────────────▼─────────────────────────────┐
│              DevContext Entry Point                     │
│               (cli.py / server.py)                      │
└───────────────────────────┬─────────────────────────────┘
                            │
┌───────────────────────────▼─────────────────────────────┐
│                 Diagnostic Core (tools.py)               │
└───────┬───────────────────┬─────────────────────┬───────┘
        │                   │                     │
┌───────▼───────────┐ ┌─────▼─────────────┐ ┌─────▼─────────────┐
│ Structure Parser  │ │ Deployment Engine │ │ Health Observer   │
│   (parser.py)     │ │ (deploys.json)    │ │ (health.json)     │
└───────┬───────────┘ └───────────────────┘ └───────────────────┘
        │
┌───────┴─────────────────────────────────────────┐
│  Groq API (Optional LLM log extraction)         │
└─────────────────────────────────────────────────┘

Schnittgeräte & Setup

1. Installation

git clone https://github.com/your-username/devcontext.git
cd devcontext
pip install -e .

2. Dienst per CLI diagnostizieren

devcontext diagnose --service order-processing

3. Als MCP-Server registrieren (Claude Desktop)

Fügen Sie DevContext zu Ihrer claude_desktop_config.json hinzu:

{
  "mcpServers": {
    "devcontext": {
      "command": "devcontext",
      "args": [
        "serve"
      ]
    }
  }
}

4. Evaluierung-Suite ausführen

python eval.py

5. Optionale API-Key-Einrichtung

Kopieren Sie .env.example zu .env, wenn Sie Groq für die experimentelle LLM-Log-Extraktion verwenden:

cp .env.example .env

Abhängigkeiten & Anforderungen

  • Python 3.10+

  • mcp (Model Context Protocol SDK)

  • groq (Optional, für die LLM-Extraktion)


Zukünftige Erweiterungen

  • Plug-fähige Adapter: Direkte Verbindung zu CloudWatch-, Datadog-, Grafana-Loki- oder Prometheus-APIs.

  • Probabilistische Konfidenzwerte: Ausgabe von Wahrscheinlichkeitsverteilungen der Grundursache (z. B. 95% confidence: bad deploy) statt einzelner deterministischer Zeichenketten.

  • Automated Rollback-Vorschläge: Generieren Sie validierte git-revert-Commits oder Kubernetes-Patch-Spezifikationen zusammen mit der Diagnose.


Lizenz

Unter der MIT-Lizenz lizenziert.

Related MCP Connectors

Related MCP Servers