video-analytics

Par nvidia · skills

Interrogez les données analytiques vidéo et les métriques depuis Elastic search via le serveur VA-MCP (port 9901). Cela inclut les incidents, les alertes, les données des capteurs et les métriques. À utiliser pour toute question concernant les infractions, les alertes, les incidents, les comptages d'objets, les vitesses, l'occupation, ou tout ce qui nécessite la recherche d'événements enregistrés. C'est le moyen principal pour répondre à une question portant sur les incidents, les alertes et autres métriques telles que les comptages de personnes et les infractions.

npx skills add https://github.com/nvidia/skills --skill video-analytics

Video Analytics (VA-MCP)

Interroge les incidents, alertes et métriques stockés dans Elasticsearch via MCP JSON-RPC au port 9901.

EXÉCUTE TOUJOURS les commandes ci-dessous toi-même et relaye les résultats à l'utilisateur. Ne DEVINE PAS et ne DÉCRIS PAS — exécute réellement et rends compte.


Prérequis de déploiement

Cette skill lit depuis la stack Elasticsearch/VA-MCP lancée par le profil VSS alerts (mode verification ou real-time). Avant toute requête :

  1. Sonde le endpoint VA-MCP :

    curl -sf --max-time 5 "http://${HOST_IP}:9901/mcp" >/dev/null 2>&1 || \
      curl -sf --max-time 5 "http://${HOST_IP}:9901/" >/dev/null
  2. Si la sonde échoue, demande à l'utilisateur :

    « Le profil VSS alerts n'est pas actif sur $HOST_IP (VA-MCP inaccessible). Quel mode dois-je déployer — verification (CV) ou real-time (VLM) ? »

    • Réponse → transfère à la skill /deploy avec -p alerts -m <mode>. Reviens ici une fois que c'est fait.
    • Si l'utilisateur refuse → arrête. Pas d'incidents/alertes/métriques à interroger sans la stack alerts active.

    (Si ton appelant a donné une pré-autorisation explicite de déployer de façon autonome — par exemple la requête dit « pré-autorisé à déployer les prérequis », ou tu tournes dans un bac d'essai d'évaluation non interactif avec cette permission — ignore la confirmation et invoque /deploy directement. Définis le mode par défaut sur verification sauf si la requête précise autrement.)

  3. Si la sonde réussit, procède.


REQUIS : Motif à deux étapes (copie exactement)

Toute requête exige deux commandes shell exécutées en séquence :

# Étape 1 : initialiser — récupère l'ID de session depuis l'EN-TÊTE de réponse
SESSION_ID=$(curl -si -X POST http://localhost:9901/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"cli","version":"1.0"}},"id":0}' \
  | grep -i "mcp-session-id" | awk '{print $2}' | tr -d '\r')

# Étape 2 : appelle l'outil en utilisant l'ID de session dans l'en-tête
curl -s -X POST http://localhost:9901/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "mcp-session-id: $SESSION_ID" \
  -d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"video_analytics__get_incidents","arguments":{"max_count":10}},"id":1}' \
  | grep '^data:' | sed 's/^data: //' | jq -r '.result.content[0].text'

L'ID de session provient de l'en-tête de réponse mcp-session-id, pas du corps. Ignorer l'étape 1 produit toujours Bad Request: Missing session ID.


Référence des outils

Remplace la charge utile -d à l'étape 2 par l'une des suivantes.

video_analytics__get_incidents

Paramètre Type Description
source string ID de capteur ou nom de lieu (optionnel)
source_type string sensor ou place
start_time string ISO 8601 : YYYY-MM-DDTHH:MM:SS.sssZ
end_time string ISO 8601
max_count int Résultats max (défaut : 10)
includes list Champs supplémentaires : objectIds, info
vlm_verdict string confirmed, rejected, ou unverified
# Incidents récents (tous les capteurs)
-d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"video_analytics__get_incidents","arguments":{"max_count":10}},"id":1}'

# Pour un capteur spécifique
-d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"video_analytics__get_incidents","arguments":{"source":"<sensor-id>","source_type":"sensor","max_count":20}},"id":1}'

# Confirmés (vérifiés VLM) uniquement
-d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"video_analytics__get_incidents","arguments":{"vlm_verdict":"confirmed","max_count":10}},"id":1}'

video_analytics__get_incident

-d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"video_analytics__get_incident","arguments":{"id":"<incident-id>","includes":["objectIds","info"]}},"id":1}'

video_analytics__get_sensor_ids

-d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"video_analytics__get_sensor_ids","arguments":{}},"id":1}'

video_analytics__get_places

-d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"video_analytics__get_places","arguments":{}},"id":1}'

video_analytics__get_fov_histogram

-d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"video_analytics__get_fov_histogram","arguments":{"source":"<sensor-id>","source_type":"sensor","start_time":"<ISO>","end_time":"<ISO>","object_type":"Person","bucket_count":10}},"id":1}'

video_analytics__analyze

analysis_type : max_min_incidents, average_speed, avg_num_people, avg_num_vehicles

-d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"video_analytics__analyze","arguments":{"source":"<sensor-id>","source_type":"sensor","start_time":"<ISO>","end_time":"<ISO>","analysis_type":"avg_num_people"}},"id":1}'

vst_sensor_list

-d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"vst_sensor_list","arguments":{}},"id":1}'

Skills similaires