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 :
-
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 -
Si la sonde échoue, demande à l'utilisateur :
« Le profil VSS
alertsn'est pas actif sur$HOST_IP(VA-MCP inaccessible). Quel mode dois-je déployer —verification(CV) oureal-time(VLM) ? »- Réponse → transfère à la skill
/deployavec-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
/deploydirectement. Définis le mode par défaut surverificationsauf si la requête précise autrement.) - Réponse → transfère à la skill
-
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 toujoursBad 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}'