Kubeshark

officiel

Accès MCP au trafic réseau L4 et L7 à l'échelle du cluster, aux paquets, aux API et aux charges utiles complètes.

Que pouvez-vous faire avec Kubeshark MCP ?

  • Interroger les transactions API L7 avec des filtres KFL — utilisez list_api_calls pour trouver des requêtes HTTP, gRPC, Redis, Kafka ou DNS correspondant à des conditions comme les codes d'état ou les chemins.
  • Inspecter un appel API spécifique en détail — récupérez les données complètes de requête/réponse pour une seule transaction avec get_api_call.
  • Obtenir des statistiques API agrégées — résumez les modèles de trafic, les taux d'erreur ou les distributions de latence à l'aide de get_api_stats.
  • Consulter les flux réseau L4 et les résumés — listez les connexions TCP/UDP et obtenez des aperçus de connectivité via list_l4_flows et get_l4_flow_summary.
  • Créer et gérer des instantanés PCAP — capturez le trafic réseau pour une analyse hors ligne avec create_snapshot et list_snapshots.
  • Contrôler la dissection des protocoles L7 — activez ou désactivez l'analyse approfondie des protocoles à la demande à l'aide de enable_dissection et disable_dissection.

Documentation

Serveur MCP Kubeshark

Kubeshark Le serveur MCP (Model Context Protocol) permet aux assistants IA comme Claude Desktop, Cursor et autres clients compatibles MCP d'interroger le trafic réseau Kubernetes en temps réel.

Compétences IA

Le MCP fournit les outils — les compétences IA apprennent aux agents à les utiliser. Les compétences transforment les capacités brutes du MCP en flux de travail spécifiques au domaine, comme l'analyse des causes racines, le filtrage du trafic et les enquêtes forensiques. Consultez le README des compétences pour l'installation et l'utilisation.

CompétenceDescription
network-rcaAnalyse des causes racines réseau — enquête rétrospective basée sur des instantanés avec des routes PCAP et de dissection
kflExpert en filtres KFL2 — écrire, déboguer et optimiser les requêtes de trafic sur tous les protocoles pris en charge

Fonctionnalités

  • Analyse du trafic API L7 : Interroger les transactions HTTP, gRPC, Redis, Kafka, DNS
  • Flux réseau L4 : Voir les flux TCP/UDP avec les statistiques de trafic
  • Gestion de cluster : Démarrer/arrêter les déploiements Kubeshark (avec contrôles de sécurité)
  • Instantanés PCAP : Créer et exporter des captures réseau
  • Invites intégrées : Invites préconfigurées pour les tâches d'analyse courantes

Installation

1. Installer la CLI Kubeshark

# macOS
brew install kubeshark

# Linux
sh <(curl -Ls https://kubeshark.com/install)

# Windows (PowerShell)
choco install kubeshark

Ou téléchargez depuis les Releases GitHub.

2. Configurer Claude Desktop

Ajoutez à votre configuration Claude Desktop :

macOS : ~/Library/Application Support/Claude/claude_desktop_config.json Windows : %APPDATA%\Claude\claude_desktop_config.json

Par défaut (nécessite un accès kubectl / contexte kube)

{
  "mcpServers": {
    "kubeshark": {
      "command": "kubeshark",
      "args": ["mcp"]
    }
  }
}

Avec un chemin de kubeconfig explicite :

{
  "mcpServers": {
    "kubeshark": {
      "command": "kubeshark",
      "args": ["mcp", "--kubeconfig", "/path/to/.kube/config"]
    }
  }
}

Mode URL (pas de kubectl requis)

Utilisez ceci lorsque la machine n'a pas d'accès kubectl ou de contexte kube. Connectez-vous directement à un déploiement Kubeshark existant :

{
  "mcpServers": {
    "kubeshark": {
      "command": "kubeshark",
      "args": ["mcp", "--url", "https://kubeshark.example.com"]
    }
  }
}

Pour un Hub sécurisé (AUTH_ENABLED=true), le mode URL ne peut pas créer de jeton (pas d'accès kube), donc fournissez-en un explicitement via --token (ou la variable d'environnement KUBESHARK_HUB_TOKEN). Créez-le depuis une machine qui a accès au cluster :

kubectl create token kubeshark-cli -n <release-namespace> --audience kubeshark-hub
{
  "mcpServers": {
    "kubeshark": {
      "command": "kubeshark",
      "args": ["mcp", "--url", "https://kubeshark.example.com", "--token", "<token>"]
    }
  }
}

Le jeton est de courte durée (~1h) et le mode URL ne peut pas le renouveler automatiquement ; lorsqu'il expire, le serveur signale un message clair 401 ... token expired/invalid — recréez-le et redémarrez. Le mode proxy (par défaut, avec accès kube) crée le jeton kubeshark-cli automatiquement et le renouvelle automatiquement, ainsi les sessions de longue durée n'expirent pas.

Avec opérations destructrices

{
  "mcpServers": {
    "kubeshark": {
      "command": "kubeshark",
      "args": ["mcp", "--allow-destructive", "--kubeconfig", "/path/to/.kube/config"]
    }
  }
}

3. Générer la configuration

Utilisez la CLI pour générer la configuration :

kubeshark mcp --mcp-config --url https://kubeshark.example.com

Outils disponibles

Analyse du trafic (tous les modes)

OutilDescription
list_workloadsLister les pods, services, espaces de noms avec le trafic observé
list_api_callsInterroger les transactions API L7 avec le filtrage KFL
get_api_callObtenir des informations détaillées sur un appel API spécifique
get_api_statsObtenir des statistiques API agrégées
list_l4_flowsLister les flux réseau L4 (TCP/UDP)
get_l4_flow_summaryObtenir un résumé de la connectivité L4
list_snapshotsLister tous les instantanés PCAP
create_snapshotCréer un nouvel instantané PCAP
get_dissection_statusVérifier l'état de l'analyse du protocole L7
enable_dissectionActiver la dissection du protocole L7
disable_dissectionDésactiver la dissection du protocole L7

Gestion de cluster (mode proxy uniquement)

OutilDescriptionNécessite
check_kubeshark_statusVérifier si Kubeshark est en cours d'exécution-
start_kubesharkDéployer Kubeshark sur le cluster--allow-destructive
stop_kubesharkSupprimer Kubeshark du cluster--allow-destructive

Invites disponibles

InviteDescription
analyze_trafficAnalyser les modèles de trafic API et identifier les problèmes
find_errorsTrouver et résumer les erreurs et échecs API
trace_requestTracer le chemin d'une requête à travers les microservices
show_topologyAfficher la topologie de communication des services
latency_analysisAnalyser les modèles de latence et identifier les points de terminaison lents
security_auditAuditer le trafic pour détecter les problèmes de sécurité
compare_trafficComparer les modèles de trafic entre deux périodes
debug_connectionDéboguer les problèmes de connectivité entre les services

Exemples de conversations

User: Show me all HTTP 500 errors in the last hour

Claude: I'll query the API traffic for 500 errors.
[Calling list_api_calls with kfl="http and response.status == 500"]

Found 12 HTTP 500 errors:
1. POST /api/checkout -> payment-service (500)
   Time: 10:23:45 | Latency: 2340ms
...
User: What services are communicating with the database?

Claude: Let me check the L4 flows to the database.
[Calling list_l4_flows with dst_filter="postgres"]

Found 5 services connecting to postgres:5432:
- orders-service: 456KB transferred
- users-service: 123KB transferred
...

Options CLI

OptionDescription
--urlURL directe vers le Hub Kubeshark
--tokenJeton SA/bearer du Hub pour le mode --url contre un Hub sécurisé (aussi KUBESHARK_HUB_TOKEN) ; ignoré en mode proxy, qui crée et renouvelle automatiquement le jeton
--kubeconfigChemin vers le fichier kubeconfig
--allow-destructiveActiver les opérations de démarrage/arrêt
--list-toolsLister les outils disponibles et quitter
--mcp-configAfficher la configuration JSON de Claude Desktop

KFL (Kubeshark Filter Language)

Interroger le trafic en utilisant la syntaxe KFL :

# HTTP requests to a specific path
http and request.path == "/api/users"

# Errors only
response.status >= 400

# Specific source pod
src.pod.name == "frontend-.*"

# Multiple conditions
http and src.namespace == "default" and response.status == 500

Registre MCP

Kubeshark est publié sur le Registre MCP automatiquement à chaque version.

Le server.json dans ce répertoire est un fichier de référence. Les métadonnées réelles du registre (version, hachages SHA256) sont générées automatiquement pendant le workflow de publication. Voir .github/workflows/release.yml pour plus de détails.

Liens

Licence

Apache-2.0