Skip to main content
Glama

mcp-infra-lens

Erklären Sie Linux-Vorfälle über SSH mit Baseline-fähigen MCP-Tools.

npm version npm downloads License: MIT Node 20+ MCP SDK Azure Pipelines

Demo

mcp-infra-lens demo

Beispiel für eine analyze_server-Antwort, wenn Claude fragt: „Was stimmt mit prod-01 nicht?“:

{
  "host": "prod-01.internal",
  "health_score": 42,
  "summary": "Found 2 anomalies on prod-01.internal. Most urgent signal: CPU is at 91% (3.4σ above baseline 28.2%). Load is 7.2/6.8/5.1. Top CPU consumer: java (87%).",
  "anomalies": [
    {
      "metric": "cpu",
      "severity": "high",
      "value": 91,
      "z_score": 3.4,
      "explanation": "CPU is at 91% (3.4σ above baseline 28.2%). Load is 7.2/6.8/5.1. Top CPU consumer: java (87%).",
      "recommendation": "Investigate java (PID 18432) and review application logs or scale-out options."
    },
    {
      "metric": "disk:/",
      "severity": "high",
      "value": 91,
      "explanation": "Disk / is 91% full (182GB/200GB).",
      "recommendation": "Run du -sh //* | sort -rh | head -20 and clean logs or temporary files."
    }
  ]
}

Was es tut

mcp-infra-lens verbindet sich über SSH mit Linux-Hosts, erstellt einen Live-Infrastruktur-Snapshot, vergleicht diesen mit kürzlich aufgezeichneten Baselines und erklärt Anomalien in einfacher Sprache.

  • Erfasst CPU-, Speicher-, Festplatten-, Netzwerk-, Prozess- und OS-Daten, ohne den Ziel-Host zu verändern

  • Zeichnet lokale Metrik-Historien in SQLite für Baselines, Vergleiche und Trendanalysen auf

  • Verwendet Z-Score-Analyse zur CPU-Anomalieerkennung, sobald genügend Baseline-Stichproben vorhanden sind

  • Erklärt die wahrscheinliche Ursache von Belastungen, nicht nur den reinen Metrikwert

  • Unterstützt MCP über stdio und Streamable HTTP

Funktionsweise

flowchart TD
    A["Claude / Cursor / VS Code / Windsurf"] --> B["mcp-infra-lens"]
    B --> C["server-core.ts"]
    C --> D["collector.ts"]
    C --> E["analyzer.ts"]
    C --> F["baseline.ts + db.ts"]
    D --> G["ssh.ts"]
    G --> H["Linux host over SSH"]
    F --> I["SQLite history + baselines"]

analyze_server führt nun eine echte Stichprobenerhebung über die angeforderte duration_minutes durch, mittelt die CPU- und Speicherauslastung über das Erfassungsfenster, speichert den resultierenden Snapshot und führt dann eine Anomalieerkennung gegen die ausgewählte Baseline durch.

Tools

Tool

Was es tut

Wichtige Parameter

analyze_server

Erfasst einen Stichproben-Snapshot, speichert ihn und erklärt Anomalien

connection, duration_minutes, include_processes, include_network

snapshot

Erfasst und speichert die aktuellen Metriken ohne Analyse

connection

record_baseline

Speichert eine markierte Stichprobe des Normalzustands für zukünftige Vergleiche

connection, label

compare_to_baseline

Vergleicht den aktuellen Zustand mit einer benannten Baseline und erklärt die Deltas

connection, baseline_label

get_history

Gibt historische CPU-, Speicher- oder Lastwerte aus SQLite zurück

host, metric, hours, label?

Schnellstart

1. Ausführen via npx

npx -y mcp-infra-lens

Wenn Sie auf 1.0.1 fixiert sind, führen Sie ein Upgrade auf 1.0.2 oder neuer durch, um native Installationsfehler unter Node 24 zu vermeiden:

npx -y mcp-infra-lens@latest

2. Claude Desktop

Veröffentlichtes Paket:

{
  "mcpServers": {
    "infra-lens": {
      "command": "npx",
      "args": ["-y", "mcp-infra-lens"],
      "env": {
        "INFRA_LENS_DB": "/Users/you/.mcp-infra-lens/metrics.db"
      }
    }
  }
}

Lokale Entwicklung:

{
  "mcpServers": {
    "infra-lens": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-infra-lens/dist/mcp.js"],
      "env": {
        "INFRA_LENS_DB": "/Users/you/.mcp-infra-lens/metrics.db"
      }
    }
  }
}

3. Docker

docker build -t mcp-infra-lens .
docker run --rm -it \
  -v "$HOME/.mcp-infra-lens:/home/appuser/.mcp-infra-lens" \
  mcp-infra-lens

Konfiguration

Umgebungsvariable

Standard

Beschreibung

INFRA_LENS_DB

~/.mcp-infra-lens/metrics.db

Pfad zur SQLite-Datenbank. Verwenden Sie :memory: für Tests

HOST

127.0.0.1

Bind-Adresse für den HTTP-Transport

PORT

3000

Port für den HTTP-Transport

Gesundheits-Score

  • 90-100: gesund, keine signifikanten Anomalien erkannt

  • 70-89: leichte oder isolierte Belastung

  • 40-69: mehrere Warnungen oder ein größeres Problem im Gange

  • 0-39: kritischer Zustand, dringende Maßnahmen erforderlich

Empfohlener Workflow

  1. Zeichnen Sie record_baseline-Stichproben während normaler Betriebszeiten auf.

  2. Verwenden Sie analyze_server bei Vorfällen oder Lastspitzen.

  3. Verwenden Sie compare_to_baseline für eine präzisere Differenzansicht gegenüber einer benannten Baseline.

  4. Verwenden Sie get_history, um Trends zu untersuchen und Standard-Snapshots von markierten Baseline-Sitzungen zu trennen.

Authentifizierung

Das SSH-Eingabeschema unterstützt:

  • Passwort-Authentifizierung

  • Inline-Authentifizierung mit privatem Schlüssel

  • Optionale Passphrase-Unterstützung für verschlüsselte Schlüssel

Anmeldedatenfelder werden aus strukturierten Protokollen entfernt, bevor sie in stderr geschrieben werden.

Sicherheitshinweise

  • Die SSH-Erfassung erfolgt schreibgeschützt auf dem Ziel-Host

  • SSH-Anmeldedaten werden niemals in SQLite gespeichert

  • Die Host-Key-Verifizierung ist in v1 aus Kompatibilitätsgründen permissiv; Produktionsbereitstellungen sollten ausgehenden Netzwerkzugriff einschränken und planen, eine strikte Host-Verifizierung in einem späteren Release zu erzwingen

  • Der HTTP-Transport verfügt über keine integrierte Authentifizierung; binden Sie ihn an Loopback und platzieren Sie ihn in nicht-lokalen Bereitstellungen hinter einem authentifizierten Reverse-Proxy

Siehe SECURITY.md für die Meldungsrichtlinie und den Umfang der gespeicherten Daten.

Integrationen

Claude Desktop

{
  "mcpServers": {
    "infra-lens": {
      "command": "npx",
      "args": ["-y", "mcp-infra-lens"],
      "env": {
        "INFRA_LENS_DB": "/Users/you/.mcp-infra-lens/metrics.db"
      }
    }
  }
}

Cursor IDE

{
  "mcpServers": {
    "infra-lens": {
      "command": "npx",
      "args": ["-y", "mcp-infra-lens"]
    }
  }
}

VS Code (MCP-Erweiterung)

{
  "inputs": [],
  "servers": {
    "infra-lens": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "mcp-infra-lens"]
    }
  }
}

Windsurf

{
  "mcpServers": {
    "infra-lens": {
      "command": "npx",
      "args": ["-y", "mcp-infra-lens"]
    }
  }
}

Docker (HTTP-Transport)

docker run -d \
  -p 3000:3000 \
  -v $HOME/.mcp-infra-lens:/home/appuser/.mcp-infra-lens \
  ghcr.io/oaslananka/mcp-infra-lens:latest

Konfigurieren Sie dann Ihren MCP-Client für die Verwendung von http://localhost:3000.

Docker

Das gebündelte Docker-Image:

  • Erstellt das TypeScript-Projekt in einer separaten Stufe

  • Erstellt better-sqlite3 für die Container-Architektur in beiden Stufen neu

  • Läuft als Nicht-Root-appuser

  • Speichert SQLite-Daten in /home/appuser/.mcp-infra-lens/metrics.db

Mitwirken

Beiträge sind willkommen. Beginnen Sie mit CONTRIBUTING.md und verwenden Sie dann:

  • docs/usage.md für Tool-Beispiele

  • docs/architecture.md für die Komponentenübersicht

  • docs/testing.md für lokale Validierungs- und Veröffentlichungsprüfungen

  • RELEASE_POLICY.md für Versionsregeln von npm und MCP Registry

  • AGENTS.md, CLAUDE.md, GEMINI.md, .github/copilot-instructions.md und .agent/rules/repository.md für repository-spezifische KI-Coding-Richtlinien

Betriebs- / CI-Hinweise

  • azure-pipelines.yml ist die kanonische CI-Pipeline und führt nun eine Quality-Stufe auf Node 20 und Node 22 aus, veröffentlicht JUnit- und Cobertura-Artefakte und führt Docker-basierte SSH-E2E-Abdeckung auf Node 20 aus

  • .azure/pipelines/publish.yml bleibt die manuelle npm-Release-Pipeline

  • .azure/pipelines/mirror.yml bleibt für Repository-Mirroring-Workflows verfügbar

  • Veröffentlichen Sie erst, nachdem die lokale Pre-Publish-Checkliste und die CI auf Node 20 erfolgreich durchlaufen wurden

  • Befolgen Sie RELEASE_POLICY.md, wenn Sie entscheiden, ob eine Änderung eine npm-, MCP Registry- oder eine reine Registry-Pre-Release-Veröffentlichung erfordert

Lizenz

MIT

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 5 tool updatesv1.0.1
    • First observedanalyze_server
    • First observedcompare_to_baseline
    • First observedget_history
    • First observedrecord_baseline
    • First observedsnapshot

TDQS

B3.4/5.0
Disambiguation4/5

Tools are mostly distinct, though analyze_server and compare_to_baseline both perform explanatory analysis of deviations, which could cause brief hesitation. snapshot vs analyze_server clearly separates raw collection from analysis.

Naming Consistency4/5

Four tools follow a clear verb_noun pattern (analyze_server, get_history, record_baseline, compare_to_baseline). snapshot stands alone without a verb prefix, though it functions as a verb in context—minor deviation but readable.

Tool Count5/5

Five tools is ideal for this focused scope: baseline lifecycle (record, compare), historical retrieval, real-time analysis, and raw capture. Each serves a specific step in the monitoring workflow without bloat.

Completeness4/5

Covers the core monitoring lifecycle: establishing baselines, recording current state, historical lookup, and comparative analysis. Minor gaps exist (no list_baselines or delete_baseline), but agents can work around these.

Related MCP Connectors

Latest Blog Posts

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/oaslananka/mcp-infra-lens'

If you have feedback or need assistance with the MCP directory API, please join our Discord server