@mcp-abap-adt/configurator 0.0.10 → 0.0.11
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 +2 -0
- package/bin/mcp-conf-tui.js +1 -0
- package/bin/mcp-conf.js +74 -16
- package/docs/CLIENT_INSTALLERS.md +14 -3
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -20,6 +20,8 @@ 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
|
|
package/bin/mcp-conf-tui.js
CHANGED
package/bin/mcp-conf.js
CHANGED
|
@@ -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(
|
|
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 || {};
|
|
@@ -1439,6 +1492,11 @@ function inferTransport(clientType, entry, parsedArgs) {
|
|
|
1439
1492
|
if (clientType === "antigravity") {
|
|
1440
1493
|
return entry?.type === "http" ? "http" : "stdio";
|
|
1441
1494
|
}
|
|
1495
|
+
if (clientType === "crush") {
|
|
1496
|
+
if (entry?.type === "http") return "http";
|
|
1497
|
+
if (entry?.type === "sse") return "sse";
|
|
1498
|
+
return "stdio";
|
|
1499
|
+
}
|
|
1442
1500
|
if (entry?.type === "streamableHttp" || entry?.type === "http") {
|
|
1443
1501
|
return "http";
|
|
1444
1502
|
}
|
|
@@ -1619,7 +1677,7 @@ Usage:
|
|
|
1619
1677
|
mcp-conf add --client <name> --name <serverName> [--env | --env-path <path> | --mcp <dest>] [options]
|
|
1620
1678
|
|
|
1621
1679
|
Options:
|
|
1622
|
-
--client <name> cline | codex | claude | goose | cursor | windsurf | opencode | kilo | copilot | antigravity (repeatable)
|
|
1680
|
+
--client <name> cline | codex | claude | goose | cursor | windsurf | opencode | kilo | copilot | antigravity | crush (repeatable)
|
|
1623
1681
|
--name <serverName> required MCP server name key
|
|
1624
1682
|
--env use current shell/session env vars (stdio only)
|
|
1625
1683
|
--env-path <path> .env path (stdio only)
|
|
@@ -1646,7 +1704,7 @@ Usage:
|
|
|
1646
1704
|
mcp-conf rm --client <name> --name <serverName> [options]
|
|
1647
1705
|
|
|
1648
1706
|
Options:
|
|
1649
|
-
--client <name> cline | codex | claude | goose | cursor | windsurf | opencode | kilo | copilot | antigravity (repeatable)
|
|
1707
|
+
--client <name> cline | codex | claude | goose | cursor | windsurf | opencode | kilo | copilot | antigravity | crush (repeatable)
|
|
1650
1708
|
--name <serverName> required MCP server name key
|
|
1651
1709
|
--global write to global user config (default)
|
|
1652
1710
|
--local write to project config (where supported)
|
|
@@ -1665,7 +1723,7 @@ Usage:
|
|
|
1665
1723
|
mcp-conf ls --client <name> [options]
|
|
1666
1724
|
|
|
1667
1725
|
Options:
|
|
1668
|
-
--client <name> cline | codex | claude | goose | cursor | windsurf | opencode | kilo | copilot | antigravity (repeatable)
|
|
1726
|
+
--client <name> cline | codex | claude | goose | cursor | windsurf | opencode | kilo | copilot | antigravity | crush (repeatable)
|
|
1669
1727
|
--global write to global user config (default)
|
|
1670
1728
|
--local write to project config (where supported)
|
|
1671
1729
|
--all-projects Claude global: list across all projects
|
|
@@ -1682,7 +1740,7 @@ Usage:
|
|
|
1682
1740
|
mcp-conf enable --client <name> --name <serverName> [options]
|
|
1683
1741
|
|
|
1684
1742
|
Options:
|
|
1685
|
-
--client <name> cline | codex | claude | goose | cursor | windsurf | opencode | kilo | copilot | antigravity (repeatable)
|
|
1743
|
+
--client <name> cline | codex | claude | goose | cursor | windsurf | opencode | kilo | copilot | antigravity | crush (repeatable)
|
|
1686
1744
|
--name <serverName> required MCP server name key
|
|
1687
1745
|
--global write to global user config (default)
|
|
1688
1746
|
--local write to project config (where supported)
|
|
@@ -1701,7 +1759,7 @@ Usage:
|
|
|
1701
1759
|
mcp-conf disable --client <name> --name <serverName> [options]
|
|
1702
1760
|
|
|
1703
1761
|
Options:
|
|
1704
|
-
--client <name> cline | codex | claude | goose | cursor | windsurf | opencode | kilo | copilot | antigravity (repeatable)
|
|
1762
|
+
--client <name> cline | codex | claude | goose | cursor | windsurf | opencode | kilo | copilot | antigravity | crush (repeatable)
|
|
1705
1763
|
--name <serverName> required MCP server name key
|
|
1706
1764
|
--global write to global user config (default)
|
|
1707
1765
|
--local write to project config (where supported)
|
|
@@ -1720,7 +1778,7 @@ Usage:
|
|
|
1720
1778
|
mcp-conf where --client <name> --name <serverName> [options]
|
|
1721
1779
|
|
|
1722
1780
|
Options:
|
|
1723
|
-
--client <name> cline | codex | claude | goose | cursor | windsurf | opencode | kilo | copilot | antigravity (repeatable)
|
|
1781
|
+
--client <name> cline | codex | claude | goose | cursor | windsurf | opencode | kilo | copilot | antigravity | crush (repeatable)
|
|
1724
1782
|
--name <serverName> required MCP server name key
|
|
1725
1783
|
--global write to global user config (default)
|
|
1726
1784
|
--local write to project config (where supported)
|
|
@@ -1738,7 +1796,7 @@ Usage:
|
|
|
1738
1796
|
mcp-conf show --client <name> --name <serverName> [options]
|
|
1739
1797
|
|
|
1740
1798
|
Options:
|
|
1741
|
-
--client <name> cline | codex | claude | goose | cursor | windsurf | opencode | kilo | copilot | antigravity (repeatable)
|
|
1799
|
+
--client <name> cline | codex | claude | goose | cursor | windsurf | opencode | kilo | copilot | antigravity | crush (repeatable)
|
|
1742
1800
|
--name <serverName> required MCP server name key
|
|
1743
1801
|
--global read from global user config (default)
|
|
1744
1802
|
--local read from project config (where supported)
|
|
@@ -1757,7 +1815,7 @@ Usage:
|
|
|
1757
1815
|
mcp-conf update --client <name> --name <serverName> [--env | --env-path <path> | --mcp <dest>] [options]
|
|
1758
1816
|
|
|
1759
1817
|
Options:
|
|
1760
|
-
--client <name> cline | codex | claude | goose | cursor | windsurf | opencode | kilo | copilot | antigravity (repeatable)
|
|
1818
|
+
--client <name> cline | codex | claude | goose | cursor | windsurf | opencode | kilo | copilot | antigravity | crush (repeatable)
|
|
1761
1819
|
--name <serverName> required MCP server name key
|
|
1762
1820
|
--env use current shell/session env vars (stdio only)
|
|
1763
1821
|
--env-path <path> .env path (stdio only)
|
|
@@ -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:
|
|
@@ -87,7 +93,7 @@ mcp-conf tui
|
|
|
87
93
|
|
|
88
94
|
Options:
|
|
89
95
|
- 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`
|
|
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`
|
|
@@ -113,7 +119,7 @@ Notes:
|
|
|
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
|
|
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`)
|