diff --git a/src/services/mcp/McpHub.ts b/src/services/mcp/McpHub.ts
index 0ac14b9..9a24b2c 100644
--- a/src/services/mcp/McpHub.ts
+++ b/src/services/mcp/McpHub.ts
@@ -147,20 +147,22 @@ export class McpHub {
},
})
- transport.onerror = (error) => {
+ transport.onerror = async (error) => {
console.error(`Transport error for "${name}":`, error)
const connection = this.connections.find((conn) => conn.server.name === name)
if (connection) {
connection.server.status = "disconnected"
connection.server.error = error.message
}
+ await this.notifyWebviewOfServerChanges()
}
- transport.onclose = () => {
+ transport.onclose = async () => {
const connection = this.connections.find((conn) => conn.server.name === name)
if (connection) {
connection.server.status = "disconnected"
}
+ await this.notifyWebviewOfServerChanges()
}
// If the config is invalid, show an error
@@ -180,7 +182,7 @@ export class McpHub {
return
}
- await client.connect(transport)
+ // valid schema
const connection: McpConnection = {
server: {
name,
@@ -191,6 +193,8 @@ export class McpHub {
transport,
}
this.connections.push(connection)
+
+ await client.connect(transport)
connection.server.status = "connected"
// // Set up notification handlers
@@ -335,9 +339,13 @@ export class McpHub {
connection.server.status = "connecting"
await this.notifyWebviewOfServerChanges()
await delay(500) // artificial delay to show user that server is restarting
- await this.deleteConnection(serverName)
- // Try to connect again using existing config
- await this.connectToServer(serverName, JSON.parse(config))
+ try {
+ await this.deleteConnection(serverName)
+ // Try to connect again using existing config
+ await this.connectToServer(serverName, JSON.parse(config))
+ } catch (error) {
+ console.error(`Failed to restart connection for ${serverName}:`, error)
+ }
}
await this.notifyWebviewOfServerChanges()
diff --git a/webview-ui/src/components/chat/ChatRow.tsx b/webview-ui/src/components/chat/ChatRow.tsx
index ee16804..005d7c9 100644
--- a/webview-ui/src/components/chat/ChatRow.tsx
+++ b/webview-ui/src/components/chat/ChatRow.tsx
@@ -141,7 +141,8 @@ export const ChatRowContent = ({
style={{ color: normalColor, marginBottom: "-1.5px" }}>
),
- Cline wants to use the {mcpServerUse.serverName} MCP server:
+ Cline wants to {mcpServerUse.type === "use_mcp_tool" ? "use a tool" : "access a resource"} on
+ the {mcpServerUse.serverName} MCP server:
,
]
case "completion_result":
diff --git a/webview-ui/src/components/mcp/McpView.tsx b/webview-ui/src/components/mcp/McpView.tsx
index fab84e3..cf3dddc 100644
--- a/webview-ui/src/components/mcp/McpView.tsx
+++ b/webview-ui/src/components/mcp/McpView.tsx
@@ -190,16 +190,19 @@ const ServerRow = ({ server }: { server: McpServer }) => {
{server.error ? (