{Object.entries(clients)
- .slice(0, showAllTools ? undefined : isMobile ? 4 : 6)
+ .slice(0, 6)
.map(([key, clientName]) => (
-
+ setSelectedClient(key as keyof typeof clients)
+ }
+ type="button"
>
-
-
{
- const target = e.target as HTMLImageElement;
- target.style.display = "none";
- const parent = target.parentElement;
- if (
- parent &&
- !parent.querySelector(".fallback-text")
- ) {
- const fallback = document.createElement("span");
- fallback.className =
- "fallback-text text-xs font-bold text-muted-foreground";
- fallback.textContent = clientName
- .substring(0, 2)
- .toUpperCase();
- parent.appendChild(fallback);
- }
- }}
- />
+
+
+ {
+ const target = e.target as HTMLImageElement;
+ target.style.display = "none";
+ const parent = target.parentElement;
+ if (
+ parent &&
+ !parent.querySelector(".fallback-text")
+ ) {
+ const fallback = document.createElement("span");
+ fallback.className =
+ "fallback-text text-sm font-bold text-white/40";
+ fallback.textContent = clientName
+ .substring(0, 2)
+ .toUpperCase();
+ parent.appendChild(fallback);
+ }
+ }}
+ src={`/mcp-supported-tools/${key === "claude-code" ? "claude" : key}.png`}
+ width={20}
+ />
+
+
+ {clientName}
+
- {clientName}
-
+
))}
- {Object.entries(clients).length > 6 && (
-
-
-
- )}
-
Quick Installation
-
-
+ {/* Step 2: Project Selection */}
+ {selectedClient && (
+
+
+
+ 2
+
+
+ Select Target Project (Optional)
+
+
-
+
+
+
+
+ )}
+
+ {/* Step 3: Command Line */}
+ {selectedClient && (
+
+
+
+ 3
+
+
Installation Command
+
+
+
-
+
+
+ Copy and run this command in your terminal to install the MCP
+ server
+
+
+ )}
+
+ {/* Blurred Command Placeholder */}
+ {!selectedClient && (
+
+
+
+ 3
+
+
Installation Command
+
+
+
+
+
+ Select a client above to see the installation command
+
+
+ )}
+
+
+
+
+
+ Use this URL to configure supermemory in your AI assistant
+
+
+
+
@@ -217,22 +385,120 @@ export function ConnectAIModal({ children }: ConnectAIModalProps) {
-
+
+
+
+
+
+
+ {/* Migration Dialog */}
+ {isMigrateDialogOpen && (
+
+ )}
);
}
diff --git a/apps/web/components/menu.tsx b/apps/web/components/menu.tsx
index f59617c0..6eb81128 100644
--- a/apps/web/components/menu.tsx
+++ b/apps/web/components/menu.tsx
@@ -6,6 +6,7 @@ import {
fetchMemoriesFeature,
} from "@repo/lib/queries";
import { Button } from "@repo/ui/components/button";
+import { ConnectAIModal } from "./connect-ai-modal";
import { HeadingH2Bold } from "@repo/ui/text/heading/heading-h2-bold";
import { GlassMenuEffect } from "@ui/other/glass-effect";
import { useCustomer } from "autumn-js/react";
@@ -20,7 +21,6 @@ import { ProjectSelector } from "./project-selector";
import { useTour } from "./tour";
import { AddMemoryExpandedView, AddMemoryView } from "./views/add-memory";
import { IntegrationsView } from "./views/integrations";
-import { MCPView } from "./views/mcp";
import { ProfileView } from "./views/profile";
const MCPIcon = ({ className }: { className?: string }) => {
@@ -47,6 +47,7 @@ function Menu({ id }: { id?: string }) {
const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false);
const [isCollapsing, setIsCollapsing] = useState(false);
const [showAddMemoryView, setShowAddMemoryView] = useState(false);
+ const [showConnectAIModal, setShowConnectAIModal] = useState(false);
const isMobile = useIsMobile();
const { activePanel, setActivePanel } = useMobilePanel();
const { setMenuExpanded } = useTour();
@@ -125,6 +126,11 @@ function Menu({ id }: { id?: string }) {
if (isMobile) {
setActivePanel("chat");
}
+ } else if (key === "mcp") {
+ // Open ConnectAIModal directly for MCP
+ setIsMobileMenuOpen(false);
+ setExpandedView(null);
+ setShowConnectAIModal(true);
} else {
if (expandedView === key) {
setIsCollapsing(true);
@@ -392,7 +398,6 @@ function Menu({ id }: { id?: string }) {
ease: [0.4, 0, 0.2, 1],
}}
>
- {expandedView === "mcp" &&
}
{expandedView === "profile" &&
}
{expandedView === "integrations" && (
@@ -608,7 +613,6 @@ function Menu({ id }: { id?: string }) {
{expandedView === "addUrl" && (
)}
- {expandedView === "mcp" &&
}
{expandedView === "profile" &&
}
{expandedView === "integrations" && (
@@ -631,6 +635,13 @@ function Menu({ id }: { id?: string }) {
onClose={() => setShowAddMemoryView(false)}
/>
)}
+
+
+
+
>
);
}