Added technical details about MCP server implementation
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user