@mcp-abap-adt/configurator 0.1.1 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -16,6 +16,7 @@ const CLIENTS = [
16
16
  { name: "copilot", message: "GitHub Copilot" },
17
17
  { name: "antigravity", message: "Antigravity" },
18
18
  { name: "qwen", message: "Qwen" },
19
+ { name: "gemini", message: "Gemini" },
19
20
  { name: "crush", message: "Crush" },
20
21
  ];
21
22
 
@@ -263,7 +264,7 @@ async function askHeaders(initialHeaders = {}) {
263
264
  }
264
265
 
265
266
  function getSupportedScopes(clientName) {
266
- if (clientName === "copilot") {
267
+ if (clientName === "copilot" || clientName === "gemini") {
267
268
  return ["local"];
268
269
  }
269
270
  if (["cline", "goose", "windsurf", "antigravity", "qwen"].includes(clientName)) {
package/bin/mcp-conf.js CHANGED
@@ -431,6 +431,18 @@ for (const client of options.clients) {
431
431
  writeJsonConfig(getQwenPath(home), options.name, serverArgs, "qwen");
432
432
  }
433
433
  break;
434
+ case "gemini":
435
+ requireScope("Gemini", ["local"], scope);
436
+ if (options.list) {
437
+ listJsonConfig(getGeminiPath(), "gemini");
438
+ } else if (options.show) {
439
+ showJsonConfig(getGeminiPath(), "gemini", options.name);
440
+ } else if (options.where) {
441
+ whereJsonConfig(getGeminiPath(), "gemini", options.name);
442
+ } else {
443
+ writeJsonConfig(getGeminiPath(), options.name, serverArgs, "gemini");
444
+ }
445
+ break;
434
446
  case "copilot":
435
447
  requireScope("GitHub Copilot", ["local"], scope);
436
448
  if (options.list) {
@@ -627,6 +639,14 @@ function getAntigravityPath(homeDir, scopeValue) {
627
639
  return path.join(homeDir, ".gemini", "antigravity", "mcp_config.json");
628
640
  }
629
641
 
642
+ function getGeminiPath() {
643
+ return path.join(process.cwd(), ".gemini", "settings.json");
644
+ }
645
+
646
+ function getGeminiEnablementPath(homeDir) {
647
+ return path.join(homeDir, ".gemini", "mcp-server-enablement.json");
648
+ }
649
+
630
650
  function getQwenPath(homeDir) {
631
651
  return path.join(homeDir, ".qwen", "settings.json");
632
652
  }
@@ -658,7 +678,7 @@ function requireScope(clientLabel, allowedScopes, requestedScope) {
658
678
  }
659
679
 
660
680
  function getDefaultScope(clientType) {
661
- if (clientType === "copilot") {
681
+ if (clientType === "copilot" || clientType === "gemini") {
662
682
  return "local";
663
683
  }
664
684
  return "global";
@@ -713,9 +733,20 @@ function writeJsonConfig(filePath, serverName, argsArray, clientType) {
713
733
  }
714
734
  if (options.toggle) {
715
735
  if (clientType === "cursor" || clientType === "copilot") {
716
- fail(
717
- `${clientType === "cursor" ? "Cursor" : "GitHub Copilot"} enable/disable is not implemented yet.`,
718
- );
736
+ const label = clientType === "cursor" ? "Cursor" : "GitHub Copilot";
737
+ fail(`${label} enable/disable is not implemented yet.`);
738
+ }
739
+ if (clientType === "gemini") {
740
+ const store = data.mcpServers || {};
741
+ if (!store[serverName]) {
742
+ fail(`Server "${serverName}" not found in ${filePath}.`);
743
+ }
744
+ const enablementPath = getGeminiEnablementPath(home);
745
+ ensureDir(enablementPath);
746
+ const enablementData = readJson(enablementPath);
747
+ enablementData[serverName] = { enabled: !options.disabled };
748
+ writeFile(enablementPath, JSON.stringify(enablementData, null, 2));
749
+ return;
719
750
  }
720
751
  const store =
721
752
  clientType === "opencode" || clientType === "crush"
@@ -848,6 +879,24 @@ function writeJsonConfig(filePath, serverName, argsArray, clientType) {
848
879
  writeFile(filePath, JSON.stringify(data, null, 2));
849
880
  return;
850
881
  }
882
+ if (clientType === "gemini") {
883
+ if (options.transport === "stdio") {
884
+ store[serverName] = {
885
+ command: options.command,
886
+ args: argsArray,
887
+ };
888
+ } else {
889
+ const entry = {
890
+ httpUrl: options.url,
891
+ };
892
+ if (Object.keys(options.headers).length > 0) {
893
+ entry.headers = options.headers;
894
+ }
895
+ store[serverName] = entry;
896
+ }
897
+ writeFile(filePath, JSON.stringify(data, null, 2));
898
+ return;
899
+ }
851
900
  if (options.transport === "stdio") {
852
901
  data.mcpServers[serverName] = {
853
902
  command: options.command,
@@ -1601,6 +1650,11 @@ function inferTransport(clientType, entry, parsedArgs) {
1601
1650
  if (clientType === "antigravity") {
1602
1651
  return entry?.type === "http" ? "http" : "stdio";
1603
1652
  }
1653
+ if (clientType === "gemini") {
1654
+ if (entry?.httpUrl) return "http";
1655
+ if (entry?.url) return "sse";
1656
+ return "stdio";
1657
+ }
1604
1658
  if (clientType === "crush") {
1605
1659
  if (entry?.type === "http") return "http";
1606
1660
  if (entry?.type === "sse") return "sse";
@@ -1629,6 +1683,9 @@ function inferUrl(clientType, entry) {
1629
1683
  if (clientType === "antigravity") {
1630
1684
  return entry?.serverUrl || null;
1631
1685
  }
1686
+ if (clientType === "gemini") {
1687
+ return entry?.httpUrl || entry?.url || null;
1688
+ }
1632
1689
  return entry?.url || null;
1633
1690
  }
1634
1691
 
@@ -1788,9 +1845,10 @@ Run:
1788
1845
  mcp-conf help <command>
1789
1846
 
1790
1847
  Notes:
1791
- Scope defaults to --global (Copilot uses --local only).
1848
+ Scope defaults to --global (Copilot and Gemini use --local only).
1792
1849
  For Claude, --local maps to the project scope file ./.mcp.json.
1793
1850
  For Codex, --local writes to ./.codex/config.toml.
1851
+ For Gemini, --local writes to ./.gemini/settings.json.
1794
1852
  `);
1795
1853
  return;
1796
1854
  }
@@ -1802,7 +1860,7 @@ Usage:
1802
1860
  mcp-conf add --client <name> --name <serverName> [--env <name> | --env-path <path> | --session-env | --mcp <dest>] [options]
1803
1861
 
1804
1862
  Options:
1805
- --client <name> cline | codex | claude | goose | cursor | windsurf | opencode | kilo | copilot | antigravity | qwen | crush (repeatable)
1863
+ --client <name> cline | codex | claude | goose | cursor | windsurf | opencode | kilo | copilot | antigravity | qwen | gemini | crush (repeatable)
1806
1864
  --name <serverName> required MCP server name key
1807
1865
  --env <name> env profile name (stdio only), writes --env=<name>
1808
1866
  --env-path <path> .env path (stdio only)
@@ -1821,6 +1879,7 @@ Options:
1821
1879
 
1822
1880
  Notes:
1823
1881
  Antigravity and Qwen are global-only; use --global.
1882
+ Gemini is local-only (project .gemini/settings.json); use --local.
1824
1883
  `);
1825
1884
  break;
1826
1885
  case "rm":
@@ -1830,7 +1889,7 @@ Usage:
1830
1889
  mcp-conf rm --client <name> --name <serverName> [options]
1831
1890
 
1832
1891
  Options:
1833
- --client <name> cline | codex | claude | goose | cursor | windsurf | opencode | kilo | copilot | antigravity | qwen | crush (repeatable)
1892
+ --client <name> cline | codex | claude | goose | cursor | windsurf | opencode | kilo | copilot | antigravity | qwen | gemini | crush (repeatable)
1834
1893
  --name <serverName> required MCP server name key
1835
1894
  --global write to global user config (default)
1836
1895
  --local write to project config (where supported)
@@ -1840,6 +1899,7 @@ Options:
1840
1899
 
1841
1900
  Notes:
1842
1901
  Antigravity and Qwen are global-only; use --global.
1902
+ Gemini is local-only (project .gemini/settings.json); use --local.
1843
1903
  `);
1844
1904
  break;
1845
1905
  case "ls":
@@ -1849,7 +1909,7 @@ Usage:
1849
1909
  mcp-conf ls --client <name> [options]
1850
1910
 
1851
1911
  Options:
1852
- --client <name> cline | codex | claude | goose | cursor | windsurf | opencode | kilo | copilot | antigravity | qwen | crush (repeatable)
1912
+ --client <name> cline | codex | claude | goose | cursor | windsurf | opencode | kilo | copilot | antigravity | qwen | gemini | crush (repeatable)
1853
1913
  --global write to global user config (default)
1854
1914
  --local write to project config (where supported)
1855
1915
  --all-projects Claude global: list across all projects
@@ -1857,6 +1917,7 @@ Options:
1857
1917
 
1858
1918
  Notes:
1859
1919
  Antigravity and Qwen are global-only; use --global.
1920
+ Gemini is local-only (project .gemini/settings.json); use --local.
1860
1921
  `);
1861
1922
  break;
1862
1923
  case "enable":
@@ -1866,7 +1927,7 @@ Usage:
1866
1927
  mcp-conf enable --client <name> --name <serverName> [options]
1867
1928
 
1868
1929
  Options:
1869
- --client <name> cline | codex | claude | goose | cursor | windsurf | opencode | kilo | copilot | antigravity | qwen | crush (repeatable)
1930
+ --client <name> cline | codex | claude | goose | cursor | windsurf | opencode | kilo | copilot | antigravity | qwen | gemini | crush (repeatable)
1870
1931
  --name <serverName> required MCP server name key
1871
1932
  --global write to global user config (default)
1872
1933
  --local write to project config (where supported)
@@ -1876,6 +1937,7 @@ Options:
1876
1937
 
1877
1938
  Notes:
1878
1939
  Antigravity and Qwen are global-only; use --global.
1940
+ Gemini is local-only (project .gemini/settings.json); use --local.
1879
1941
  `);
1880
1942
  break;
1881
1943
  case "disable":
@@ -1885,7 +1947,7 @@ Usage:
1885
1947
  mcp-conf disable --client <name> --name <serverName> [options]
1886
1948
 
1887
1949
  Options:
1888
- --client <name> cline | codex | claude | goose | cursor | windsurf | opencode | kilo | copilot | antigravity | qwen | crush (repeatable)
1950
+ --client <name> cline | codex | claude | goose | cursor | windsurf | opencode | kilo | copilot | antigravity | qwen | gemini | crush (repeatable)
1889
1951
  --name <serverName> required MCP server name key
1890
1952
  --global write to global user config (default)
1891
1953
  --local write to project config (where supported)
@@ -1895,6 +1957,7 @@ Options:
1895
1957
 
1896
1958
  Notes:
1897
1959
  Antigravity and Qwen are global-only; use --global.
1960
+ Gemini is local-only (project .gemini/settings.json); use --local.
1898
1961
  `);
1899
1962
  break;
1900
1963
  case "where":
@@ -1904,7 +1967,7 @@ Usage:
1904
1967
  mcp-conf where --client <name> --name <serverName> [options]
1905
1968
 
1906
1969
  Options:
1907
- --client <name> cline | codex | claude | goose | cursor | windsurf | opencode | kilo | copilot | antigravity | qwen | crush (repeatable)
1970
+ --client <name> cline | codex | claude | goose | cursor | windsurf | opencode | kilo | copilot | antigravity | qwen | gemini | crush (repeatable)
1908
1971
  --name <serverName> required MCP server name key
1909
1972
  --global write to global user config (default)
1910
1973
  --local write to project config (where supported)
@@ -1913,6 +1976,7 @@ Options:
1913
1976
 
1914
1977
  Notes:
1915
1978
  Antigravity and Qwen are global-only; use --global.
1979
+ Gemini is local-only (project .gemini/settings.json); use --local.
1916
1980
  `);
1917
1981
  break;
1918
1982
  case "show":
@@ -1922,7 +1986,7 @@ Usage:
1922
1986
  mcp-conf show --client <name> --name <serverName> [options]
1923
1987
 
1924
1988
  Options:
1925
- --client <name> cline | codex | claude | goose | cursor | windsurf | opencode | kilo | copilot | antigravity | qwen | crush (repeatable)
1989
+ --client <name> cline | codex | claude | goose | cursor | windsurf | opencode | kilo | copilot | antigravity | qwen | gemini | crush (repeatable)
1926
1990
  --name <serverName> required MCP server name key
1927
1991
  --global read from global user config (default)
1928
1992
  --local read from project config (where supported)
@@ -1933,6 +1997,7 @@ Options:
1933
1997
 
1934
1998
  Notes:
1935
1999
  Antigravity and Qwen are global-only; use --global.
2000
+ Gemini is local-only (project .gemini/settings.json); use --local.
1936
2001
  `);
1937
2002
  break;
1938
2003
  case "update":
@@ -1942,7 +2007,7 @@ Usage:
1942
2007
  mcp-conf update --client <name> --name <serverName> [--env <name> | --env-path <path> | --session-env | --mcp <dest>] [options]
1943
2008
 
1944
2009
  Options:
1945
- --client <name> cline | codex | claude | goose | cursor | windsurf | opencode | kilo | copilot | antigravity | qwen | crush (repeatable)
2010
+ --client <name> cline | codex | claude | goose | cursor | windsurf | opencode | kilo | copilot | antigravity | qwen | gemini | crush (repeatable)
1946
2011
  --name <serverName> required MCP server name key
1947
2012
  --env <name> env profile name (stdio only), writes --env=<name>
1948
2013
  --env-path <path> .env path (stdio only)
@@ -1959,6 +2024,7 @@ Options:
1959
2024
 
1960
2025
  Notes:
1961
2026
  Antigravity and Qwen are global-only; use --global.
2027
+ Gemini is local-only (project .gemini/settings.json); use --local.
1962
2028
  `);
1963
2029
  break;
1964
2030
  case "tui":
@@ -25,6 +25,8 @@ mcp-conf add --client kilo --name abap --transport http --url http://localhost:3
25
25
  mcp-conf add --client copilot --name abap --transport http --url http://localhost:3000/mcp/stream/http --header x-mcp-destination=trial
26
26
  mcp-conf add --client antigravity --name abap --transport http --url http://localhost:3000/mcp/stream/http
27
27
  mcp-conf add --client qwen --name abap --transport http --url http://localhost:3000/mcp/stream/http
28
+ mcp-conf add --client gemini --name abap --mcp TRIAL
29
+ mcp-conf add --client gemini --name abap --transport http --url http://localhost:3000/mcp/stream/http
28
30
  mcp-conf add --client crush --name abap --mcp TRIAL
29
31
  mcp-conf add --client crush --name abap --transport http --url http://localhost:3000/mcp/stream/http
30
32
  mcp-conf tui
@@ -53,6 +55,7 @@ mcp-conf enable --client codex --name abap
53
55
  mcp-conf enable --client cline --name abap
54
56
  mcp-conf enable --client antigravity --name abap
55
57
  mcp-conf enable --client qwen --name abap
58
+ mcp-conf enable --client gemini --name abap
56
59
  mcp-conf enable --client crush --name abap
57
60
  ```
58
61
 
@@ -63,6 +66,7 @@ mcp-conf rm --client cline --name abap
63
66
  mcp-conf rm --client claude --name abap
64
67
  mcp-conf rm --client antigravity --name abap
65
68
  mcp-conf rm --client qwen --name abap
69
+ mcp-conf rm --client gemini --name abap
66
70
  mcp-conf rm --client crush --name abap
67
71
  ```
68
72
 
@@ -74,6 +78,7 @@ mcp-conf ls --client claude --local
74
78
  mcp-conf ls --client claude --all-projects
75
79
  mcp-conf ls --client antigravity --global
76
80
  mcp-conf ls --client qwen --global
81
+ mcp-conf ls --client gemini
77
82
  mcp-conf ls --client crush
78
83
  mcp-conf ls --client crush --local
79
84
  ```
@@ -97,7 +102,7 @@ mcp-conf tui
97
102
 
98
103
  Options:
99
104
  - Commands: `add`, `rm`, `ls`, `show`, `enable`, `disable`, `where`, `update`, `tui` (first argument)
100
- - `--client <name>` (repeatable): `cline`, `codex`, `claude`, `goose`, `cursor`, `windsurf`, `opencode` (`kilo` alias), `copilot`, `antigravity`, `qwen`, `crush`
105
+ - `--client <name>` (repeatable): `cline`, `codex`, `claude`, `goose`, `cursor`, `windsurf`, `opencode` (`kilo` alias), `copilot`, `antigravity`, `qwen`, `gemini`, `crush`
101
106
  - `--env <name>`: use named env profile; writes `--env=<name>` (stdio only)
102
107
  - `--env-path <path>`: use a specific `.env` file (stdio only)
103
108
  - `--session-env`: use shell/session environment variables (stdio only)
@@ -106,7 +111,7 @@ Options:
106
111
  - `--transport <type>`: `stdio`, `sse`, or `http` (`http` maps to `streamableHttp`)
107
112
  - `--command <bin>`: command to run (default: `mcp-abap-adt`)
108
113
  - `--global`: write to the global user config (default)
109
- - `--local`: write to the project config (supported by `cursor`, `opencode`/`kilo`, `copilot`, `claude`, `codex`, `crush`)
114
+ - `--local`: write to the project config (supported by `cursor`, `opencode`/`kilo`, `copilot`, `claude`, `codex`, `gemini`, `crush`)
110
115
  - `--all-projects`: for Claude (global scope), apply `rm/enable/disable/ls/where` across all projects
111
116
  - `--project <path>`: for Claude (global scope), target a specific project path
112
117
  - `--url <http(s)://...>`: required for `sse` and `http`
@@ -121,6 +126,7 @@ Notes:
121
126
  - Cursor/Copilot enable/disable are not implemented yet.
122
127
  - Antigravity enable/disable uses `disabled: true|false` on the entry.
123
128
  - Antigravity and Qwen are global-only; use `--global`.
129
+ - Gemini is local-only (project `.gemini/settings.json`); use `--local`.
124
130
  - Claude stores enable/disable state under `enabledMcpServers` and `disabledMcpServers` for each project.
125
131
  - Claude enable/disable always updates `~/.claude.json` (global scope), even if you pass `--local`.
126
132
  - Antigravity HTTP entries use `serverUrl` instead of `url`.
@@ -184,5 +190,7 @@ Local (project) locations:
184
190
  - Project: `./.vscode/mcp.json` (uses `servers.<name>` entries)
185
191
  - **Antigravity**:
186
192
  - Project: `./.antigravity/mcp.json` (community-reported; not supported yet)
193
+ - **Gemini**:
194
+ - Project: `./.gemini/settings.json` (uses `mcpServers.<name>`)
187
195
  - **Crush**:
188
196
  - Project: `./.crush.json` (uses `mcp.<name>` entries with `disabled: true|false`)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mcp-abap-adt/configurator",
3
- "version": "0.1.1",
3
+ "version": "0.2.1",
4
4
  "description": "MCP client configurator for mcp-abap-adt and mcp-abap-adt-proxy",
5
5
  "license": "MIT",
6
6
  "repository": {