Skip to main content
Le Model Context Protocol (MCP) est un standard ouvert qui permet aux assistants IA d’interagir avec des outils et des sources de donnees externes. Le MCP server d’Avala expose vos datasets, projets et exports sous forme d’outils que tout client compatible MCP peut appeler, vous permettant ainsi de gerer votre flux d’annotation en langage naturel sans changer de contexte. Cela signifie que vous pouvez demander a Claude de « lister tous mes datasets », faire creer un export par Cursor, ou utiliser VS Code pour verifier l’etat d’un projet — le tout reposant sur la meme API Avala que vous utilisez deja.

Prerequis

  • Node.js 18 ou version ulterieure installe sur votre machine
  • Une cle API Avala (generez-en une dans Mission Control sous Settings > Security)

Installation

Claude Desktop

Ouvrez votre fichier de configuration Claude Desktop :
  • macOS : ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows : %APPDATA%\Claude\claude_desktop_config.json
Ajoutez le MCP server Avala :
Ne committez jamais de fichiers de configuration contenant de vraies cles API dans le controle de version. Definissez AVALA_API_KEY comme variable d’environnement systeme, ou remplacez "your-api-key" par votre cle reelle localement et assurez-vous que le fichier de configuration est dans votre .gitignore.
Redemarrez Claude Desktop. Vous devriez voir les outils Avala disponibles dans le selecteur d’outils.

Cursor

Creez ou modifiez .cursor/mcp.json a la racine de votre projet (ou dans le repertoire de configuration globale) :
.cursor/mcp.json se trouve a la racine de votre projet et peut etre committe dans git. Ajoutez-le a votre .gitignore ou definissez AVALA_API_KEY comme variable d’environnement systeme au lieu de la placer directement dans le fichier de configuration.
Redemarrez Cursor ou rechargez la fenetre. Les outils Avala apparaitront dans le mode agent de Cursor.

VS Code

Creez ou modifiez .vscode/mcp.json dans votre espace de travail :
.vscode/mcp.json se trouve dans votre espace de travail et peut etre committe dans git. Ajoutez-le a votre .gitignore ou definissez AVALA_API_KEY comme variable d’environnement systeme au lieu de la placer directement dans le fichier de configuration.
Assurez-vous que l’extension GitHub Copilot est installee avec le support MCP active. Redemarrez VS Code pour prendre en compte le nouveau serveur.

Claude Code

Ajoutez le MCP server Avala a Claude Code avec une seule commande :
Definissez votre cle API comme variable d’environnement :
Redemarrez Claude Code. Les outils Avala seront disponibles dans votre session.

ChatGPT

Le support MCP de ChatGPT est en evolution. Consultez la documentation d’OpenAI pour les dernieres instructions d’installation et la disponibilite dans votre plan et votre region.

Mode de securite MCP

Pour des raisons de securite, le MCP server est en lecture seule par defaut. Les outils de mutation ne sont pas enregistres sauf si vous les activez explicitement avec :
Cette variable d’environnement peut etre definie dans l’environnement de processus de votre MCP server avant de le lancer. Par defaut, les operations d’ecriture/suppression suivantes sont bloquees :
  • create_dataset
  • create_agent, delete_agent
  • create_annotation_issue, update_annotation_issue, delete_annotation_issue
  • create_storage_config, test_storage_config, delete_storage_config
  • create_webhook, delete_webhook
  • create_export
  • evaluate_quality
  • compute_consensus
  • fleet_register_device, fleet_acknowledge_alert

Outils MCP disponibles

Une fois connecte, les outils suivants sont disponibles pour l’assistant IA :

Fleet (Apercu)

Les outils Fleet sont en apercu et peuvent evoluer. Ils fournissent un acces en lecture et en ecriture aux appareils, enregistrements, evenements, alertes et regles de la flotte.

Definitions des outils

Schemas detailles pour chaque outil MCP. Tous les outils retournent du JSON sous forme de contenu texte.

list_datasets

Liste tous les datasets de l’espace de travail. Parameters:
  • dataType (string, optional) — Filtrer par type de donnees (image, video, lidar, mcap, splat)
  • name (string, optional) — Filtrer par nom de dataset (correspondance partielle)
  • status (string, optional) — Filtrer par statut du dataset
  • visibility (string, optional) — Filtrer par visibilite (private ou public)
  • limit (number, optional) — Nombre maximum de datasets a retourner
  • cursor (string, optional) — Curseur de pagination d’une requete precedente
Exemple de reponse :

get_dataset

Obtient les details d’un dataset specifique. Parameters:
  • uid (string, required) — L’identifiant unique (UUID) du dataset
Exemple de reponse :
Reponse d’erreur (UID invalide) :

list_projects

Liste tous les projets d’annotation. Parameters:
  • limit (number, optional) — Nombre maximum de projets a retourner
  • cursor (string, optional) — Curseur de pagination d’une requete precedente

get_project

Obtient les details d’un projet specifique. Parameters:
  • uid (string, required) — L’identifiant unique (UUID) du projet

create_dataset

Cree un nouveau dataset pour l’annotation. Parameters:
  • name (string, required) — Nom d’affichage du dataset
  • slug (string, required) — Identifiant compatible URL pour le dataset
  • dataType (string, required) — Type de donnees : image, video, lidar ou mcap
  • visibility (string, optional) — Visibilite du dataset : private ou public (par defaut : private)
  • createMetadata (boolean, optional) — Si les metadonnees du dataset doivent etre creees (par defaut : true)
  • providerConfig (object, optional) — Configuration du fournisseur de stockage cloud
  • ownerName (string, optional) — Nom d’utilisateur ou email du proprietaire du dataset

create_export

Declenche un nouvel export pour un dataset ou un projet. Parameters:
  • project (string, optional) — UID du projet a exporter
  • dataset (string, optional) — UID du dataset a exporter
Exemple de reponse :

get_export_status

Verifie le statut d’un export. Parameters:
  • uid (string, required) — L’identifiant unique (UUID) de l’export
Exemple de reponse :

list_exports

Liste tous les exports de l’espace de travail. Parameters:
  • limit (number, optional) — Nombre maximum d’exports a retourner
  • cursor (string, optional) — Curseur de pagination d’une requete precedente

get_workspace_stats

Obtient un apercu rapide du contenu de l’espace de travail (datasets, projets, exports). Parameters: Aucun Exemple de reponse :

list_tasks

Liste les taches avec filtrage optionnel par projet ou statut. Parameters:
  • project (string, optional) — Filtrer par UID de projet
  • status (string, optional) — Filtrer par statut de tache
  • limit (number, optional) — Nombre maximum de taches a retourner
  • cursor (string, optional) — Curseur de pagination d’une requete precedente
Exemple de reponse :

get_task

Obtient les informations detaillees d’une tache specifique. Parameters:
  • uid (string, required) — L’identifiant unique (UUID) de la tache

list_agents

Liste tous les agents d’automatisation configures dans votre espace de travail. Parameters:
  • limit (number, optional) — Nombre maximum d’agents a retourner
  • cursor (string, optional) — Curseur de pagination d’une requete precedente

get_agent

Obtient les informations detaillees d’un agent d’automatisation specifique. Parameters:
  • uid (string, required) — L’identifiant unique (UUID) de l’agent

create_agent

Cree un nouvel agent d’automatisation avec des abonnements aux evenements et une URL de rappel. Parameters:
  • name (string, required) — Nom de l’agent
  • events (string[], required) — Liste des types d’evenements auxquels l’agent s’abonne
  • callbackUrl (string, optional) — URL pour recevoir les rappels d’evenements
  • description (string, optional) — Description de l’agent
  • project (string, optional) — UID du projet pour limiter la portee de l’agent
  • taskTypes (string[], optional) — Types de taches geres par l’agent

delete_agent

Supprime un agent d’automatisation par son UID. Parameters:
  • uid (string, required) — L’identifiant unique (UUID) de l’agent a supprimer

list_webhooks

Liste tous les abonnements webhook de votre espace de travail. Parameters:
  • limit (number, optional) — Nombre maximum de webhooks a retourner
  • cursor (string, optional) — Curseur de pagination d’une requete precedente

create_webhook

Cree un nouvel abonnement webhook pour des evenements specifiques. Parameters:
  • targetUrl (string, required) — URL pour recevoir les livraisons de webhook
  • events (string[], required) — Liste des types d’evenements auxquels s’abonner

delete_webhook

Supprime un abonnement webhook par son UID. Parameters:
  • uid (string, required) — L’identifiant unique (UUID) du webhook a supprimer

list_storage_configs

Liste toutes les configurations de stockage de votre espace de travail. Parameters:
  • limit (number, optional) — Nombre maximum de configurations de stockage a retourner
  • cursor (string, optional) — Curseur de pagination d’une requete precedente

create_storage_config

Cree une nouvelle configuration de stockage (S3 ou Google Cloud Storage). Parameters:
  • name (string, required) — Nom de la configuration de stockage
  • provider (string, required) — Type de fournisseur de stockage (s3 ou gcs)
  • s3BucketName (string, optional) — Nom du bucket S3
  • s3BucketRegion (string, optional) — Region du bucket S3
  • s3BucketPrefix (string, optional) — Prefixe de cle S3
  • s3AccessKeyId (string, optional) — ID de cle d’acces S3 (stocke de maniere securisee cote serveur)
  • s3SecretAccessKey (string, optional) — Cle d’acces secrete S3 (stockee de maniere securisee cote serveur)
  • s3IsAccelerated (boolean, optional) — Activer S3 Transfer Acceleration
  • gcStorageBucketName (string, optional) — Nom du bucket Google Cloud Storage
  • gcStoragePrefix (string, optional) — Prefixe Google Cloud Storage
  • gcStorageAuthJsonContent (string, optional) — Identifiants JSON du compte de service GCS (stockes de maniere securisee cote serveur)

test_storage_config

Teste la connectivite d’une configuration de stockage. Parameters:
  • uid (string, required) — L’identifiant unique (UUID) de la configuration de stockage a tester

delete_storage_config

Supprime une configuration de stockage par son UID. Parameters:
  • uid (string, required) — L’identifiant unique (UUID) de la configuration de stockage a supprimer

list_quality_targets

Liste les objectifs de qualite configures pour un projet specifique. Parameters:
  • projectUid (string, required) — L’identifiant unique (UUID) du projet
  • limit (number, optional) — Nombre maximum d’objectifs de qualite a retourner
  • cursor (string, optional) — Curseur de pagination d’une requete precedente

evaluate_quality

Evalue tous les objectifs de qualite d’un projet et retourne leur statut actuel. Parameters:
  • projectUid (string, required) — L’identifiant unique (UUID) du projet a evaluer

get_consensus_summary

Obtient un resume de consensus pour un projet incluant les scores moyens/medians et la distribution. Parameters:
  • projectUid (string, required) — L’identifiant unique (UUID) du projet

compute_consensus

Declenche le calcul de consensus pour un projet. Parameters:
  • projectUid (string, required) — L’identifiant unique (UUID) du projet

list_organizations

Liste toutes les organisations dont vous etes membre. Parameters:
  • limit (number, optional) — Nombre maximum d’organisations a retourner
  • cursor (string, optional) — Curseur de pagination d’une requete precedente

get_organization

Obtient les informations detaillees d’une organisation specifique. Parameters:
  • slug (string, required) — L’identifiant slug de l’organisation

list_slices

Liste les slices d’un proprietaire (utilisateur ou organisation). Parameters:
  • owner (string, required) — Nom du proprietaire (slug d’utilisateur ou d’organisation)
  • limit (number, optional) — Nombre maximum de slices a retourner
  • cursor (string, optional) — Curseur de pagination d’une requete precedente

get_slice

Obtient les informations detaillees d’un slice specifique. Parameters:
  • owner (string, required) — Nom du proprietaire (slug d’utilisateur ou d’organisation)
  • slug (string, required) — Le slug du slice

list_annotation_issues_by_sequence

Liste tous les problemes d’annotation d’une sequence specifique. Parameters:
  • sequenceUid (string, required) — L’UUID de la sequence
  • datasetItemUid (string, optional) — Filtrer par UUID de l’element de dataset
  • projectUid (string, optional) — Filtrer par UUID du projet

create_annotation_issue

Cree un nouveau probleme d’annotation sur une sequence. Parameters:
  • sequenceUid (string, required) — L’UUID de la sequence
  • toolUid (string, required) — UUID de l’outil d’annotation
  • problemUid (string, required) — UUID du type de probleme
  • datasetItemUid (string, optional) — UUID de l’element de dataset
  • projectUid (string, optional) — UUID du projet
  • priority (string, optional) — Niveau de priorite : lowest, low, medium, high, highest
  • severity (string, optional) — Niveau de severite : critical, moderate
  • description (string, optional) — Description du probleme
  • wrongClass (string, optional) — Etiquette de classe incorrecte
  • correctClass (string, optional) — Etiquette de classe correcte
  • objectUid (string, optional) — UUID de l’objet d’annotation
  • shouldReAnnotate (boolean, optional) — Si une re-annotation est necessaire
  • shouldDelete (boolean, optional) — Si l’annotation doit etre supprimee
  • framesAffected (string, optional) — Images affectees par le probleme

update_annotation_issue

Met a jour un probleme d’annotation existant (statut, priorite, etc.). Parameters:
  • sequenceUid (string, required) — L’UUID de la sequence
  • issueUid (string, required) — L’UUID du probleme d’annotation
  • status (string, optional) — Statut : open, relabeling, in_review, completed, cant_reproduce, awaiting_feedback, no_action_taken
  • priority (string, optional) — Niveau de priorite : lowest, low, medium, high, highest
  • severity (string, optional) — Niveau de severite : critical, moderate
  • description (string, optional) — Description mise a jour
  • toolUid (string, optional) — UUID de l’outil d’annotation
  • problemUid (string, optional) — UUID du type de probleme
  • wrongClass (string, optional) — Etiquette de classe incorrecte
  • framesAffected (string, optional) — Images affectees par le probleme

delete_annotation_issue

Supprime un probleme d’annotation. Parameters:
  • sequenceUid (string, required) — L’UUID de la sequence
  • issueUid (string, required) — L’UUID du probleme d’annotation a supprimer

list_annotation_issues_by_dataset

Liste tous les problemes d’annotation d’un dataset. Parameters:
  • owner (string, required) — Nom d’utilisateur du proprietaire du dataset
  • datasetSlug (string, required) — Slug du dataset
  • sequenceUid (string, optional) — Filtrer par UUID de sequence

get_annotation_issue_metrics

Obtient les metriques agregees des problemes d’annotation d’un dataset (nombre par statut/priorite/severite, temps de cloture). Parameters:
  • owner (string, required) — Nom d’utilisateur du proprietaire du dataset
  • datasetSlug (string, required) — Slug du dataset
  • sequenceUid (string, optional) — Filtrer par UUID de sequence

list_qc_tools

Liste les outils QC d’annotation disponibles pour un type de dataset donne. Parameters:
  • datasetType (string, required) — Le type de dataset (ex. lidar, image, video)

fleet_list_devices

Liste les appareils de la flotte avec des filtres optionnels. Parameters:
  • status (string, optional) — Filtrer par statut de l’appareil (online, offline, maintenance)
  • type (string, optional) — Filtrer par type d’appareil
  • limit (number, optional) — Nombre maximum d’appareils a retourner
  • cursor (string, optional) — Curseur de pagination
Exemple de reponse :

fleet_get_device

Obtient les informations detaillees d’un appareil de flotte specifique. Parameters:
  • uid (string, required) — L’identifiant unique de l’appareil

fleet_list_recordings

Liste les enregistrements de la flotte avec des filtres optionnels. Parameters:
  • device (string, optional) — Filtrer par UID d’appareil
  • status (string, optional) — Filtrer par statut d’enregistrement
  • limit (number, optional) — Nombre maximum d’enregistrements a retourner
  • cursor (string, optional) — Curseur de pagination

fleet_get_recording

Obtient les informations detaillees d’un enregistrement specifique. Parameters:
  • uid (string, required) — L’identifiant unique de l’enregistrement

fleet_list_events

Liste les evenements de la flotte avec des filtres optionnels. Parameters:
  • recording (string, optional) — Filtrer par UID d’enregistrement
  • device (string, optional) — Filtrer par UID d’appareil
  • type (string, optional) — Filtrer par type d’evenement
  • severity (string, optional) — Filtrer par severite
  • limit (number, optional) — Nombre maximum d’evenements a retourner
  • cursor (string, optional) — Curseur de pagination

fleet_list_alerts

Liste les alertes de la flotte avec des filtres optionnels. Parameters:
  • status (string, optional) — Filtrer par statut d’alerte (open, acknowledged, resolved)
  • severity (string, optional) — Filtrer par severite (info, warning, error, critical)
  • device (string, optional) — Filtrer par UID d’appareil
  • rule (string, optional) — Filtrer par UID de regle
  • limit (number, optional) — Nombre maximum d’alertes a retourner
  • cursor (string, optional) — Curseur de pagination
Exemple de reponse :

fleet_list_rules

Liste les regles de la flotte avec des filtres optionnels. Parameters:
  • enabled (boolean, optional) — Filtrer par statut d’activation
  • limit (number, optional) — Nombre maximum de regles a retourner
  • cursor (string, optional) — Curseur de pagination

fleet_register_device

Enregistre un nouvel appareil de flotte. Parameters:
  • name (string, required) — Nom de l’appareil
  • type (string, required) — Type de l’appareil
  • firmwareVersion (string, optional) — Version du firmware
  • tags (string[], optional) — Etiquettes pour l’appareil

fleet_acknowledge_alert

Acquitte une alerte de flotte. Parameters:
  • uid (string, required) — L’identifiant unique de l’alerte a acquitter

Recettes

Flux de travail en plusieurs etapes que vous pouvez executer en langage naturel. Chaque recette montre les appels d’outils que l’assistant effectue en arriere-plan.

Recette 1 : Bilan de sante des datasets

Demandez a votre assistant : « Faites-moi un bilan de sante de mon espace de travail — combien de datasets ai-je, et lesquels ont le plus d’elements ? » Etape 1 — L’assistant appelle get_workspace_stats pour obtenir la vue d’ensemble.
Etape 2 — L’assistant appelle list_datasets avec limit: 50 pour recuperer tous les datasets. Etape 3 — L’assistant trie les resultats par itemCount et presente un resume classe :
Vous avez 14 datasets. Les trois plus volumineux sont :
  1. Warehouse Cameras — 34 200 elements (image)
  2. Urban Driving Q1 — 12 450 elements (lidar)
  3. Parking Lot Footage — 8 900 elements (video)

Recette 2 : Export et telechargement

Demandez a votre assistant : « Exportez le projet Urban Driving Q1 et prevenez-moi quand c’est pret. » Etape 1 — L’assistant appelle list_projects pour trouver l’UID du projet correspondant a « Urban Driving Q1 ». Etape 2 — L’assistant appelle create_export avec l’UID du projet.
Etape 3 — L’assistant interroge get_export_status jusqu’a ce que le statut passe a completed.
Etape 4 — L’assistant fournit le lien de telechargement et la taille du fichier.
Votre export est pret (50 Mo). Telechargez-le ici : https://api.avala.ai/exports/.../download

Recette 3 : Audit qualite de tous les projets

Demandez a votre assistant : « Evaluez les objectifs de qualite de tous mes projets et signalez ceux qui echouent. » Etape 1 — L’assistant appelle list_projects pour recuperer tous les projets. Etape 2 — Pour chaque projet, l’assistant appelle evaluate_quality avec l’UID du projet. Etape 3 — L’assistant agrege les resultats et met en evidence les echecs :
5 projets sur 7 atteignent tous les objectifs de qualite. Deux necessitent votre attention :
  • Sidewalk Segmentation — Objectif « Label accuracy » a 88 % (seuil : 95 %)
  • Fleet Camera Review — Objectif « Consensus score » a 0,72 (seuil : 0,85)

Recette 4 : Surveillance des appareils de la flotte

Demandez a votre assistant : « Montrez-moi toutes les alertes de flotte non acquittees, regroupees par severite. » Etape 1 — L’assistant appelle fleet_list_alerts avec status: "open". Etape 2 — L’assistant regroupe et formate la reponse :
Critique (1)
  • Dock Camera 3 — « Appareil hors ligne depuis plus de 24 heures » (depuis le 18 mars)
Avertissement (2)
  • Forklift Sensor Unit 12 — « Temperature de l’appareil depassant le seuil (72C) » (depuis le 19 mars)
  • Rooftop LiDAR 1 — « Espace disque faible (< 5 %) » (depuis le 19 mars)
Etape 3 — Vous pouvez poursuivre : « Acquittez toutes les alertes de niveau avertissement. » L’assistant appelle fleet_acknowledge_alert pour chaque UID d’alerte de type avertissement.

Recette 5 : Triage des problemes d’annotation

Demandez a votre assistant : « Obtenez les metriques des problemes d’annotation du dataset urban-driving-q1 et montrez-moi la repartition. » Etape 1 — L’assistant appelle get_annotation_issue_metrics avec le proprietaire et le slug du dataset. Etape 2 — L’assistant presente un resume formate :
Urban Driving Q1 — Metriques des problemes Par statut : 12 ouverts, 5 en revue, 3 en re-etiquetage, 45 termines Par severite : 8 critiques, 57 moderes Par priorite : 2 les plus hauts, 6 hauts, 18 moyens, 25 bas, 14 les plus bas Temps moyen de cloture : 4,2 heures
Etape 3 — Vous poursuivez : « Listez les problemes critiques ouverts. » L’assistant appelle list_annotation_issues_by_dataset avec des filtres et affiche les resultats.

Exemples de prompts

Voici quelques prompts en langage naturel que vous pouvez utiliser avec tout client compatible MCP :
L’assistant IA appellera l’outil MCP Avala approprie, traitera la reponse et presentera les resultats dans un format lisible. Vous pouvez enchainer les requetes dans une meme conversation — par exemple, lister les datasets, en choisir un, puis consulter le statut d’un export.

Depannage

AVALA_API_KEY non definie

Le MCP server s’arrete immediatement avec le code d’erreur 1 si la variable d’environnement AVALA_API_KEY est manquante. Assurez-vous que la cle est definie dans le bloc env de votre configuration MCP ou exportee dans votre shell avant de lancer le serveur.

Les outils de mutation n’apparaissent pas

Si des outils comme create_export, create_agent ou fleet_register_device sont absents de la liste des outils, vous devez definir AVALA_MCP_ENABLE_MUTATIONS=true dans l’environnement du serveur. Ajoutez-le au bloc env de votre fichier de configuration MCP :

npx introuvable ou mauvaise version de Node.js

Le MCP server necessite Node.js 18 ou une version ulterieure. Si vous voyez npx: command not found ou des erreurs de syntaxe de module, verifiez votre version de Node.js :

MCP server en cache obsolete

Si vous avez recemment mis a jour le package @avala-ai/mcp-server mais constatez toujours un ancien comportement ou des outils manquants, npx utilise peut-etre une version en cache. Forcez une nouvelle installation :
Puis redemarrez votre client MCP.

Cle API invalide ou expiree

Si les appels d’outils retournent 401 Unauthorized, votre cle API est peut-etre invalide, expiree ou revoquee. Generez une nouvelle cle dans Mission Control sous Settings > Security et mettez a jour votre configuration MCP.
Le MCP server Avala est open source. Visitez le depot GitHub pour consulter le code source ou contribuer.