@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 +3 -1
- package/bin/mcp-conf-tui.js +2 -1
- package/bin/mcp-conf.js +106 -25
- package/docs/CLIENT_INSTALLERS.md +16 -5
- package/package.json +1 -1
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`/`
|
|
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.
|
package/bin/mcp-conf-tui.js
CHANGED
|
@@ -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", "
|
|
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", "
|
|
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", "
|
|
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 |
|
|
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(
|
|
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 (
|
|
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|
|
|
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/
|
|
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`, `
|
|
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`/`
|
|
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
|
|
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`)
|