From 925be7c6c5e2b69ecb4ec29c96fe9503a55b2f84 Mon Sep 17 00:00:00 2001 From: Ishaan Gupta Date: Tue, 16 Jun 2026 12:10:36 +0530 Subject: [PATCH] Add Antigravity MCP setup (#1119) --- apps/web/components/connect-ai-modal.tsx | 5 ++++- apps/web/components/integrations-view.tsx | 9 +++++++++ .../components/mcp-modal/mcp-detail-view.tsx | 3 +++ apps/web/lib/mcp-client-setup.ts | 1 + apps/web/lib/mcp-manual-instructions.ts | 16 ++++++++++++++++ .../public/mcp-supported-tools/antigravity.png | Bin 0 -> 20266 bytes 6 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 apps/web/public/mcp-supported-tools/antigravity.png diff --git a/apps/web/components/connect-ai-modal.tsx b/apps/web/components/connect-ai-modal.tsx index 9a46a045..f4da2de1 100644 --- a/apps/web/components/connect-ai-modal.tsx +++ b/apps/web/components/connect-ai-modal.tsx @@ -49,6 +49,7 @@ import type { Project } from "@lib/types" import { motion, AnimatePresence } from "motion/react" const clients = { + antigravity: "Antigravity", chatgpt: "ChatGPT", codex: "Codex", cursor: "Cursor", @@ -399,7 +400,9 @@ export function ConnectAIModal({ src={ key === "mcp-url" ? "/mcp-icon.svg" - : `/mcp-supported-tools/${key === "claude-code" ? "claude" : key}.png` + : key === "antigravity" + ? "/mcp-supported-tools/antigravity.png" + : `/mcp-supported-tools/${key === "claude-code" ? "claude" : key}.png` } width={20} /> diff --git a/apps/web/components/integrations-view.tsx b/apps/web/components/integrations-view.tsx index dc0876da..fe8233f6 100644 --- a/apps/web/components/integrations-view.tsx +++ b/apps/web/components/integrations-view.tsx @@ -155,6 +155,7 @@ type ListedApiKey = { type ItemKind = "plugin" | "connector" | "client" | "mcp-client" | "import" type MCPClientKey = + | "antigravity" | "chatgpt" | "codex" | "cursor" @@ -172,6 +173,13 @@ const MCP_CLIENTS: Array<{ simpleTitle?: string dev?: boolean }> = [ + { + key: "antigravity", + name: "Antigravity", + tagline: "MCP config for Antigravity", + simpleTitle: "Bring your memory into Antigravity", + dev: true, + }, { key: "cursor", name: "Cursor", @@ -236,6 +244,7 @@ const MCP_CLIENTS: Array<{ function mcpClientIconSrc(key: MCPClientKey): string { if (key === "mcp-url") return "/mcp-icon.svg" + if (key === "antigravity") return "/mcp-supported-tools/antigravity.png" const file = key === "claude-code" ? "claude" : key return `/mcp-supported-tools/${file}.png` } diff --git a/apps/web/components/mcp-modal/mcp-detail-view.tsx b/apps/web/components/mcp-modal/mcp-detail-view.tsx index 61b176e2..c72c61f3 100644 --- a/apps/web/components/mcp-modal/mcp-detail-view.tsx +++ b/apps/web/components/mcp-modal/mcp-detail-view.tsx @@ -93,6 +93,7 @@ function McpCodeBlock({ } const clients = { + antigravity: "Antigravity", chatgpt: "ChatGPT", codex: "Codex", cursor: "Cursor", @@ -131,6 +132,7 @@ const MCP_CATEGORIES: { { label: "IDEs", items: [ + { key: "antigravity", title: "Antigravity", subtitle: "AI IDE" }, { key: "cursor", title: "Cursor", subtitle: "AI IDE" }, { key: "vscode", title: "VS Code", subtitle: "IDE" }, { key: "cline", title: "Cline", subtitle: "VS Code extension" }, @@ -145,6 +147,7 @@ const MCP_CATEGORIES: { function clientIconSrc(key: ClientKey) { if (key === "mcp-url") return "/mcp-icon.svg" + if (key === "antigravity") return "/mcp-supported-tools/antigravity.png" const file = key === "claude-code" ? "claude" : key return `/mcp-supported-tools/${file}.png` } diff --git a/apps/web/lib/mcp-client-setup.ts b/apps/web/lib/mcp-client-setup.ts index c983971c..80d3cc70 100644 --- a/apps/web/lib/mcp-client-setup.ts +++ b/apps/web/lib/mcp-client-setup.ts @@ -13,6 +13,7 @@ const DEFAULT_SETUP: McpSetupAvailability = { * manual instructions and one-click (CLI / deeplink / URL copy). */ export const MCP_CLIENT_SETUP: Record = { + antigravity: { manual: true, oneClick: true }, chatgpt: { manual: true, oneClick: false }, cline: { manual: false, oneClick: true }, } diff --git a/apps/web/lib/mcp-manual-instructions.ts b/apps/web/lib/mcp-manual-instructions.ts index fef869e8..e5ecfd38 100644 --- a/apps/web/lib/mcp-manual-instructions.ts +++ b/apps/web/lib/mcp-manual-instructions.ts @@ -8,6 +8,14 @@ export const SUPERMEMORY_MCP_OAUTH_JSON = `{ } }` +export const ANTIGRAVITY_MCP_SNIPPET = `{ + "mcpServers": { + "supermemory": { + "serverUrl": "${CHATGPT_REMOTE_MCP_URL}" + } + } +}` + export function buildMcpUrlRemoteJson(apiKeyPlaceholder: string) { return `{ "supermemory-mcp": { @@ -52,6 +60,14 @@ export function getManualInstallEntry(clientKey: string): ManualInstallEntry { return { kind: "chatgpt" } case "mcp-url": return { kind: "generic-remote" } + case "antigravity": + return { + kind: "file", + paths: + "Antigravity: ~/.gemini/config/mcp_config.json. Merge the block into your existing [mcp_servers] section.", + snippet: ANTIGRAVITY_MCP_SNIPPET, + format: "json", + } case "codex": return { kind: "file", diff --git a/apps/web/public/mcp-supported-tools/antigravity.png b/apps/web/public/mcp-supported-tools/antigravity.png new file mode 100644 index 0000000000000000000000000000000000000000..5ac8a4773a7e9ce06dd047015fcf8b0b42f59f42 GIT binary patch literal 20266 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