Agent IA, Server MCP

Für einige Clients (z. B. mobile oder den Sprachclient, den du oben gezeigt hast) glaube ich, dass eine über das Internet zugängliche Version notwendig ist.

Danke für die Information, ich werde versuchen, das auch zu implementieren. Es wäre wirklich cool, lokal darauf zugreifen zu können, besonders für diejenigen, die mit Gladys anfangen.

Wow! Pierre-Gilles, du bist so schnell, danke! Ich werde es auch integrieren.

Ich habe gerade die lokale Authentifizierung hochgeschoben, das Bild wird gerade gebaut. Um auf das MCP zuzugreifen, müssen Sie jetzt einen API-Schlüssel über die Integrationsschnittstelle generieren und Ihren MCP-Client so konfigurieren, dass er einen Header Authorization mit dem generierten Schlüssel sendet.

Zum Beispiel, um es über Github Copilot in VS Code zu verwenden, hier ist die Konfiguration

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

Eine neue Version des Bildes ist verfügbar. Diesmal wird der Zugriff auf den Server über Gladys Plus hinzugefügt. Um darauf zuzugreifen, müssen Sie einen API-Schlüssel von Ihrem Gladys Plus-Konto generieren https://gladysassistant.com/fr/docs/plus/open-api/#g%C3%A9n%C3%A9rer-une-cl%C3%A9-dapi

Anschließend geben Sie diese URL in Ihren MCP-Client ein: https://api.gladysgateway.com/v1/api/mcp/<OPEN_API_KEY>, wobei Sie <OPEN_API_KEY> durch den gerade generierten Schlüssel ersetzen.

Zum Beispiel in Le Chat de Mistral, gehen Sie zu Intelligence → Connecteurs

Klicken Sie auf Ajouter un connecteur

Im Tab Connecteur MCP personnalisé füllen Sie das Formular aus

Jetzt können Sie mit den Daten von Gladys in Le Chat interagieren

Hallo @bertrandda :slight_smile:

Danke für das PR, ich teste gerade!

Bei Mistral läuft es super :ok_hand:

Weißt du, wie oft die Ressourcenliste auf der Client-Seite aktualisiert wird?

Ich habe einen Stecker für den Test erstellt, aber der Stecker scheint nicht gefunden zu werden:

Zweite Frage, welche Sensortypen werden unterstützt?

Die Dokumentation erwähnt:

:thermometer: Gerätezustände abrufen (Temperatur, Luftfeuchtigkeit, Öffnung, Lampe…)

Ich weiß nicht, was in den „…“ enthalten ist :smiley:

Zum Beispiel, sollte das funktionieren:

Tatsächlich passiert das vielleicht nicht sofort. Es gibt zwei Dinge zu beachten. Erstens: Auf Gladys-Seite wird das Schema beim Start des Dienstes generiert. Wir könnten einen „Neustart“-Button hinzufügen, wie wir es für HomeKit gemacht haben, um das Schema erneut zu generieren, falls der Benutzer gerade ein neues Gerät hinzugefügt hat. Für die Client-Seite hängt das von der Implementierung ab. Normalerweise habe ich festgestellt, dass der Client das Schema beim Start überprüft und wenn du die Konfiguration des MCP in deinem Client änderst und speicherst.

Normalerweise denke ich, dass ich alle Sensortypen eingebunden habe, aber vielleicht fehlen noch einige.

Ich werde das präzisieren. Es sind alle Sensoren plus die steuerbaren Geräte, die kompatibel sind (heute Lampen, Schalter).

Könntest du mir bitte die Kategorie und den Feature-Typ nennen, der mit dieser Funktion verbunden ist? Ich werde das überprüfen.

Ja, sogar automatisch!

category: level-sensor
type: liquid-depth

Es fehlten einige Sensortypen, ich habe unter anderem die Füllstands-, Licht- und Regensensoren hinzugefügt, falls du es nochmal versuchen möchtest.

Seit kurzem lerne ich auf YouTube, wie man mit N8N einen KI-Agenten erstellt. Wenn ich den MCP richtig verstanden habe, würde mir dieser Server ermöglichen, Gladys mit meinem KI-Agenten zu verbinden und mit ihm zu sprechen, um Szenen zu starten, Sensorinformationen abzurufen und meine Steckdosen und Lichter zu steuern, ohne Google Home oder Alexa zu nutzen, die sehr eingeschränkt sind?

Ja, genau das ist es, jedes Agent, wenn er MCP-kompatibel ist (das ist bei n8n der Fall), kann sich damit verbinden.

Ich habe gerade den PR aktualisiert, um das Schema automatisch neu zu laden, falls ein neues Gerät erstellt wird.

Danke @bertrandda, läuft perfekt :heart_eyes:

Ich möchte klarstellen, dass es auf „Le Chat“ mobil auf iOS perfekt funktioniert:

Sehr sehr gute Arbeit!!

Ich habe dir ein paar Kommentare zur PR hinterlassen:

Aber ansonsten denke ich, dass wir das schnell in PROD veröffentlichen können!

Kannst du auch einen Listener für die Namensänderung eines Geräts einrichten? :slight_smile:
Ich hatte gerade diesen Fall!

Ich habe die geforderten Änderungen eingereicht. Zur Info habe ich auch ein kleines Update durchgeführt, um das vom Benutzer angeforderte Gerät zu finden. Falls der exakte Name nicht existiert, wird eine Überprüfung ähnlicher Namen mit dem Levenshtein-Abstand durchgeführt. In den meisten Fällen sollte dies nicht notwendig sein, da das gesamte Schema auf Aufzählungen basiert, aber einige MCP-Kunden scheinen diese nicht zu berücksichtigen. Nach einem kleinen Test mit 11ai, den du oben erwähnt hast, scheint er die Aufzählungen nicht korrekt zu verarbeiten, und diese kleinen Änderungen, obwohl nicht perfekt, sollten ein wenig helfen (eine Verbesserung auf Seiten von 11ai wäre viel effektiver).

Toll!

Ich weiß nicht, ob du meine Antwort auf deinen Kommentar gesehen hast?

@bertrandda ich habe deinen PR überprüft, ich habe nur einen kleinen Hinweis zu einer Codezeile, die, glaube ich, aus der alten Implementierung stammt:

Ansonsten ist es sehr gut, ich habe das Update des Namens eines Geräts getestet und es funktioniert super gut :slight_smile: Bravo!

Ja, kleine Nachlässigkeit beim letzten Fix, das ist jetzt erledigt

Danke!

Ich habe einen kleinen Bug beim Löschen des API-Schlüssels bemerkt:

Es funktioniert nicht, wenn der Schlüssel gerade erstellt wurde.

Gut gesehen, das ist erledigt!

Super, das passt für mich!

Es ist gemerged und wird in der nächsten Version von Gladys veröffentlicht :white_check_mark:

Gute Arbeit :clap:

Hallo,

Ich habe gerade mein Gladys aktualisiert, und der Dienst startet in meiner Produktionsumgebung mit einem Fehler. Offensichtlich liegt das an einem Gerät, das keine Raumzuordnung hat (vermute ich).

compose-gladys-1      | 2025-11-03T16:18:35+0100 <info> index.js:27 (Object.start) MCP-Dienst wird gestartet
compose-gladys-1      | 2025-11-03T16:18:35+0100 <warn> service.start.js:44 (Service.start) Dienst mcp kann nicht gestartet werden TypeError: Eigenschaft 'selector' von null kann nicht gelesen werden
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)

Ich kann das betreffende Gerät nicht finden, ich werde mal in der Datenbank nachschauen :slight_smile:

Edit:

Es ist das Gerät, das mit dem Enedis-Dienst verbunden ist, das Probleme macht. Ich werde es vorerst löschen, ich nutze es nicht :wink:

@bertrandda Ich habe das gleiche Problem wie @JeuFore auf meiner Instanz:

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)