Skip to content

Commit 3c77251

Browse files
committed
Support Google Antigravity in the installer
1 parent 4bcded6 commit 3c77251

File tree

5 files changed

+51
-3
lines changed

5 files changed

+51
-3
lines changed

README.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
![Iterable MCP Server Setup](images/iterable-mcp-setup.png)
44

55

6-
With the new Iterable MCP server, you can now connect Iterable to your favorite AI tools like Cursor, Claude Desktop, Claude Code, Windsurf, and Gemini CLI!
6+
With the new Iterable MCP server, you can now connect Iterable to your favorite AI tools like Cursor, Claude Desktop, Claude Code, Windsurf, Gemini CLI, and Antigravity!
77

88
## What is MCP?
99

@@ -94,15 +94,16 @@ claude mcp add-from-claude-desktop
9494

9595
For more information, see the [Claude Code MCP documentation](https://docs.claude.com/en/docs/claude-code/mcp).
9696

97-
### Manual configuration (Cursor, Claude Desktop, Windsurf & Gemini CLI)
97+
### Manual configuration (Cursor, Claude Desktop, Windsurf, Gemini CLI & Antigravity)
9898

9999
The above commands will automatically configure your AI tool to use the MCP server by editing the appropriate configuration file, but you can also manually edit the appropriate configuration file:
100100
- **Claude Desktop:** `~/Library/Application Support/Claude/claude_desktop_config.json`
101101
- **Cursor:** `~/.cursor/mcp.json`
102102
- **Windsurf:** `~/.codeium/windsurf/mcp_config.json`
103+
- **Antigravity:** `~/.gemini/antigravity/mcp_config.json`
103104
- **Gemini CLI:** `~/.gemini/settings.json`
104105

105-
All four use the same configuration format:
106+
All five use the same configuration format:
106107

107108
**Recommended: Using key manager:**
108109
```bash

package.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,10 @@
5858
"install-dev:cursor:debug": "pnpm install-dev && node dist/index.js setup --cursor --debug --local",
5959
"install-dev:gemini-cli": "pnpm install-dev && node dist/index.js setup --gemini-cli --local",
6060
"install-dev:gemini-cli:debug": "pnpm install-dev && node dist/index.js setup --gemini-cli --debug --local",
61+
"install-dev:windsurf": "pnpm install-dev && node dist/index.js setup --windsurf --local",
62+
"install-dev:windsurf:debug": "pnpm install-dev && node dist/index.js setup --windsurf --debug --local",
63+
"install-dev:antigravity": "pnpm install-dev && node dist/index.js setup --antigravity --local",
64+
"install-dev:antigravity:debug": "pnpm install-dev && node dist/index.js setup --antigravity --debug --local",
6165
"lint:fix": "eslint \"src/**/*.ts\" \"tests/**/*.ts\" --fix --quiet",
6266
"prepublishOnly": "pnpm build",
6367
"prestart": "pnpm build",

src/install.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ const TOOL_NAMES = {
3737
"claude-code": "Claude Code",
3838
"gemini-cli": "Gemini CLI",
3939
windsurf: "Windsurf",
40+
antigravity: "Antigravity",
4041
manual: "Manual Setup",
4142
} as const;
4243

@@ -66,6 +67,12 @@ const TOOL_CONFIGS = {
6667
);
6768
}
6869
})(),
70+
antigravity: path.join(
71+
os.homedir(),
72+
".gemini",
73+
"antigravity",
74+
"mcp_config.json"
75+
),
6976
cursor: path.join(os.homedir(), ".cursor", "mcp.json"),
7077
windsurf: path.join(os.homedir(), ".codeium", "windsurf", "mcp_config.json"),
7178
"gemini-cli": path.join(os.homedir(), ".gemini", "settings.json"),
@@ -207,6 +214,7 @@ export const setupMcpServer = async (): Promise<void> => {
207214
...(args.includes("--claude-code") ? ["claude-code" as const] : []),
208215
...(args.includes("--gemini-cli") ? ["gemini-cli" as const] : []),
209216
...(args.includes("--windsurf") ? ["windsurf" as const] : []),
217+
...(args.includes("--antigravity") ? ["antigravity" as const] : []),
210218
...(args.includes("--manual") ? ["manual" as const] : []),
211219
];
212220

@@ -235,6 +243,7 @@ export const setupMcpServer = async (): Promise<void> => {
235243
[`${COMMAND_NAME} setup --claude-code`, "Configure for Claude Code"],
236244
[`${COMMAND_NAME} setup --gemini-cli`, "Configure for Gemini CLI"],
237245
[`${COMMAND_NAME} setup --windsurf`, "Configure for Windsurf"],
246+
[`${COMMAND_NAME} setup --antigravity`, "Configure for Antigravity"],
238247
[`${COMMAND_NAME} setup --manual`, "Show manual config instructions"],
239248
[
240249
`${COMMAND_NAME} setup --cursor --claude-desktop`,
@@ -568,6 +577,7 @@ export const setupMcpServer = async (): Promise<void> => {
568577
{ name: "Claude Code (CLI)", value: "claude-code" },
569578
{ name: "Gemini CLI", value: "gemini-cli" },
570579
{ name: "Windsurf", value: "windsurf" },
580+
{ name: "Antigravity", value: "antigravity" },
571581
{ name: "Other / Manual Setup", value: "manual" },
572582
],
573583
validate: (arr) =>
@@ -709,6 +719,8 @@ export const setupMcpServer = async (): Promise<void> => {
709719
if (fileBasedTools.includes("gemini-cli"))
710720
configuredTools.push("Gemini CLI");
711721
if (fileBasedTools.includes("windsurf")) configuredTools.push("Windsurf");
722+
if (fileBasedTools.includes("antigravity"))
723+
configuredTools.push("Antigravity");
712724
if (needsManual) configuredTools.push("your AI tool");
713725

714726
const toolsList =

src/utils/tool-config.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ export function getWindsurfConfigPath(): string {
1010
return path.join(os.homedir(), ".codeium", "windsurf", "mcp_config.json");
1111
}
1212

13+
export function getAntigravityConfigPath(): string {
14+
return path.join(os.homedir(), ".gemini", "antigravity", "mcp_config.json");
15+
}
16+
1317
export function getClaudeDesktopConfigPath(): string {
1418
switch (process.platform) {
1519
case "darwin":

tests/unit/tool-config-paths.test.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,37 @@ import os from "os";
33
import path from "path";
44

55
import {
6+
getAntigravityConfigPath,
67
getClaudeDesktopConfigPath,
78
getCursorConfigPath,
89
getWindsurfConfigPath,
910
} from "../../src/utils/tool-config.js";
1011

1112
describe("tool-config paths", () => {
13+
describe("getAntigravityConfigPath", () => {
14+
it("returns path in home directory .gemini/antigravity folder", () => {
15+
const configPath = getAntigravityConfigPath();
16+
expect(configPath).toBe(
17+
path.join(os.homedir(), ".gemini", "antigravity", "mcp_config.json")
18+
);
19+
});
20+
21+
it("returns a path ending with mcp_config.json", () => {
22+
const configPath = getAntigravityConfigPath();
23+
expect(configPath).toMatch(/mcp_config\.json$/);
24+
});
25+
26+
it("returns a path containing .gemini", () => {
27+
const configPath = getAntigravityConfigPath();
28+
expect(configPath).toContain(".gemini");
29+
});
30+
31+
it("returns a path containing antigravity", () => {
32+
const configPath = getAntigravityConfigPath();
33+
expect(configPath).toContain("antigravity");
34+
});
35+
});
36+
1237
describe("getCursorConfigPath", () => {
1338
it("returns path in home directory .cursor folder", () => {
1439
const configPath = getCursorConfigPath();
@@ -76,12 +101,14 @@ describe("tool-config paths", () => {
76101
expect(path.isAbsolute(getCursorConfigPath())).toBe(true);
77102
expect(path.isAbsolute(getWindsurfConfigPath())).toBe(true);
78103
expect(path.isAbsolute(getClaudeDesktopConfigPath())).toBe(true);
104+
expect(path.isAbsolute(getAntigravityConfigPath())).toBe(true);
79105
});
80106

81107
it("all config paths end with .json", () => {
82108
expect(getCursorConfigPath()).toMatch(/\.json$/);
83109
expect(getWindsurfConfigPath()).toMatch(/\.json$/);
84110
expect(getClaudeDesktopConfigPath()).toMatch(/\.json$/);
111+
expect(getAntigravityConfigPath()).toMatch(/\.json$/);
85112
});
86113
});
87114
});

0 commit comments

Comments
 (0)