Agent IA, serveur MCP

En effet pour certains clients MCP (mobile, ou comme le client vocal que tu as montré plus haut) je crois qu’une version accessible via internet est nécessaire.

Merci pour l’information, je vais essayer de l’implémenter aussi, ça peut être vraiment cool d’y avoir accès en local pour ceux qui commencent dans Gladys.

Ouah ! super rapide le Pierre-Gilles, merci ! je vais l’intégré aussi.

2 « J'aime »

Je viens de pousser l’authentification local, l’image est en cours de build. Pour accéder au MCP il faut maintenant générer une clé API depuis l’interface de l’intégration puis configurer votre client MCP pour envoyer un header Authorization avec pour valeur la clé générée.

Par exemple pour l’utiliser via Github Copilot dans VS Code voilà la configuration

{
  "servers": {
    "gladys": {
      "url": "http://<gladyslocalip>:1443/api/v1/service/mcp/proxy",
      "type": "http",
      "headers": {
        "Authorization": "<clé-api>"
      }
    }
  },
  "inputs": []
}

1 « J'aime »

Une nouvelle version de l’image est disponible. Cette fois ci on ajoute l’accès au serveur via Gladys Plus. Pour y accéder il vous faut générer une clé api depuis votre compte Gladys Plus https://gladysassistant.com/fr/docs/plus/open-api/#g%C3%A9n%C3%A9rer-une-cl%C3%A9-dapi

Ensuite vous entrez cette url dans votre client MCP https://api.gladysgateway.com/v1/api/mcp/<OPEN_API_KEY> en remplaçant <OPEN_API_KEY> par la clé tout juste générée.

Par exemple sur Le Chat de Mistral, allez dans IntelligenceConnecteurs

Cliquez sur Ajouter un connecteur

Dans l’onglet Connecteur MCP personnalisé complétez le formulaire

Vous pouvez maintenant interagir avec les données de Gladys dans Le Chat

6 « J'aime »

Salut @bertrandda :slight_smile:

Merci pour la PR, je suis entrain de tester !

Côté Mistral, ça marche nickel :ok_hand:

Est-ce que tu sais à quelle fréquence est rafraichi la liste de ressources côté client ?

J’ai créé une prise pour le test, mais la prise ne semble pas être trouvée :

Deuxième question, quels types de capteurs sont gérés ?

La documentation mentionne:

:thermometer: Récupérer les états d’appareils (température, humidité, ouverture, lampe…)

Je ne sais pas ce qui est inclue dans les “…” :smiley:

Par exemple, est-ce que c’est censé fonctionner :

En effet ça n’arrive peut être pas immédiatement, il y a 2 choses à prendre en compte. La première c’est que côté Gladys le schéma est généré au démarrage du service, on pourra ajouter un bouton “Relancer” comme on a fait pour HomeKit pour générer à nouveau le schéma si l’utilisateur vient d’ajouter un nouvel appareil. Pour le côté client, ça dépend de l’implémentation, en général ce que j’ai remarqué, c’est que client vérifie le schéma à son démarrage + si tu modifies la configuration du du MCP dans ton client et que tu sauvegardes.

Normalement je pense avoir mis tous les types de capteurs mais il en manque peut être quelques un.

Je vais préciser ça, c’est tous les capteurs + les appareils contrôlable compatible (aujourd’hui lampe, commutateur).

Tu pourrais me donner la catégorie et le type de feature qui est associée à cette fonctionnalité s’il te plait ? je vais vérifier

Yes, voir même automatiquement !

category: level-sensor
type: liquid-depth

Il manquait quelques types de capteurs, j’ai ajouté entre autre les capteurs de niveau, de lumière, de pluie si tu veux réessayer

Depuis peu j’apprends sur YouTube comment créer un agent IA avec N8N. Si j’ai bien compris le fonctionnement du MCP, ce serveur me permettrais de connecter Gladys à mon agent IA et discuter avec lui pour lancer des scènes, récupérer des info de capteurs et commander mes prises et lumière sans passer par google home ou Alexa qui sont très limité?

Oui c’est bien cela, tout agent, s’il est compatible MCP (c’est le cas pour n8n) pourra s’y connecter.

Je viens de mettre à jour la PR pour recharger automatiquement le schéma si jamais on créé un nouvel appareil

4 « J'aime »

Merci @bertrandda, ça marche nickel :heart_eyes:

Je précise que ça marche parfaitement sur « Le Chat » mobile sur iOS :

Très très beau boulot !!

Je t’ai mis quelques commentaires sur la PR :

Mais sinon je penses qu’on peut publier ça vite en PROD !

4 « J'aime »

Est-ce que tu peux mettre un listener sur le changement de nom d’un appareil aussi ? :slight_smile:
Je viens d’avoir le cas !

J’ai poussé les changements demandés. Pour info j’ai également fait une petite mise à jour pour trouver le bon appareil demandé par l’utilisateur, si le nom exacte n’existe pas on fait une vérification de noms proches avec la distance de Levenshtein. Dans la plupart des cas ça ne devrait pas être nécessaire puisque l’ensemble du schéma est basé sur des énumérations, mais certains clients MCP ne semblent pas les prendre en compte. Après un petit test avec 11ai que tu présentais plus haut, il ne semble pas gérer correctement les énums et ces petits changements bien que pas parfait devraient aider un petit peu (une amélioration côté 11ai serait bien plus efficace)

1 « J'aime »

Top !

Je ne sais pas si tu as vu ma réponse à ton commentaire ?

@bertrandda j’ai regardé ta PR, j’ai juste une toute petite remarque sur une ligne de code qui date de l’ancienne implémentation je pense :

Sinon c’est très bien, j’ai testé l’update du nom d’un appareil et ça marche très bien :slight_smile: Bravo !

En effet petit oubli lors du dernier fix, c’est réglé maintenant

1 « J'aime »

Merci !

J’ai remarqué un petit bug de suppression de clé d’API:

ça ne marche pas quand la clé vient d’être crée

Bien vu, c’est réglé !

1 « J'aime »

Génial, c’est bon pour moi !

C’est mergé et ça partira dans la prochaine version de Gladys :white_check_mark:

Beau boulot :clap:

6 « J'aime »

Bonjour,

Je viens de mettre à jour mon Gladys, et le service subit une erreur de démarrage sur mon environnement de prod. Apparemment due à un device qui n’aurait pas de room (je suppose).

compose-gladys-1      | 2025-11-03T16:18:35+0100 <info> index.js:27 (Object.start) Starting MCP service
compose-gladys-1      | 2025-11-03T16:18:35+0100 <warn> service.start.js:44 (Service.start) Unable to start service mcp TypeError: Cannot read properties of null (reading 'selector')
compose-gladys-1      |     at /src/server/services/mcp/lib/buildSchemas.js:41:28
compose-gladys-1      |     at Array.forEach (<anonymous>)
compose-gladys-1      |     at MCPHandler.getAllResources (/src/server/services/mcp/lib/buildSchemas.js:28:17)
compose-gladys-1      |     at MCPHandler.createServer (/src/server/services/mcp/lib/createServer.js:26:4)
compose-gladys-1      |     at Object.start (/src/server/services/mcp/index.js:29:5)
compose-gladys-1      |     at Service.start (/src/server/lib/service/service.start.js:33:7)
compose-gladys-1      |     at start (/src/server/api/controllers/service.controller.js:22:21)

Je n’arrive pourtant pas à retrouver le device en question, je vais regarder dans la DB si je trouve :slight_smile:

Edit:

C’est le device lié au service Enedis qui pose problème, je vais le supprimer pour l’instant je ne m’en sers pas :wink:

@bertrandda J’ai le même souci que @JeuFore sur mon instance également :

2025-11-03T15:04:03+0100 <warn> service.start.js:44 (Service.start) Unable to start service mcp TypeError: Cannot read properties of null (reading 'selector')
    at /src/server/services/mcp/lib/buildSchemas.js:41:28
    at Array.forEach (<anonymous>)
    at MCPHandler.getAllResources (/src/server/services/mcp/lib/buildSchemas.js:28:17)
    at MCPHandler.createServer (/src/server/services/mcp/lib/createServer.js:26:4)
    at Object.start (/src/server/services/mcp/index.js:29:5)
    at Service.start (/src/server/lib/service/service.start.js:33:7)