{((clientSetup && mcpClientSetupShowsTabs(clientSetup)) ||
selectedClient !== "mcp-url") && (
{clientSetup && mcpClientSetupShowsTabs(clientSetup) ? (
) : null}
{selectedClient !== "mcp-url" && (
{
setSelectedClient("mcp-url")
setSetupTab("manual")
if (
!manualApiKey &&
!createMcpApiKeyMutation.isPending
) {
createMcpApiKeyMutation.mutate()
}
}}
/>
)}
{clientSetup &&
mcpClientShowsOneClick(clientSetup, effectiveSetupTab) ? (
<>
{selectedClient === "cursor" && (
Alternatively, pick another client and use the install
command, or use Manual instructions for a JSON
snippet.
)}
{selectedClient === "mcp-url" && (
)}
{selectedClient !== "cursor" &&
selectedClient !== "mcp-url" && (
Optional: scope installs to a project. Then copy and
run the command in your terminal.
Requires Node/npx. OAuth runs when the CLI prompts
you.
)}
>
) : (
(() => {
const manual = getManualInstallEntry(selectedClient)
if (manual.kind === "chatgpt") {
return (
)
}
if (manual.kind === "claude-desktop-timeline") {
return (
copyManualSnippet(CLAUDE_DESKTOP_MCP_SNIPPET)
}
snippetCopied={isCopied}
variant="modal"
/>
)
}
if (manual.kind === "generic-remote") {
const remoteSnippet = buildMcpUrlRemoteJson(
manualApiKey || "your-api-key-here",
)
return (
Paste into your MCP config. We create an API key for
you when you open this tab; copy the block after it
appears.
{createMcpApiKeyMutation.isPending ? (
) : (
<>
{remoteSnippet}
Bearer token uses your supermemory API key.
>
)}
)
}
return (
{manual.paths}
Merge the snippet with your existing config. Restart
the client and sign in with OAuth when prompted.
{manual.snippet}
)
})()
)}