Added technical details about MCP server implementation

This commit is contained in:
2026-04-25 08:39:44 +02:00
parent d7d0438ee7
commit f570c140b2
@@ -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