Sehr erfreut über das große Interesse an dieser Arbeit!
Um ein wenig mehr zu erklären, hier ein Schema einer Anordnung, die mit dem MCP-Protokoll funktioniert
Es gibt also den Host, der den MCP-Client enthält. Heute sind das oft bekannte Agenten wie Claude Desktop, ChatGPT… die diesen Client integrieren. Wie ich in dem oben genannten Demo-Video sagte, ist es der Agent in VSCode mit GitHub Copilot.
Seine Aufgabe wird es sein, einerseits mit dem LLM (oft Claude Sonnet oder GPT-4) zu kommunizieren, der für das Verständnis der Anfragen und die Analyse von Daten zuständig ist, und andererseits mit dem MCP-Server.
Der MCP-Server ist dafür zuständig, Funktionen zu deklarieren, die der MCP-Client aufrufen kann, um mit der Ressource zu interagieren (in unserem Fall ist die Ressource Gladys, aber es könnte auch eine Datenbank, Google Drive, Slack… jedes lokale oder entfernte Tool sein). In unserem Fall derzeit vier Funktionen:
device.get-state um Sensordaten zu erhalten
camera.get-image um Kamera-Bilder abzurufen
light.turn-(on|off) um das Licht in einem Raum einzuschalten/auszuschalten
scene.start um eine Szene zu starten
Jetzt, wenn wir uns etwas genauer ansehen, aber trotzdem einfach bleiben, die Funktionsweise des Host-Teils, wenn man zum Beispiel Claude Desktop verwendet, dann passiert Folgendes:
- Beim Start fragt Claude Desktop alle MCP-Server, mit denen er verbunden ist, nach den verfügbaren Funktionen, die jeder anbietet (in unserem Fall
device.get-state, camera.get-image…)
- Wenn der Benutzer Claude Desktop etwas fragt (z.B. « Gib mir die Temperatur im Wohnzimmer »), sendet er die Frage an das LLM und gibt im Kontext der Anfrage an, dass er Zugriff auf mehrere Funktionen hat und dass, wenn die Anfrage des Benutzers dies erfordert, ein Aufruf dieser Funktionen erfolgen kann
- Das LLM antwortet Claude Desktop, « Ich brauche, dass du
device.get-state mit dem Parameter Raum Wohnzimmer verwendest »
- Claude Desktop ruft die Funktion des MCP-Servers von Gladys
device.get-state(Wohnzimmer) auf und sendet die angeforderte Daten an das LLM
- Das LLM baut die Antwort mit diesen neuen Daten und sendet sie an Claude Desktop, der sie dir anzeigt
Man muss verstehen, dass hier nicht Gladys antwortet, Gladys gibt nur einen Zustand zurück und das LLM baut die Antwort. Ich weiß nicht, ob du Google Home, Homekit/Siri oder Amazon Alexa mit Gladys verwendest, aber ich denke, man kann einen Vergleich ziehen, um es besser zu verstehen. Wir haben einen Gladys-Dienst, der Geräte über ein Protokoll bereitstellt, und der Client Claude Desktop (den man mit der Google Home-App, Apple Home oder sogar Siri vergleichen könnte) stellt Anfragen an diesen Dienst, um Informationen zu erhalten. Der Vorteil gegenüber diesen proprietären Lösungen ist, dass MCP ein offenes Protokoll ist, das von jedermann implementiert werden kann (ob Client oder Server). Also um deine Frage zu beantworten:
Man kann sich sehr gut einen MCP-Client vorstellen, der mit einem STT-Modell (ob Cloud oder lokal) integriert ist und über MCP mit Gladys kommuniziert.
Um deine andere Frage zu beantworten:
Kurze Antwort Der MCP-Server ist bereits über den von mir entwickelten Dienst in Gladys integriert, die Verbindung, die du herstellen musst, ist zwischen dem MCP-Agenten/Client und dem MCP-Server (siehe Tutorial am Ende dieses Posts).
Die lange Antwort wird etwas technisch sein, aber um die Wahl, daraus einen Dienst zu machen, und um die Tutorials darunter zu verstehen, ist es interessant.
Für die Verbindung zwischen dem MCP-Client und dem MCP-Server gibt es zwei Kommunikationsmöglichkeiten:
- entweder über stdio (Standard-Eingabe/Ausgabe)
- oder über HTTP (über das Netzwerk)
stdio ist die ursprüngliche Kommunikationsmethode des MCP, der MCP-Client startet einen Unterprozess, der den Server ausführt und die Eingaben/Ausgaben des Prozesses abhört (um es stark zu vereinfachen, ist es so, als hätte er eine Tastatur zum Schreiben und würde die Terminal-Protokolle lesen, um zu kommunizieren). Es gibt mehr kompatible Agenten als mit HTTP, aber da der Server auf demselben Gerät wie der Agent laufen muss, bedeutet dies, dass ein neues Projekt parallel zu Gladys entwickelt und verwaltet werden muss.
HTTP ermöglicht es, den MCP-Client und den MCP-Server über das Netzwerk kommunizieren zu lassen, wenn sie nicht auf demselben Gerät sind. Dies ermöglicht es, den MCP-Server und die Ressource an einem Ort zu gruppieren. Die Integration des MCP-Servers in einen Gladys-Dienst hat mehrere Vorteile
- auf Code-Ebene erschien mir dies als die einfachste Lösung, um leicht auf alle Daten und Funktionen von Gladys zugreifen zu können
- auf Projektniveau vermeidet dies, ein zweites MCP-Server-Gladys-Projekt neben Gladys warten zu müssen
- wenn eines Tages MCP-Clients auf Telefonen (oder Lautsprechern, wie du es verlangst) erscheinen, ist es wahrscheinlich, dass dies über HTTP geschieht, da die Installation eines MCP-Servers auf solchen Geräten zweifellos komplizierter sein wird
- wenn der von Ihnen verwendete Agent nicht über HTTP mit MCP kompatibel ist, können Sie mcp-proxy verwenden, der eine Brücke zwischen stdio und HTTP herstellt (ich erkläre Ihnen unten, wie man es verwendet).
Für die Verbindungstutorials, hier einige Erklärungen für VSCode (direkt über HTTP), Claude Desktop und Perplexity (Verwendung von mcp-proxy, da Claude Desktop und Perplexity heute nur mit stdio kompatibel sind). Wenn Sie andere Agenten haben, können wir das gemeinsam ansehen.
VSCode mit GitHub Copilot
Sie starten den Copilot-Chat.
Unten wählen Sie Agent aus und klicken Sie auf das Zahnradsymbol
In der sich öffnenden Dropdown-Liste wählen Sie ganz unten « Add more Tools… »
« Add MCP Server »
« HTTP »
Schließlich geben Sie diese URL ein http://GLADYS_IP_ADDRESS/api/v1/service/mcp/proxy und ersetzen Sie GLADYS_IP_ADDRESS durch die IP-Adresse Ihres Gladys.
Wählen Sie einen Namen und los geht’s, Sie sollten in Ihrem Agent Copilot verwenden können
Für weitere Informationen: Add and manage MCP servers in VS Code
Claude Desktop und Perplexity unterstützen noch keine MCP-Server (sie haben die Unterstützung zwar angekündigt, aber noch nicht umgesetzt), daher ist es notwendig, mcp-proxy zu verwenden
Für die Installation ist alles hier angegeben GitHub - sparfenyuk/mcp-proxy: A bridge between Streamable HTTP and stdio MCP transports · GitHub
Claude Desktop
Sobald mcp-proxy installiert ist, starten Sie Claude Desktop
In Einstellungen → Entwickler → Lokale MCP klicken Sie auf « Config bearbeiten »
In einem Texteditor bearbeiten Sie die Datei claude_desktop_config.json, damit sie so aussieht
{
"mcpServers": {
"mcp-proxy": {
"command": "FULL_PATH/mcp-proxy",
"args": [
"http://GLADYS_IP_ADDRESS/api/v1/service/mcp/proxy",
"--transport",
"streamablehttp"
],
"env": {}
}
}
}
Um FULL_PATH zu finden, geben Sie in einem Terminal where mcp-proxy ein (auf macOS/Linux, für Windows geben Sie where.exe mcp-proxy ein) und ersetzen Sie FULL_PATH durch den erhaltenen Pfad.
Ersetzen Sie auch GLADYS_IP_ADDRESS durch die IP-Adresse Ihrer Gladys
Speichern Sie die Konfiguration und starten Sie Claude neu, wenn alles gut gegangen ist, sollten Sie auf die MCP-Funktionen im Chat zugreifen können
Perplexity
Sobald mcp-proxy installiert ist, starten Sie Perplexity
In Einstellungen → Connectors → Connector hinzufügen
Wählen Sie den Tab « Erweitert »
Geben Sie einen Namen « Gladys »
Ändern Sie die Konfiguration, damit sie so aussieht
{
"args" : [
"http://GLADYS_IP_ADDRESS/api/v1/service/mcp/proxy",
"--transport",
"streamablehttp"
],
"command" : "FULL_PATH/mcp-proxy",
"env" : {}
}
Um FULL_PATH zu finden, geben Sie in einem Terminal where mcp-proxy ein (auf macOS/Linux, für Windows geben Sie where.exe mcp-proxy ein) und ersetzen Sie FULL_PATH durch den erhaltenen Pfad.
Ersetzen Sie auch GLADYS_IP_ADDRESS durch die IP-Adresse Ihrer Gladys
Speichern Sie die Konfiguration und warten Sie, bis Perplexity alle Funktionen korrekt erkennt, wenn alles gut gegangen ist, sollten Sie auf die MCP-Funktionen im Chat zugreifen können.
Für weitere Informationen: https://www.perplexity.ai/help-center/en/articles/11502712-local-and-remote-mcps-for-perplexity
Ich habe versucht, so vollständig und klar wie möglich zu sein, ich hoffe, das hat deine Fragen beantwortet. Auch wenn das Protokoll bereits einige Monate alt ist, steht es noch am Anfang, es ist sehr vielversprechend, besonders wenn man sieht, wie viele KI-Riesen es implementieren. Wenn Ihnen also die Konfiguration der Verbindung kompliziert erscheint, zögern Sie nicht, um Hilfe zu bitten, und das wird helfen, die Tutorials anhand der Benutzerfeedback zu verbessern.