From f570c140b29dc3116915bc62d9b086c09bfc59b2 Mon Sep 17 00:00:00 2001 From: Markus Graf Date: Sat, 25 Apr 2026 08:39:44 +0200 Subject: [PATCH] Added technical details about MCP server implementation --- content/blog/pi-carson-mcp-extension/index.de.md | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/content/blog/pi-carson-mcp-extension/index.de.md b/content/blog/pi-carson-mcp-extension/index.de.md index cd93d07..4e02d35 100644 --- a/content/blog/pi-carson-mcp-extension/index.de.md +++ b/content/blog/pi-carson-mcp-extension/index.de.md @@ -39,7 +39,8 @@ Es ist also nicht mehr nur ein Mensch, der mit einer KI chattet, sondern Pi ents ## Ein Blick unter die Haube -Für alle, die es technisch interessiert: Die Extension ist in TypeScript geschrieben. Beim Start einer Pi-Session (via `session_start` Event) baut Pi eine `StreamableHTTPClientTransport`-Verbindung auf. +### Die Extension (Pi-Seite) +Für alle, die es technisch interessiert: Die Extension ist in TypeScript geschrieben. Beim Start einer Pi-Session (via `session_start` Event) baut Pi eine `StreamableHTTPClientTransport`-Verbindung zu deiner NanoClaw-Instanz auf. ```typescript // Ein kleiner Auszug, wie Pi die Carson-Tools lädt: @@ -61,7 +62,17 @@ for (const tool of tools) { } ``` -Aus Sicherheitsgründen wird die Verbindung in der Regel über einen **SSH-Tunnel** abgesichert, da Carson auf einem entfernten Rechner läuft und ich das MCP-Protokoll nicht direkt dem Internet aussetzen möchte. +### Die Serverseite (NanoClaw-Seite) +Das Herzstück der Kommunikation liegt in der `mcp-server.ts` innerhalb der NanoClaw-Instanz. Dort wird ein `McpServer` gestartet, der als Brücke zwischen dem MCP-Protokoll und dem internen Nachrichtensystem von Carson fungiert. + +Das technisch Spannendste daran ist die `McpChannel`-Klasse: +- **Injektion:** Wenn Pi eine Anfrage stellt, injiziert der MCP-Server diese Nachricht als temporäre Nachricht in einen NanoClaw-Chatkanal. +- **Warten:** Ein `Promise` wartet mit einem Timeout darauf, dass Carson eine Antwort in diesen spezifischen Kanal schreibt. +- **Debounce:** Da Carson oft in mehreren Nachrichten antwortet, nutzt der MCP-Kanal ein "Debounce"-Verfahren, das erst nach einer kurzen Stille (wenn Carson fertig getippt hat) die gesammelten Text-Chunks zu einer Antwort zusammenfügt. + +So wird Carson quasi "remote-gesteuert" und kann für Pi wie ein natives Werkzeug reagieren, ohne dass er selbst bemerkt, dass die Anfrage aus einer ganz anderen Umgebung kommt. + +Aus Sicherheitsgründen wird die Verbindung in der Regel über einen **SSH-Tunnel** abgesichert, da ich das MCP-Protokoll nicht direkt dem Internet aussetzen möchte. ## Fazit: Agenten-Kollaboration ist die Zukunft