@mcp-abap-adt/configurator 0.0.10 → 0.0.12

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.
package/README.md CHANGED
@@ -20,12 +20,14 @@ mcp-conf --client codex --name abap-http --transport http --url http://localhost
20
20
  mcp-conf --client opencode --name abap --transport http --url http://localhost:3000/mcp/stream/http
21
21
  mcp-conf --client kilo --name abap --transport http --url http://localhost:3000/mcp/stream/http
22
22
  mcp-conf --client copilot --name abap --transport http --url http://localhost:3000/mcp/stream/http --header x-mcp-destination=trial
23
+ mcp-conf --client crush --name abap --mcp TRIAL
24
+ mcp-conf --client crush --name abap --transport http --url http://localhost:3000/mcp/stream/http
23
25
  mcp-conf tui
24
26
  ```
25
27
 
26
28
  ## TUI
27
29
 
28
- `mcp-conf tui` starts an interactive wizard (`ls`/`add`/`show`/`update`/`rm`/`enable`/`disable`).
30
+ `mcp-conf tui` starts an interactive wizard (`ls`/`show`/`add`/`update`/`rm`/`enable`/`disable`).
29
31
  - Step order: `operation` -> `client` -> `scope` (auto-skipped if only one scope is supported).
30
32
  - For `add` + `sse/http`: prompts for URL, timeout, and repeatable headers.
31
33
  - For `rm`/`enable`/`disable`: server name is selected from existing servers in chosen client/scope.
@@ -15,6 +15,7 @@ const CLIENTS = [
15
15
  { name: "opencode", message: "OpenCode (kilo)" },
16
16
  { name: "copilot", message: "GitHub Copilot" },
17
17
  { name: "antigravity", message: "Antigravity" },
18
+ { name: "crush", message: "Crush" },
18
19
  ];
19
20
 
20
21
  const HEADER_KEYS = [
@@ -35,8 +36,8 @@ async function main() {
35
36
 
36
37
  result.tuiAction = await askSelect("Operation", [
37
38
  "ls",
38
- "add",
39
39
  "show",
40
+ "add",
40
41
  "update",
41
42
  "rm",
42
43
  "enable",
package/bin/mcp-conf.js CHANGED
@@ -26,7 +26,7 @@ const args = process.argv.slice(2);
26
26
  const action = args[0] && !args[0].startsWith("-") ? args[0] : null;
27
27
  if (
28
28
  action &&
29
- ["add", "rm", "ls", "enable", "disable", "where", "show", "update", "tui", "help"].includes(
29
+ ["add", "rm", "ls", "show", "enable", "disable", "where", "update", "tui", "help"].includes(
30
30
  action,
31
31
  )
32
32
  ) {
@@ -62,7 +62,7 @@ if (args.includes("--help") || args.includes("-h") || action === "help") {
62
62
  action === "help"
63
63
  ? args[0]
64
64
  : action &&
65
- ["add", "rm", "ls", "enable", "disable", "where", "show", "update", "tui"].includes(
65
+ ["add", "rm", "ls", "show", "enable", "disable", "where", "update", "tui"].includes(
66
66
  action,
67
67
  )
68
68
  ? action
@@ -159,9 +159,9 @@ for (let i = 0; i < args.length; i += 1) {
159
159
 
160
160
  if (
161
161
  !action ||
162
- !["add", "rm", "ls", "enable", "disable", "where", "show", "update", "tui"].includes(action)
162
+ !["add", "rm", "ls", "show", "enable", "disable", "where", "update", "tui"].includes(action)
163
163
  ) {
164
- fail("Provide a command: add | rm | ls | enable | disable | where | show | update | tui.");
164
+ fail("Provide a command: add | rm | ls | show | enable | disable | where | update | tui.");
165
165
  }
166
166
 
167
167
  let effectiveAction = action;
@@ -441,6 +441,23 @@ for (const client of options.clients) {
441
441
  );
442
442
  }
443
443
  break;
444
+ case "crush":
445
+ requireScope("Crush", ["global", "local"], scope);
446
+ if (options.list) {
447
+ listJsonConfig(getCrushPath(platform, home, userProfile, scope), "crush");
448
+ } else if (options.show) {
449
+ showJsonConfig(getCrushPath(platform, home, userProfile, scope), "crush", options.name);
450
+ } else if (options.where) {
451
+ whereJsonConfig(getCrushPath(platform, home, userProfile, scope), "crush", options.name);
452
+ } else {
453
+ writeJsonConfig(
454
+ getCrushPath(platform, home, userProfile, scope),
455
+ options.name,
456
+ serverArgs,
457
+ "crush",
458
+ );
459
+ }
460
+ break;
444
461
  default:
445
462
  fail(`Unknown client: ${client}`);
446
463
  }
@@ -580,6 +597,16 @@ function getWindsurfPath(platformValue, homeDir, userProfileDir) {
580
597
  return path.join(homeDir, ".codeium", "windsurf", "mcp_config.json");
581
598
  }
582
599
 
600
+ function getCrushPath(platformValue, homeDir, userProfileDir, scopeValue) {
601
+ if (scopeValue === "local") {
602
+ return path.join(process.cwd(), ".crush.json");
603
+ }
604
+ if (platformValue === "win32") {
605
+ return path.join(userProfileDir, "AppData", "Local", "crush", "crush.json");
606
+ }
607
+ return path.join(homeDir, ".config", "crush", "crush.json");
608
+ }
609
+
583
610
  function requireScope(clientLabel, allowedScopes, requestedScope) {
584
611
  if (!allowedScopes.includes(requestedScope)) {
585
612
  fail(
@@ -625,13 +652,15 @@ function resolveProjectSelector(data, projectPath) {
625
652
  }
626
653
 
627
654
  function getDefaultDisabled(clientType) {
628
- return ["cline", "codex", "windsurf", "goose", "claude", "opencode"].includes(clientType);
655
+ return ["cline", "codex", "windsurf", "goose", "claude", "opencode", "crush"].includes(
656
+ clientType,
657
+ );
629
658
  }
630
659
 
631
660
  function writeJsonConfig(filePath, serverName, argsArray, clientType) {
632
661
  ensureDir(filePath);
633
662
  const data = readJson(filePath);
634
- if (clientType === "opencode") {
663
+ if (clientType === "opencode" || clientType === "crush") {
635
664
  data.mcp = data.mcp || {};
636
665
  } else if (clientType === "antigravity") {
637
666
  data.mcpServers = data.mcpServers || {};
@@ -648,7 +677,7 @@ function writeJsonConfig(filePath, serverName, argsArray, clientType) {
648
677
  );
649
678
  }
650
679
  const store =
651
- clientType === "opencode"
680
+ clientType === "opencode" || clientType === "crush"
652
681
  ? data.mcp
653
682
  : clientType === "copilot"
654
683
  ? data.servers
@@ -671,7 +700,7 @@ function writeJsonConfig(filePath, serverName, argsArray, clientType) {
671
700
  }
672
701
  if (options.remove) {
673
702
  const store =
674
- clientType === "opencode"
703
+ clientType === "opencode" || clientType === "crush"
675
704
  ? data.mcp
676
705
  : clientType === "copilot"
677
706
  ? data.servers
@@ -684,7 +713,7 @@ function writeJsonConfig(filePath, serverName, argsArray, clientType) {
684
713
  return;
685
714
  }
686
715
  const store =
687
- clientType === "opencode"
716
+ clientType === "opencode" || clientType === "crush"
688
717
  ? data.mcp
689
718
  : clientType === "copilot"
690
719
  ? data.servers
@@ -731,6 +760,30 @@ function writeJsonConfig(filePath, serverName, argsArray, clientType) {
731
760
  writeFile(filePath, JSON.stringify(data, null, 2));
732
761
  return;
733
762
  }
763
+ if (clientType === "crush") {
764
+ if (options.transport === "stdio") {
765
+ store[serverName] = {
766
+ type: "stdio",
767
+ command: options.command,
768
+ args: argsArray,
769
+ timeout: options.timeout,
770
+ disabled: !!(options.disabled || getDefaultDisabled("crush")),
771
+ };
772
+ } else {
773
+ const entry = {
774
+ type: options.transport === "streamableHttp" ? "http" : options.transport,
775
+ url: options.url,
776
+ timeout: options.timeout,
777
+ disabled: !!(options.disabled || getDefaultDisabled("crush")),
778
+ };
779
+ if (Object.keys(options.headers).length > 0) {
780
+ entry.headers = options.headers;
781
+ }
782
+ store[serverName] = entry;
783
+ }
784
+ writeFile(filePath, JSON.stringify(data, null, 2));
785
+ return;
786
+ }
734
787
  if (clientType === "antigravity") {
735
788
  if (options.transport === "stdio") {
736
789
  store[serverName] = {
@@ -1113,7 +1166,7 @@ function writeGooseConfig(filePath, serverName, argsArray) {
1113
1166
  function listJsonConfig(filePath, clientType) {
1114
1167
  const data = readJson(filePath);
1115
1168
  let store;
1116
- if (clientType === "opencode") {
1169
+ if (clientType === "opencode" || clientType === "crush") {
1117
1170
  store = data.mcp || {};
1118
1171
  } else if (clientType === "antigravity") {
1119
1172
  store = data.mcpServers || {};
@@ -1180,7 +1233,7 @@ function claudeLocalHasServer(filePath, serverName) {
1180
1233
  function whereJsonConfig(filePath, clientType, serverName) {
1181
1234
  const data = readJson(filePath);
1182
1235
  let store;
1183
- if (clientType === "opencode") {
1236
+ if (clientType === "opencode" || clientType === "crush") {
1184
1237
  store = data.mcp || {};
1185
1238
  } else if (clientType === "antigravity") {
1186
1239
  store = data.mcpServers || {};
@@ -1248,7 +1301,7 @@ function whereClaudeConfig(filePath, serverName, allProjects, projectPath) {
1248
1301
  function showJsonConfig(filePath, clientType, serverName) {
1249
1302
  const data = readJson(filePath);
1250
1303
  let store;
1251
- if (clientType === "opencode") {
1304
+ if (clientType === "opencode" || clientType === "crush") {
1252
1305
  store = data.mcp || {};
1253
1306
  } else if (clientType === "antigravity") {
1254
1307
  store = data.mcpServers || {};
@@ -1393,19 +1446,42 @@ function parseServerArgs(args) {
1393
1446
  mcpDestination: null,
1394
1447
  useSessionEnv: false,
1395
1448
  };
1396
- for (const arg of args) {
1449
+ for (let i = 0; i < args.length; i += 1) {
1450
+ const arg = args[i];
1397
1451
  if (typeof arg !== "string") {
1398
1452
  continue;
1399
1453
  }
1400
1454
  if (arg.startsWith("--transport=")) {
1401
1455
  const value = arg.slice("--transport=".length);
1402
1456
  parsed.transport = value === "streamableHttp" ? "http" : value;
1403
- } else if (arg === "--env") {
1457
+ } else if (arg === "--session-env") {
1404
1458
  parsed.useSessionEnv = true;
1459
+ } else if (arg === "--env") {
1460
+ const next = args[i + 1];
1461
+ if (typeof next === "string" && next && !next.startsWith("-")) {
1462
+ // Backward-compatible form: --env /path/to/.env
1463
+ parsed.envPath = next;
1464
+ parsed.useSessionEnv = false;
1465
+ i += 1;
1466
+ } else {
1467
+ parsed.useSessionEnv = true;
1468
+ }
1405
1469
  } else if (arg.startsWith("--env-path=") || arg.startsWith("--env=")) {
1406
1470
  parsed.envPath = arg.slice(arg.indexOf("=") + 1);
1471
+ } else if (arg === "--env-path") {
1472
+ const next = args[i + 1];
1473
+ if (typeof next === "string" && next && !next.startsWith("-")) {
1474
+ parsed.envPath = next;
1475
+ i += 1;
1476
+ }
1407
1477
  } else if (arg.startsWith("--mcp=")) {
1408
1478
  parsed.mcpDestination = arg.slice("--mcp=".length);
1479
+ } else if (arg === "--mcp") {
1480
+ const next = args[i + 1];
1481
+ if (typeof next === "string" && next && !next.startsWith("-")) {
1482
+ parsed.mcpDestination = next;
1483
+ i += 1;
1484
+ }
1409
1485
  }
1410
1486
  }
1411
1487
  return parsed;
@@ -1439,6 +1515,11 @@ function inferTransport(clientType, entry, parsedArgs) {
1439
1515
  if (clientType === "antigravity") {
1440
1516
  return entry?.type === "http" ? "http" : "stdio";
1441
1517
  }
1518
+ if (clientType === "crush") {
1519
+ if (entry?.type === "http") return "http";
1520
+ if (entry?.type === "sse") return "sse";
1521
+ return "stdio";
1522
+ }
1442
1523
  if (entry?.type === "streamableHttp" || entry?.type === "http") {
1443
1524
  return "http";
1444
1525
  }
@@ -1585,7 +1666,7 @@ function printHelp(command) {
1585
1666
  process.stdout.write(`${header}
1586
1667
 
1587
1668
  Usage:
1588
- mcp-conf <add|rm|ls|enable|disable|where|show|update> --client <name> [options]
1669
+ mcp-conf <add|rm|ls|show|enable|disable|where|update> --client <name> [options]
1589
1670
  mcp-conf tui
1590
1671
  mcp-conf help <command>
1591
1672
 
@@ -1593,10 +1674,10 @@ Commands:
1593
1674
  add add or update an MCP server entry
1594
1675
  rm remove an MCP server entry
1595
1676
  ls list MCP server entries
1677
+ show show server configuration details
1596
1678
  enable enable an existing entry
1597
1679
  disable disable an existing entry
1598
1680
  where show where a server name is defined
1599
- show show server configuration details
1600
1681
  update update an existing server entry
1601
1682
  tui interactive setup wizard
1602
1683
 
@@ -1619,7 +1700,7 @@ Usage:
1619
1700
  mcp-conf add --client <name> --name <serverName> [--env | --env-path <path> | --mcp <dest>] [options]
1620
1701
 
1621
1702
  Options:
1622
- --client <name> cline | codex | claude | goose | cursor | windsurf | opencode | kilo | copilot | antigravity (repeatable)
1703
+ --client <name> cline | codex | claude | goose | cursor | windsurf | opencode | kilo | copilot | antigravity | crush (repeatable)
1623
1704
  --name <serverName> required MCP server name key
1624
1705
  --env use current shell/session env vars (stdio only)
1625
1706
  --env-path <path> .env path (stdio only)
@@ -1646,7 +1727,7 @@ Usage:
1646
1727
  mcp-conf rm --client <name> --name <serverName> [options]
1647
1728
 
1648
1729
  Options:
1649
- --client <name> cline | codex | claude | goose | cursor | windsurf | opencode | kilo | copilot | antigravity (repeatable)
1730
+ --client <name> cline | codex | claude | goose | cursor | windsurf | opencode | kilo | copilot | antigravity | crush (repeatable)
1650
1731
  --name <serverName> required MCP server name key
1651
1732
  --global write to global user config (default)
1652
1733
  --local write to project config (where supported)
@@ -1665,7 +1746,7 @@ Usage:
1665
1746
  mcp-conf ls --client <name> [options]
1666
1747
 
1667
1748
  Options:
1668
- --client <name> cline | codex | claude | goose | cursor | windsurf | opencode | kilo | copilot | antigravity (repeatable)
1749
+ --client <name> cline | codex | claude | goose | cursor | windsurf | opencode | kilo | copilot | antigravity | crush (repeatable)
1669
1750
  --global write to global user config (default)
1670
1751
  --local write to project config (where supported)
1671
1752
  --all-projects Claude global: list across all projects
@@ -1682,7 +1763,7 @@ Usage:
1682
1763
  mcp-conf enable --client <name> --name <serverName> [options]
1683
1764
 
1684
1765
  Options:
1685
- --client <name> cline | codex | claude | goose | cursor | windsurf | opencode | kilo | copilot | antigravity (repeatable)
1766
+ --client <name> cline | codex | claude | goose | cursor | windsurf | opencode | kilo | copilot | antigravity | crush (repeatable)
1686
1767
  --name <serverName> required MCP server name key
1687
1768
  --global write to global user config (default)
1688
1769
  --local write to project config (where supported)
@@ -1701,7 +1782,7 @@ Usage:
1701
1782
  mcp-conf disable --client <name> --name <serverName> [options]
1702
1783
 
1703
1784
  Options:
1704
- --client <name> cline | codex | claude | goose | cursor | windsurf | opencode | kilo | copilot | antigravity (repeatable)
1785
+ --client <name> cline | codex | claude | goose | cursor | windsurf | opencode | kilo | copilot | antigravity | crush (repeatable)
1705
1786
  --name <serverName> required MCP server name key
1706
1787
  --global write to global user config (default)
1707
1788
  --local write to project config (where supported)
@@ -1720,7 +1801,7 @@ Usage:
1720
1801
  mcp-conf where --client <name> --name <serverName> [options]
1721
1802
 
1722
1803
  Options:
1723
- --client <name> cline | codex | claude | goose | cursor | windsurf | opencode | kilo | copilot | antigravity (repeatable)
1804
+ --client <name> cline | codex | claude | goose | cursor | windsurf | opencode | kilo | copilot | antigravity | crush (repeatable)
1724
1805
  --name <serverName> required MCP server name key
1725
1806
  --global write to global user config (default)
1726
1807
  --local write to project config (where supported)
@@ -1738,7 +1819,7 @@ Usage:
1738
1819
  mcp-conf show --client <name> --name <serverName> [options]
1739
1820
 
1740
1821
  Options:
1741
- --client <name> cline | codex | claude | goose | cursor | windsurf | opencode | kilo | copilot | antigravity (repeatable)
1822
+ --client <name> cline | codex | claude | goose | cursor | windsurf | opencode | kilo | copilot | antigravity | crush (repeatable)
1742
1823
  --name <serverName> required MCP server name key
1743
1824
  --global read from global user config (default)
1744
1825
  --local read from project config (where supported)
@@ -1757,7 +1838,7 @@ Usage:
1757
1838
  mcp-conf update --client <name> --name <serverName> [--env | --env-path <path> | --mcp <dest>] [options]
1758
1839
 
1759
1840
  Options:
1760
- --client <name> cline | codex | claude | goose | cursor | windsurf | opencode | kilo | copilot | antigravity (repeatable)
1841
+ --client <name> cline | codex | claude | goose | cursor | windsurf | opencode | kilo | copilot | antigravity | crush (repeatable)
1761
1842
  --name <serverName> required MCP server name key
1762
1843
  --env use current shell/session env vars (stdio only)
1763
1844
  --env-path <path> .env path (stdio only)
@@ -1782,7 +1863,7 @@ Usage:
1782
1863
  mcp-conf tui
1783
1864
 
1784
1865
  Description:
1785
- Start interactive setup wizard for ls/add/show/update/rm/enable/disable.
1866
+ Start interactive setup wizard for ls/show/add/update/rm/enable/disable.
1786
1867
  Flow: operation -> client -> scope (skips scope when only one is supported).
1787
1868
  For add/update + sse/http, wizard also asks timeout and repeatable headers.
1788
1869
  For rm/enable/disable/show/update, wizard selects server from existing entries.
@@ -24,6 +24,8 @@ mcp-conf add --client opencode --name abap --transport http --url http://localho
24
24
  mcp-conf add --client kilo --name abap --transport http --url http://localhost:3000/mcp/stream/http
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
+ mcp-conf add --client crush --name abap --mcp TRIAL
28
+ mcp-conf add --client crush --name abap --transport http --url http://localhost:3000/mcp/stream/http
27
29
  mcp-conf tui
28
30
  ```
29
31
 
@@ -49,6 +51,7 @@ Enable MCP:
49
51
  mcp-conf enable --client codex --name abap
50
52
  mcp-conf enable --client cline --name abap
51
53
  mcp-conf enable --client antigravity --name abap
54
+ mcp-conf enable --client crush --name abap
52
55
  ```
53
56
 
54
57
  Remove MCP:
@@ -57,6 +60,7 @@ mcp-conf rm --client codex --name abap
57
60
  mcp-conf rm --client cline --name abap
58
61
  mcp-conf rm --client claude --name abap
59
62
  mcp-conf rm --client antigravity --name abap
63
+ mcp-conf rm --client crush --name abap
60
64
  ```
61
65
 
62
66
  List MCP servers:
@@ -66,6 +70,8 @@ mcp-conf ls --client cline
66
70
  mcp-conf ls --client claude --local
67
71
  mcp-conf ls --client claude --all-projects
68
72
  mcp-conf ls --client antigravity --global
73
+ mcp-conf ls --client crush
74
+ mcp-conf ls --client crush --local
69
75
  ```
70
76
 
71
77
  Find where a server is defined:
@@ -86,8 +92,8 @@ mcp-conf tui
86
92
  - Controls: arrow keys + Enter, Ctrl+C to cancel.
87
93
 
88
94
  Options:
89
- - Commands: `add`, `rm`, `ls`, `enable`, `disable`, `where`, `show`, `update`, `tui` (first argument)
90
- - `--client <name>` (repeatable): `cline`, `codex`, `claude`, `goose`, `cursor`, `windsurf`, `opencode` (`kilo` alias), `copilot`, `antigravity`
95
+ - Commands: `add`, `rm`, `ls`, `show`, `enable`, `disable`, `where`, `update`, `tui` (first argument)
96
+ - `--client <name>` (repeatable): `cline`, `codex`, `claude`, `goose`, `cursor`, `windsurf`, `opencode` (`kilo` alias), `copilot`, `antigravity`, `crush`
91
97
  - `--env`: use shell/session environment variables (stdio only)
92
98
  - `--env-path <path>`: use a specific `.env` file (stdio only)
93
99
  - `--mcp <destination>`: use service key destination
@@ -95,7 +101,7 @@ Options:
95
101
  - `--transport <type>`: `stdio`, `sse`, or `http` (`http` maps to `streamableHttp`)
96
102
  - `--command <bin>`: command to run (default: `mcp-abap-adt`)
97
103
  - `--global`: write to the global user config (default)
98
- - `--local`: write to the project config (supported by `cursor`, `opencode`/`kilo`, `copilot`, `claude`, `codex`)
104
+ - `--local`: write to the project config (supported by `cursor`, `opencode`/`kilo`, `copilot`, `claude`, `codex`, `crush`)
99
105
  - `--all-projects`: for Claude (global scope), apply `rm/enable/disable/ls/where` across all projects
100
106
  - `--project <path>`: for Claude (global scope), target a specific project path
101
107
  - `--url <http(s)://...>`: required for `sse` and `http`
@@ -106,14 +112,14 @@ Options:
106
112
  Notes:
107
113
  - `disable` and `rm` do not require `--env`, `--env-path`, or `--mcp`.
108
114
  - `--env`/`--env-path`/`--mcp` are only valid for `stdio` transport. For `sse/http`, use `--url` and optional `--header`.
109
- - `mcp-conf tui` starts an interactive wizard for `ls`/`add`/`show`/`update`/`rm`/`enable`/`disable`.
115
+ - `mcp-conf tui` starts an interactive wizard for `ls`/`show`/`add`/`update`/`rm`/`enable`/`disable`.
110
116
  - Cursor/Copilot enable/disable are not implemented yet.
111
117
  - Antigravity enable/disable uses `disabled: true|false` on the entry.
112
118
  - Antigravity local scope is not supported yet; use `--global`.
113
119
  - Claude stores enable/disable state under `enabledMcpServers` and `disabledMcpServers` for each project.
114
120
  - Claude enable/disable always updates `~/.claude.json` (global scope), even if you pass `--local`.
115
121
  - Antigravity HTTP entries use `serverUrl` instead of `url`.
116
- - New entries for Cline, Codex, Windsurf, Goose, Claude, and OpenCode are added **disabled by default**. Use `enable` to turn them on.
122
+ - New entries for Cline, Codex, Windsurf, Goose, Claude, OpenCode, and Crush are added **disabled by default**. Use `enable` to turn them on.
117
123
  - Windsurf follows `disabled` like Cline. The configurator sets `disabled = true` for default-disabled entries.
118
124
  - `enable`/`disable` only work if the server entry already exists. Use add commands with `--env`, `--env-path`, or `--mcp` first.
119
125
  - Non-stdio transports are supported for Cline/Cursor/Windsurf/Claude/Goose. Codex supports `http` (streamable HTTP) but not `sse`.
@@ -156,6 +162,9 @@ Global (default) locations:
156
162
  - **Antigravity**:
157
163
  - Linux/macOS: `~/.gemini/antigravity/mcp_config.json`
158
164
  - Note: path is community-reported; verify against latest vendor docs.
165
+ - **Crush**:
166
+ - Linux/macOS: `~/.config/crush/crush.json`
167
+ - Windows: `%USERPROFILE%\AppData\Local\crush\crush.json`
159
168
 
160
169
  Local (project) locations:
161
170
  - **Claude Code**:
@@ -168,3 +177,5 @@ Local (project) locations:
168
177
  - Project: `./.vscode/mcp.json` (uses `servers.<name>` entries)
169
178
  - **Antigravity**:
170
179
  - Project: `./.antigravity/mcp.json` (community-reported; not supported yet)
180
+ - **Crush**:
181
+ - 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.0.10",
3
+ "version": "0.0.12",
4
4
  "description": "MCP client configurator for mcp-abap-adt and mcp-abap-adt-proxy",
5
5
  "license": "MIT",
6
6
  "repository": {