Linux Diagnostics MCP Server
Linux-Diagnose-MCP-Server - Vorlesungs-Demo
Eine Python/Linux-Adaption des ursprünglichen MCPDemo-Lehr-Repositorys. Dieses Repo erreicht nun Meilenstein-7-Parität für den öffentlichen Lehrablauf: kompakte Systeminspektion, Linux-Prozess-Detailansicht, Protokoll-Snapshots als Ressourcen, Workflow-Prompts, authentifiziertes MCP über HTTP auf /mcp, explizite Aufforderung vor Prozessbeendigung, sampling-gestützte Linux-Diagnose und erlaubte Root-Proc/Sys-Snapshots.
Was diese Demo zeigt
Diese Vorlesungs-Demo enthält nun:
✅ Tools: Linux-Diagnosetools für
get_system_info,get_process_list,get_process_by_id,get_process_by_nameund eine durch Aufforderung geschütztekill_process-Funktion✅ Ressourcen: gepagte
syslog://snapshot/...Protokoll-Snapshot-Ressourcen✅ Prompts: MCP-Workflow-Prompts für Fehleranalyse, CPU-Untersuchung, Sicherheitsüberprüfung und Gesundheitsdiagnose
✅ HTTP-Transport: streamfähiges MCP über
http://127.0.0.1:5000/mcp✅ API-Key-Authentifizierung:
X-API-Key-Header oder?apiKey=secure-mcp-key✅ KI-Chat-Client: ein Python Azure OpenAI-Client, der den lokalen HTTP-Server startet, dem Modell erlaubt, MCP-Tools, Prompts und Ressourcen aufzurufen, und lokale Formular-Aufforderungen im Terminal handhabt
✅ Python 3.12-Implementierung mit dem offiziellen MCP Python SDK
✅ Mehrere Testmethoden
✅ Meilenstein-5-Aufforderung für
kill_process✅ Meilenstein-6-sampling-gestützte Linux-Diagnose
✅ Meilenstein-7-Roots für schreibgeschützte
/proc- und/sys-Snapshots
Related MCP server: system-monitor
Schnellstart
1. Installation
Nur-Server-Installation:
python3 -m pip install --user --break-system-packages -e .Installation der Vorlesungs-Chat-Client-Extras:
python3 -m pip install --user --break-system-packages -e '.[llm]'2. Schneller Rauchtest (Kein LLM)
python3 scripts/smoke_test.pyDieses Skript:
Startet den lokalen HTTP-MCP-Server
Verifiziert
401 Unauthorizedohne API-KeyFührt den MCP-Initialisierungs-Handshake auf
/mcpdurchBestätigt, dass der
mcp-session-id-Ablauf über Anfragen hinweg funktioniertErkennt Tools, Prompts und Ressourcenvorlagen
Führt die System-, Prozess-, Protokoll-Snapshot-, Proc-Snapshot- und sampling-gestützten Diagnoseabläufe aus
Verifiziert, dass
kill_processsicher fehlschlägt, wenn der Client keine Unterstützung für Aufforderungen ankündigtVerifiziert, dass der Vorlesungs-Chat-Client sicher fehlschlägt, wenn Azure OpenAI-Einstellungen fehlen
3. Server manuell ausführen
python3 -m mcp_linux_diag_serverDer Server lauscht auf:
Endpunkt:
http://127.0.0.1:5000/mcpDemo-API-Key:
secure-mcp-key
4. Test mit MCP Inspector oder VS Code MCP-Konfiguration
Starten Sie den Server in einem Terminal und verbinden Sie sich dann über den oben genannten HTTP-Endpunkt.
Dieses Repo enthält .vscode/mcp.json mit dem erforderlichen Header:
{
"servers": {
"linux-diag-demo": {
"url": "http://127.0.0.1:5000/mcp",
"headers": {
"X-API-Key": "secure-mcp-key"
}
}
}
}Wenn Ihr Inspector eine URL direkt akzeptiert, funktioniert auch diese Query-String-Form:
http://127.0.0.1:5000/mcp?apiKey=secure-mcp-key5. Den Vorlesungs-Chat-Client verwenden
Kopieren Sie die Beispiel-Umgebungsdatei und füllen Sie Ihre lokalen Azure OpenAI-Einstellungen aus:
cp .env.example .env.local
$EDITOR .env.local
python3 -m mcp_linux_diag_server.client --prompt "Summarize this machine."Um den ursprünglichen .NET-Anmeldeinformationsablauf genauer abzubilden, setzen Sie:
MCP_DEMO_AZURE_OPENAI_USE_DEFAULT_CREDENTIAL=trueund lassen Sie den API-Key weg.
Interaktiven Chat ausführen:
python3 -m mcp_linux_diag_server.clientOder einen einzelnen Prompt ausführen:
python3 -m mcp_linux_diag_server.client --prompt "What is the system information?"Die Tools
Systeminformationen
get_system_info- Gibt einen kompakten Linux- oder WSL-System-Snapshot zurückHostname
Aktueller Benutzer
Beschreibung der Linux-Distribution
Kernel-Release
Architektur
Anzahl der logischen CPUs
Python-Laufzeit
Aktuelles Arbeitsverzeichnis
Betriebszeit (Uptime)
Lastdurchschnitte (Load Averages)
Speicherzusammenfassung
WSL-Erkennungs-Flag
Prozessinspektion
get_process_list- Gibt eine leichtgewichtige Liste laufender Prozesse mit Namen und PIDs zurückget_process_by_id- Gibt detaillierte Linux-Prozessinformationen für eine PID zurückget_process_by_name- Gibt gepagte detaillierte Prozessinformationen für einen Prozessnamen zurückStandardmäßig
page_number=1Standardmäßig
page_size=5Behält den Listen-zuerst, Details-danach-Lehrablauf aus der ursprünglichen Demo bei
kill_process- Beendet einen Linux-Prozess erst nach expliziter AufforderungWenn
process_idweggelassen wird, sampelt der Server die Prozesse mit der höchsten CPU-Auslastung und bittet den Client, einen auszuwählenDer Server erfordert immer den getippten Bestätigungssatz
CONFIRM PID {pid}Der Vorlesungs-Client handhabt diese Aufforderungen lokal im Terminal, wenn stdin/stdout interaktiv sind
troubleshoot_linux_diagnostics- Verwendet Sampling, um eine natürlichsprachliche Linux-Diagnosefrage in einen validierten/proc- oder/sys-Lesezugriff umzuwandelnDer Server validiert den gesampelten Pfad und das Feld gegen eine Erlaubnisliste, bevor er irgendetwas liest
Exakte Python-Adaption: die gesampelte Abfrage ist eine einzelne sichere
PATH- oderPATH | grep FIELD-Zeile anstelle von WQLDer Server sampelt dann erneut, um die Beobachtung für den Benutzer zusammenzufassen
create_proc_snapshot- Erstellt einen unveränderlichen, schreibgeschützten Snapshot von einem erlaubten/proc- oder/sys-Pfad und gibt Ressourcen-URIs zurückDatei-Snapshots paginieren den Inhalt Zeile für Zeile
Verzeichnis-Snapshots paginieren deterministische Kind-Metadaten, ohne symbolischen Links zu folgen
Erzwingt explizite erlaubte Roots, bevor irgendetwas gelesen wird
request_proc_access- Verwendet Aufforderungen, um schreibgeschützten Zugriff auf eine zusätzliche/proc- oder/sys-Root anzufordernFügt die genehmigte Root zur In-Memory-Erlaubnisliste des Servers hinzu
Ermöglicht es dem Modell, proaktiv Zugriff anzufordern, bevor ein blockierter Snapshot-Versuch unternommen wird
Protokoll-Snapshots
create_log_snapshot- Erstellt einen unveränderlichen Snapshot von einer gängigen Linux-Protokolldatei und gibt Ressourcen-URIs zurückUnterstützt die Protokollgruppen
system,security,kernelundpackageOptionales
filter_textschränkt den Snapshot auf übereinstimmende Zeilen einGibt eine Basis-Ressourcen-URI plus eine paginierte Ressourcenvorlage zurück
Ressourcen
syslog://snapshot/{snapshot_id}- Liest einen gespeicherten Linux-Protokoll-Snapshot mit Standard-Paginierungsyslog://snapshot/{snapshot_id}?limit={limit}&offset={offset}- Liest eine bestimmte Seite aus einem gespeicherten Snapshotproc://snapshot/{snapshot_id}- Liest einen gespeicherten Proc/Sys-Snapshot mit Standard-Paginierungproc://snapshot/{snapshot_id}?limit={limit}&offset={offset}- Liest eine bestimmte Seite aus einem gespeicherten Proc/Sys-Snapshot
Jeder Ressourcen-Lesezugriff gibt zurück:
Snapshot-Metadaten
erfasste Einträge
Paginierungs-Metadaten (
total_count,returned_count,limit,offset,has_more,next_offset)
Prompts
AnalyzeRecentApplicationErrors- Fehlerfokussierter Protokollanalyse-WorkflowExplainHighCpu- Korreliert CPU-intensive Prozesse mit Linux-ProtokollenDetectSecurityAnomalies- Überprüft verdächtige Prozesse sowie Beweise aus Auth-/SicherheitsprotokollenDiagnoseSystemHealth- End-to-End-Systemgesundheits-WorkflowTroubleshootLinuxComponent- Fokussierter Deep-Dive-Workflow, der den Agenten in Richtungtroubleshoot_linux_diagnosticslenkt
Projekte
src/mcp_linux_diag_server/server.py
Der authentifizierte HTTP-MCP-Server, der die Diagnose-Tools, Ressourcen und Workflow-Prompts der Meilensteine 1-7 bereitstellt.
src/mcp_linux_diag_server/client.py
Der Vorlesungs-Chat-Client, der:
den lokalen HTTP-Server startet
sich über streamfähiges HTTP mit dem Demo-API-Key verbindet
MCP-Prompt-/Ressourcen-APIs als Hilfswerkzeuge für das Modell bereitstellt
MCP-Formular-Aufforderungen im lokalen Terminal erfüllt, wenn das Modell
kill_processauslöstMCP-Sampling-Anfragen erfüllt, damit der Server sichere Linux-Diagnoseabfragen und Zusammenfassungen synthetisieren kann
dem Modell beibringt, Proc/Sys-Zugriff anzufordern, bevor blockierte Pfade gesnapshotet werden
Tool-Aufruf-Turns ausführt
Testmethoden
Methode | Visuell | Interaktiv | LLM | Am besten für |
| ❌ Nein | ❌ Nein | ❌ Nein | schnelle Verifizierung des M1-M7-Serververhaltens |
MCP Inspector / | ✅ Ja | ✅ Ja | ❌ Nein | Entwicklung, Debugging, Lehre |
| ❌ Nein | ✅ Ja | ✅ Ja | Vorlesungs-Demo-Ablauf |
Für die M1-Validierungs-Checkliste, die dem Basis-Lehrablauf immer noch zugrunde liegt, siehe M1_VALIDATION_GUIDE.md.
Projektstruktur
MCPPythonDemo/
├── README.md
├── LICENSE.txt
├── pyproject.toml
├── .env.example
├── .vscode/
│ └── mcp.json
├── scripts/
│ └── smoke_test.py
├── src/
│ └── mcp_linux_diag_server/
│ ├── __main__.py
│ ├── client.py
│ ├── http_config.py
│ ├── server.py
│ └── tools/
│ ├── log_snapshots.py
│ ├── proc_snapshots.py
│ ├── processes.py
│ └── system_info.py
├── tests/
│ ├── http_harness.py
│ ├── test_client.py
│ ├── test_m1_smoke.py
│ ├── test_m2_smoke.py
│ ├── test_m3_smoke.py
│ ├── test_m4_http.py
│ ├── test_log_snapshots.py
│ ├── test_processes.py
│ └── test_system_info.pyAnforderungen
Python 3.12+
mcp[cli]Azure OpenAI nur, wenn Sie den Vorlesungs-Chat-Client ausführen möchten
Meilensteine
✅ Meilenstein 1 - Minimales Diagnose-Tool über stdio plus Vorlesungs-Chat-Client
✅ Meilenstein 2 - Prozessinspektion
✅ Meilenstein 3 - Protokoll-Snapshot-Ressourcen und Prompts
✅ Meilenstein 4 - HTTP-Transport und Sicherheit
✅ Meilenstein 5 - Aufforderungs-gestütztes kill_process
✅ Meilenstein 6 - Sampling-gestützte Linux-Diagnose
✅ Meilenstein 7 - Roots und Proc/Sys-Snapshots
Lizenz
MIT. Siehe LICENSE.txt.
Ressourcen
This server cannot be deployed
Maintenance
Related MCP Connectors
Read-only server insight: why a Linux server or K8s cluster is slow, failing or changed.
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
Read-only MCP access to a documented IT fleet: state, changes, posture. 15 tools.
Network, domain and website diagnostics for AI clients via MCP.
Related MCP Servers
- AlicenseBqualityAmaintenanceAn MCP server for read-only Linux system administration and diagnostics on RHEL-based systems via SSH. It enables users to troubleshoot remote hosts by accessing system information, services, logs, and network configurations through natural language.23860 PyPI317Apache 2.0
- AlicenseAqualityDmaintenanceA secure, read-only MCP server for AI-powered system monitoring. It provides real-time OS metrics, config discovery, and safe log tailing to enable autonomous infrastructure audits without shell access risks.41ISC
- -licenseNot gradedqualityNot gradedmaintenanceA read-only system observability and OS algorithm lab MCP server for openEuler/Linux, encapsulating memory, filesystem, process, and CPU info into typed tools for reliable LLM client use.-
- AlicenseAqualityBmaintenanceAn MCP server that gives AI assistants safe, read-only visibility into a host: CPU, memory, disk, processes, network, ports, and logs.8MIT