|
|
@@ -13,6 +13,7 @@ import { McpServer } from "../../../../src/shared/mcp"
|
|
|
import McpToolRow from "./McpToolRow"
|
|
|
import McpResourceRow from "./McpResourceRow"
|
|
|
import McpEnabledToggle from "./McpEnabledToggle"
|
|
|
+import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter } from "../ui/dialog"
|
|
|
|
|
|
type McpViewProps = {
|
|
|
onDone: () => void
|
|
|
@@ -129,6 +130,7 @@ const McpView = ({ onDone }: McpViewProps) => {
|
|
|
// Server Row Component
|
|
|
const ServerRow = ({ server, alwaysAllowMcp }: { server: McpServer; alwaysAllowMcp?: boolean }) => {
|
|
|
const [isExpanded, setIsExpanded] = useState(false)
|
|
|
+ const [showDeleteConfirm, setShowDeleteConfirm] = useState(false)
|
|
|
const [timeoutValue, setTimeoutValue] = useState(() => {
|
|
|
const configTimeout = JSON.parse(server.config)?.timeout
|
|
|
return configTimeout ?? 60 // Default 1 minute (60 seconds)
|
|
|
@@ -179,6 +181,14 @@ const ServerRow = ({ server, alwaysAllowMcp }: { server: McpServer; alwaysAllowM
|
|
|
})
|
|
|
}
|
|
|
|
|
|
+ const handleDelete = () => {
|
|
|
+ vscode.postMessage({
|
|
|
+ type: "deleteMcpServer",
|
|
|
+ serverName: server.name,
|
|
|
+ })
|
|
|
+ setShowDeleteConfirm(false)
|
|
|
+ }
|
|
|
+
|
|
|
return (
|
|
|
<div style={{ marginBottom: "10px" }}>
|
|
|
<div
|
|
|
@@ -202,6 +212,12 @@ const ServerRow = ({ server, alwaysAllowMcp }: { server: McpServer; alwaysAllowM
|
|
|
<div
|
|
|
style={{ display: "flex", alignItems: "center", marginRight: "8px" }}
|
|
|
onClick={(e) => e.stopPropagation()}>
|
|
|
+ <VSCodeButton
|
|
|
+ appearance="icon"
|
|
|
+ onClick={() => setShowDeleteConfirm(true)}
|
|
|
+ style={{ marginRight: "8px" }}>
|
|
|
+ <span className="codicon codicon-trash" style={{ fontSize: "14px" }}></span>
|
|
|
+ </VSCodeButton>
|
|
|
<VSCodeButton
|
|
|
appearance="icon"
|
|
|
onClick={handleRestart}
|
|
|
@@ -393,6 +409,27 @@ const ServerRow = ({ server, alwaysAllowMcp }: { server: McpServer; alwaysAllowM
|
|
|
</div>
|
|
|
)
|
|
|
)}
|
|
|
+
|
|
|
+ {/* Delete Confirmation Dialog */}
|
|
|
+ <Dialog open={showDeleteConfirm} onOpenChange={setShowDeleteConfirm}>
|
|
|
+ <DialogContent>
|
|
|
+ <DialogHeader>
|
|
|
+ <DialogTitle>Delete MCP Server</DialogTitle>
|
|
|
+ <DialogDescription>
|
|
|
+ Are you sure you want to delete the MCP server "{server.name}"? This action cannot be
|
|
|
+ undone.
|
|
|
+ </DialogDescription>
|
|
|
+ </DialogHeader>
|
|
|
+ <DialogFooter>
|
|
|
+ <VSCodeButton appearance="secondary" onClick={() => setShowDeleteConfirm(false)}>
|
|
|
+ Cancel
|
|
|
+ </VSCodeButton>
|
|
|
+ <VSCodeButton appearance="primary" onClick={handleDelete}>
|
|
|
+ Delete
|
|
|
+ </VSCodeButton>
|
|
|
+ </DialogFooter>
|
|
|
+ </DialogContent>
|
|
|
+ </Dialog>
|
|
|
</div>
|
|
|
)
|
|
|
}
|