From f1eb9111bf01b4eac0e754aa55c584faf2cf51ea Mon Sep 17 00:00:00 2001 From: Markus Graf Date: Sun, 26 Apr 2026 11:15:45 +0200 Subject: [PATCH] Document MCP integration for both Pi and Claude Code --- .../blog/pi-carson-mcp-extension/index.de.md | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/content/blog/pi-carson-mcp-extension/index.de.md b/content/blog/pi-carson-mcp-extension/index.de.md index 846e56b..92e9c51 100644 --- a/content/blog/pi-carson-mcp-extension/index.de.md +++ b/content/blog/pi-carson-mcp-extension/index.de.md @@ -40,19 +40,15 @@ Es ist also nicht mehr nur ein Mensch, der mit einer KI chattet, sondern Pi ents ## Ein Blick unter die Haube ### 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. +Pi hat von Haus aus keine native MCP-Unterstützung für Tools. Deshalb habe ich die Extension `nanoclaw-mcp-ext` entwickelt. Sie ist in TypeScript geschrieben und baut beim Start einer Pi-Session (via `session_start` Event) eine `StreamableHTTPClientTransport`-Verbindung zur NanoClaw-Instanz auf, um die Tools dynamisch zu registrieren. ```typescript -// Ein kleiner Auszug, wie Pi die Carson-Tools lädt: -const client = new Client( - { name: "pi-mcp-client", version: "1.0.0" }, - { capabilities: { tools: {} } } -); - +// Ein kleiner Auszug, wie Pi die Tools meines KI-Agenten lädt: +const client = new Client({ name: "pi-mcp-client", version: "1.0.0" }, { capabilities: { tools: {} } }); await client.connect(transport); const { tools } = await client.listTools(); -// Alle Tools, die Carson anbietet, werden für Pi verfügbar gemacht +// Alle Tools werden für Pi verfügbar gemacht for (const tool of tools) { pi.registerTool({ name: tool.name, @@ -62,6 +58,20 @@ for (const tool of tools) { } ``` +### Integration in Claude Code +Im Gegensatz zu Pi unterstützt `claude` das Model Context Protocol bereits nativ. Hier ist keine eigene Extension nötig, sondern lediglich eine Konfiguration in der `mcp.json`. Ich habe dort einfach den Endpunkt meines KI-Agenten hinterlegt, und schon greift auch `claude` direkt darauf zu: + +```json +{ + "mcpServers": { + "nanoclaw": { + "command": "bash", + "args": ["-c", "curl -s -H \"Authorization: Bearer $NANOCLAW_MCP_TOKEN\" http://localhost:3002/mcp"] + } + } +} +``` + ### 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 meines KI-Agenten fungiert.