From db74f608f1a81853de92acda124238c93ff18c2d Mon Sep 17 00:00:00 2001 From: crschnick Date: Sun, 8 Mar 2026 17:04:18 +0000 Subject: [PATCH] Fixes for claude code mcp --- .../mcp/HttpStreamableServerTransportProvider.java | 11 +++++++---- app/src/main/java/io/xpipe/app/prefs/McpCategory.java | 8 ++++++-- lang/strings/fixed_en.properties | 2 +- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/io/xpipe/app/beacon/mcp/HttpStreamableServerTransportProvider.java b/app/src/main/java/io/xpipe/app/beacon/mcp/HttpStreamableServerTransportProvider.java index 039122c9e..7ecf28869 100644 --- a/app/src/main/java/io/xpipe/app/beacon/mcp/HttpStreamableServerTransportProvider.java +++ b/app/src/main/java/io/xpipe/app/beacon/mcp/HttpStreamableServerTransportProvider.java @@ -236,7 +236,7 @@ public class HttpStreamableServerTransportProvider implements McpStreamableServe os.write(b); } - TrackEvent.error("MCP server error: " + message); + TrackEvent.error("MCP server error " + code + ": " + message); } public void doPost(HttpExchange exchange) throws IOException { @@ -482,9 +482,12 @@ public class HttpStreamableServerTransportProvider implements McpStreamableServe writer, MESSAGE_EVENT_TYPE, jsonText, messageId != null ? messageId : this.sessionId); logger.debug("Message sent to session {} with ID {}", this.sessionId, messageId); } catch (Exception e) { - logger.error("Failed to send message to session {}: {}", this.sessionId, e.getMessage()); - HttpStreamableServerTransportProvider.this.sessions.remove(this.sessionId); - exchange.close(); + var clientDisconnected = "Client disconnected".equals(e.getMessage()); + if (!clientDisconnected) { + logger.error("Failed to send message to session {}: {}", this.sessionId, e.getMessage()); + HttpStreamableServerTransportProvider.this.sessions.remove(this.sessionId); + exchange.close(); + } } finally { lock.unlock(); } diff --git a/app/src/main/java/io/xpipe/app/prefs/McpCategory.java b/app/src/main/java/io/xpipe/app/prefs/McpCategory.java index d59ce98ad..2f18f35df 100644 --- a/app/src/main/java/io/xpipe/app/prefs/McpCategory.java +++ b/app/src/main/java/io/xpipe/app/prefs/McpCategory.java @@ -88,6 +88,10 @@ public class McpCategory extends AppPrefsCategory { } """); + var claudeCodeTemplate = createMcpConfig(""" + $ claude mcp add %s --transport http "http://localhost:%s/mcp" --header "Authorization: Bearer %s" + """); + var tabComp = RegionBuilder.of(() -> { var vsCode = new TextArea(); vsCode.setEditable(false); @@ -118,10 +122,10 @@ public class McpCategory extends AppPrefsCategory { var claude = new TextArea(); claude.setEditable(false); - claude.textProperty().bind(vsCodeTemplate); + claude.textProperty().bind(claudeCodeTemplate); claude.setPrefRowCount(12); var claudeTab = new Tab(); - claudeTab.textProperty().bind(AppI18n.observable("claude")); + claudeTab.textProperty().bind(AppI18n.observable("claudeCode")); claudeTab.setContent(claude); claudeTab.setClosable(false); diff --git a/lang/strings/fixed_en.properties b/lang/strings/fixed_en.properties index 72879831d..2869b515a 100644 --- a/lang/strings/fixed_en.properties +++ b/lang/strings/fixed_en.properties @@ -12,7 +12,7 @@ elementaryTerminal=Elementary Terminal macosTerminal=Terminal.app iterm2=iTerm2 warp=Warp -claude=Claude +claudeCode=Claude Code wave=Wave tabby=Tabby alacritty=Alacritty