Skip to content

Commit 9e4e9ad

Browse files
committed
Fix: Map stdout to info level with frontend detection for proper console display
1 parent 6a92f55 commit 9e4e9ad

File tree

2 files changed

+31
-2
lines changed

2 files changed

+31
-2
lines changed

src/services/mcp/McpHub.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -619,10 +619,14 @@ export class McpHub {
619619
connection.server.errorHistory = []
620620
}
621621

622+
// Map "stdout" to "info" to avoid TypeScript errors
623+
// while still allowing them to be displayed differently in the UI
624+
const mappedLevel = level === "stdout" ? "info" : level
625+
622626
connection.server.errorHistory.push({
623627
message: truncatedError,
624628
timestamp: Date.now(),
625-
level: level as "error" | "warn" | "info" | "stdout",
629+
level: mappedLevel,
626630
})
627631

628632
// Keep only the last 100 errors

webview-ui/src/components/mcp/McpErrorRow.tsx

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,40 @@ type McpErrorRowProps = {
99

1010
export const McpErrorRow = ({ error }: McpErrorRowProps) => {
1111
const color = useMemo(() => {
12+
// Add debugging to log what level is coming in
13+
console.log(`McpErrorRow level: ${error.level} for message: ${error.message.substring(0, 20)}...`)
14+
15+
// Check if this is a stdout message (mapped to info in backend)
16+
// Common patterns for stdout messages
17+
const isStdoutMessage =
18+
error.level === "info" &&
19+
(/Server .* stdout:/.test(error.message) ||
20+
/MCP Server .* running on stdio/.test(error.message) ||
21+
/INFO/i.test(error.message) ||
22+
/Server running/i.test(error.message) ||
23+
/Documentation MCP Server/i.test(error.message) ||
24+
/running on stdio/i.test(error.message))
25+
26+
if (isStdoutMessage) {
27+
// Use regular foreground color for stdout messages
28+
return "var(--vscode-foreground)"
29+
}
30+
1231
switch (error.level) {
1332
case "error":
1433
return "var(--vscode-testing-iconFailed)"
1534
case "warn":
1635
return "var(--vscode-charts-yellow)"
1736
case "info":
1837
return "var(--vscode-testing-iconPassed)"
38+
case "stdout": // Keep for backward compatibility
39+
return "var(--vscode-foreground)"
40+
default:
41+
// For any unexpected value, default to error color
42+
console.warn(`Unknown error level: ${error.level}`)
43+
return "var(--vscode-testing-iconFailed)"
1944
}
20-
}, [error.level])
45+
}, [error.level, error.message])
2146

2247
return (
2348
<div className="text-sm bg-vscode-textCodeBlock-background border-l-2 p-2" style={{ borderColor: color }}>

0 commit comments

Comments
 (0)