@getmcp/cli 0.1.2 → 0.1.4
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/dist/commands/add.d.ts.map +1 -1
- package/dist/commands/add.js +34 -8
- package/dist/commands/add.js.map +1 -1
- package/dist/detect.d.ts +1 -0
- package/dist/detect.d.ts.map +1 -1
- package/dist/detect.js +1 -0
- package/dist/detect.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/preferences.d.ts +33 -0
- package/dist/preferences.d.ts.map +1 -0
- package/dist/preferences.js +76 -0
- package/dist/preferences.js.map +1 -0
- package/package.json +1 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAeH,wBAAsB,UAAU,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuIpE"}
|
package/dist/commands/add.js
CHANGED
|
@@ -13,8 +13,9 @@ import { select, checkbox, input } from "@inquirer/prompts";
|
|
|
13
13
|
import { getAllServers, getServer, searchServers, } from "@getmcp/registry";
|
|
14
14
|
import { getGenerator } from "@getmcp/generators";
|
|
15
15
|
import { isStdioConfig } from "@getmcp/core";
|
|
16
|
-
import {
|
|
16
|
+
import { detectApps } from "../detect.js";
|
|
17
17
|
import { mergeServerIntoConfig, writeConfigFile } from "../config-file.js";
|
|
18
|
+
import { getSavedSelectedApps, saveSelectedApps } from "../preferences.js";
|
|
18
19
|
export async function addCommand(serverIdArg) {
|
|
19
20
|
// Step 1: Select server
|
|
20
21
|
let entry;
|
|
@@ -69,24 +70,41 @@ export async function addCommand(serverIdArg) {
|
|
|
69
70
|
}
|
|
70
71
|
console.log();
|
|
71
72
|
}
|
|
72
|
-
// Step 3: Detect
|
|
73
|
-
const
|
|
74
|
-
|
|
73
|
+
// Step 3: Detect apps and build selection list
|
|
74
|
+
const allApps = detectApps();
|
|
75
|
+
const detected = allApps.filter((app) => app.exists);
|
|
76
|
+
const notDetectedProjectScoped = allApps.filter((app) => !app.exists && app.scope === "project");
|
|
77
|
+
if (detected.length === 0 && notDetectedProjectScoped.length === 0) {
|
|
75
78
|
console.log("No AI applications detected on this system.");
|
|
76
79
|
console.log("You can manually copy the config from below:\n");
|
|
77
80
|
printManualConfig(entry, config);
|
|
78
81
|
return;
|
|
79
82
|
}
|
|
80
83
|
// Step 4: Select target apps
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
+
// On first run (no saved preferences), detected apps are pre-checked and
|
|
85
|
+
// project-scoped non-detected apps are unchecked.
|
|
86
|
+
// On subsequent runs, the previously selected apps are pre-checked instead.
|
|
87
|
+
const savedApps = getSavedSelectedApps();
|
|
88
|
+
const hasSavedPreferences = savedApps !== null;
|
|
89
|
+
const choices = [
|
|
90
|
+
...detected.map((app) => ({
|
|
91
|
+
name: app.name,
|
|
92
|
+
value: app,
|
|
93
|
+
checked: hasSavedPreferences ? savedApps.includes(app.id) : true,
|
|
94
|
+
})),
|
|
95
|
+
...notDetectedProjectScoped.map((app) => ({
|
|
84
96
|
name: app.name,
|
|
85
97
|
value: app,
|
|
86
|
-
checked:
|
|
98
|
+
checked: hasSavedPreferences ? savedApps.includes(app.id) : false,
|
|
87
99
|
})),
|
|
100
|
+
].sort((a, b) => Number(b.checked) - Number(a.checked));
|
|
101
|
+
const selectedApps = await checkbox({
|
|
102
|
+
message: "Select apps to configure:",
|
|
103
|
+
choices,
|
|
88
104
|
validate: (selected) => selected.length > 0 ? true : "Select at least one app",
|
|
89
105
|
});
|
|
106
|
+
// Save selected apps for next run
|
|
107
|
+
saveSelectedApps(selectedApps.map((app) => app.id));
|
|
90
108
|
// Step 5+6: Generate and merge for each selected app
|
|
91
109
|
for (const app of selectedApps) {
|
|
92
110
|
try {
|
|
@@ -106,6 +124,14 @@ export async function addCommand(serverIdArg) {
|
|
|
106
124
|
if (needsRestart) {
|
|
107
125
|
console.log("Note: Some apps may need to be restarted to pick up changes.");
|
|
108
126
|
}
|
|
127
|
+
// PyCharm-specific warning: plugin requirement + restart
|
|
128
|
+
const hasPycharm = selectedApps.some((a) => a.id === "pycharm");
|
|
129
|
+
if (hasPycharm) {
|
|
130
|
+
console.log("\nImportant: MCP servers in PyCharm require the JetBrains AI Assistant plugin:" +
|
|
131
|
+
"\n https://plugins.jetbrains.com/plugin/22282-jetbrains-ai-assistant" +
|
|
132
|
+
"\n\nPyCharm must be closed and reopened for MCP configuration changes to take effect." +
|
|
133
|
+
"\nThe new servers will not appear until you restart the IDE.");
|
|
134
|
+
}
|
|
109
135
|
}
|
|
110
136
|
function printManualConfig(entry, config) {
|
|
111
137
|
// Show the canonical format
|
package/dist/commands/add.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"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"}
|
package/dist/detect.d.ts
CHANGED
package/dist/detect.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3D;;GAEG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAqBtD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,CAKlE;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,SAAS,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3D;;GAEG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAqBtD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,GAAG,SAAS,CAKlE;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,SAAS,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,SAAS,GAAG,QAAQ,CAAC;CAC7B;AAED;;;GAGG;AACH,wBAAgB,UAAU,IAAI,WAAW,EAAE,CAsB1C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,WAAW,EAAE,CAEnD"}
|
package/dist/detect.js
CHANGED
package/dist/detect.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detect.js","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,UAAkB;IAC5C,IAAI,QAAQ,GAAG,UAAU,CAAC;IAE1B,qBAAqB;IACrB,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,sCAAsC;IACtC,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IAEjH,+BAA+B;IAC/B,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IAE7D,yCAAyC;IACzC,QAAQ,GAAG,QAAQ,CAAC,OAAO,CACzB,kBAAkB,EAClB,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,CACxE,CAAC;IAEF,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAClC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,GAAgB;IAC5C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAwC,CAAC;IAClE,MAAM,UAAU,GAAG,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC7C,IAAI,CAAC,UAAU;QAAE,OAAO,SAAS,CAAC;IAClC,OAAO,WAAW,CAAC,UAAU,CAAC,CAAC;AACjC,CAAC;
|
|
1
|
+
{"version":3,"file":"detect.js","sourceRoot":"","sources":["../src/detect.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,UAAkB;IAC5C,IAAI,QAAQ,GAAG,UAAU,CAAC;IAE1B,qBAAqB;IACrB,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,sCAAsC;IACtC,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IAEjH,+BAA+B;IAC/B,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IAE7D,yCAAyC;IACzC,QAAQ,GAAG,QAAQ,CAAC,OAAO,CACzB,kBAAkB,EAClB,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,CACxE,CAAC;IAEF,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AAClC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,GAAgB;IAC5C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAwC,CAAC;IAClE,MAAM,UAAU,GAAG,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC7C,IAAI,CAAC,UAAU;QAAE,OAAO,SAAS,CAAC;IAClC,OAAO,WAAW,CAAC,UAAU,CAAC,CAAC;AACjC,CAAC;AAUD;;;GAGG;AACH,MAAM,UAAU,UAAU;IACxB,MAAM,OAAO,GAAkB,EAAE,CAAC;IAElC,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;QAClD,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,CAAC,UAAU;YAAE,SAAS;QAE1B,yEAAyE;QACzE,kEAAkE;QAClE,MAAM,UAAU,GAAG,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC7C,MAAM,YAAY,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QAE7D,OAAO,CAAC,IAAI,CAAC;YACX,EAAE,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE;YACpB,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI;YACxB,UAAU;YACV,MAAM,EAAE,UAAU,IAAI,YAAY;YAClC,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,KAAK;SAC3B,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO,UAAU,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAClD,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -9,4 +9,5 @@ export { removeCommand } from "./commands/remove.js";
|
|
|
9
9
|
export { listCommand } from "./commands/list.js";
|
|
10
10
|
export { detectApps, detectInstalledApps, resolvePath, getConfigPath } from "./detect.js";
|
|
11
11
|
export { readConfigFile, writeConfigFile, mergeServerIntoConfig, removeServerFromConfig, listServersInConfig, } from "./config-file.js";
|
|
12
|
+
export { getPreferencesPath, readPreferences, saveSelectedApps, getSavedSelectedApps, } from "./preferences.js";
|
|
12
13
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC1F,OAAO,EACL,cAAc,EACd,eAAe,EACf,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC1F,OAAO,EACL,cAAc,EACd,eAAe,EACf,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -9,4 +9,5 @@ export { removeCommand } from "./commands/remove.js";
|
|
|
9
9
|
export { listCommand } from "./commands/list.js";
|
|
10
10
|
export { detectApps, detectInstalledApps, resolvePath, getConfigPath } from "./detect.js";
|
|
11
11
|
export { readConfigFile, writeConfigFile, mergeServerIntoConfig, removeServerFromConfig, listServersInConfig, } from "./config-file.js";
|
|
12
|
+
export { getPreferencesPath, readPreferences, saveSelectedApps, getSavedSelectedApps, } from "./preferences.js";
|
|
12
13
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC1F,OAAO,EACL,cAAc,EACd,eAAe,EACf,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC1F,OAAO,EACL,cAAc,EACd,eAAe,EACf,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI preferences persistence.
|
|
3
|
+
*
|
|
4
|
+
* Remembers user choices (e.g. selected apps) across CLI invocations.
|
|
5
|
+
* Stored in a platform-specific config directory:
|
|
6
|
+
* - Windows: %AppData%/getmcp/preferences.json
|
|
7
|
+
* - macOS/Linux: ~/.config/getmcp/preferences.json
|
|
8
|
+
*/
|
|
9
|
+
import type { AppIdType } from "@getmcp/core";
|
|
10
|
+
interface Preferences {
|
|
11
|
+
selectedApps?: AppIdType[];
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Get the platform-specific path for the preferences file.
|
|
15
|
+
*/
|
|
16
|
+
export declare function getPreferencesPath(): string;
|
|
17
|
+
/**
|
|
18
|
+
* Read the preferences file.
|
|
19
|
+
* Returns an empty object if the file doesn't exist or is corrupt.
|
|
20
|
+
*/
|
|
21
|
+
export declare function readPreferences(filePath?: string): Preferences;
|
|
22
|
+
/**
|
|
23
|
+
* Save the list of selected app IDs to the preferences file.
|
|
24
|
+
* Creates parent directories if they don't exist.
|
|
25
|
+
*/
|
|
26
|
+
export declare function saveSelectedApps(appIds: AppIdType[], filePath?: string): void;
|
|
27
|
+
/**
|
|
28
|
+
* Get the previously saved list of selected app IDs.
|
|
29
|
+
* Returns null if no preferences exist yet (first run).
|
|
30
|
+
*/
|
|
31
|
+
export declare function getSavedSelectedApps(filePath?: string): AppIdType[] | null;
|
|
32
|
+
export {};
|
|
33
|
+
//# sourceMappingURL=preferences.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preferences.d.ts","sourceRoot":"","sources":["../src/preferences.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,UAAU,WAAW;IACnB,YAAY,CAAC,EAAE,SAAS,EAAE,CAAC;CAC5B;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAW3C;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,CAAC,EAAE,MAAM,GAChB,WAAW,CAgCb;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,SAAS,EAAE,EACnB,QAAQ,CAAC,EAAE,MAAM,GAChB,IAAI,CAgBN;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,CAAC,EAAE,MAAM,GAChB,SAAS,EAAE,GAAG,IAAI,CAGpB"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI preferences persistence.
|
|
3
|
+
*
|
|
4
|
+
* Remembers user choices (e.g. selected apps) across CLI invocations.
|
|
5
|
+
* Stored in a platform-specific config directory:
|
|
6
|
+
* - Windows: %AppData%/getmcp/preferences.json
|
|
7
|
+
* - macOS/Linux: ~/.config/getmcp/preferences.json
|
|
8
|
+
*/
|
|
9
|
+
import * as fs from "node:fs";
|
|
10
|
+
import * as path from "node:path";
|
|
11
|
+
import * as os from "node:os";
|
|
12
|
+
/**
|
|
13
|
+
* Get the platform-specific path for the preferences file.
|
|
14
|
+
*/
|
|
15
|
+
export function getPreferencesPath() {
|
|
16
|
+
if (process.platform === "win32") {
|
|
17
|
+
const appData = process.env.APPDATA ?? path.join(os.homedir(), "AppData", "Roaming");
|
|
18
|
+
return path.join(appData, "getmcp", "preferences.json");
|
|
19
|
+
}
|
|
20
|
+
// macOS and Linux: use XDG_CONFIG_HOME or ~/.config
|
|
21
|
+
const configDir = process.env.XDG_CONFIG_HOME ?? path.join(os.homedir(), ".config");
|
|
22
|
+
return path.join(configDir, "getmcp", "preferences.json");
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Read the preferences file.
|
|
26
|
+
* Returns an empty object if the file doesn't exist or is corrupt.
|
|
27
|
+
*/
|
|
28
|
+
export function readPreferences(filePath) {
|
|
29
|
+
const prefsPath = filePath ?? getPreferencesPath();
|
|
30
|
+
if (!fs.existsSync(prefsPath)) {
|
|
31
|
+
return {};
|
|
32
|
+
}
|
|
33
|
+
try {
|
|
34
|
+
const raw = fs.readFileSync(prefsPath, "utf-8");
|
|
35
|
+
if (!raw.trim())
|
|
36
|
+
return {};
|
|
37
|
+
const parsed = JSON.parse(raw);
|
|
38
|
+
// Basic validation: must be an object
|
|
39
|
+
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
|
|
40
|
+
return {};
|
|
41
|
+
}
|
|
42
|
+
// Validate selectedApps if present
|
|
43
|
+
if (parsed.selectedApps !== undefined &&
|
|
44
|
+
(!Array.isArray(parsed.selectedApps) ||
|
|
45
|
+
!parsed.selectedApps.every((v) => typeof v === "string"))) {
|
|
46
|
+
return {};
|
|
47
|
+
}
|
|
48
|
+
return parsed;
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return {};
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Save the list of selected app IDs to the preferences file.
|
|
56
|
+
* Creates parent directories if they don't exist.
|
|
57
|
+
*/
|
|
58
|
+
export function saveSelectedApps(appIds, filePath) {
|
|
59
|
+
const prefsPath = filePath ?? getPreferencesPath();
|
|
60
|
+
const existing = readPreferences(prefsPath);
|
|
61
|
+
existing.selectedApps = appIds;
|
|
62
|
+
const dir = path.dirname(prefsPath);
|
|
63
|
+
if (!fs.existsSync(dir)) {
|
|
64
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
65
|
+
}
|
|
66
|
+
fs.writeFileSync(prefsPath, JSON.stringify(existing, null, 2) + "\n", "utf-8");
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Get the previously saved list of selected app IDs.
|
|
70
|
+
* Returns null if no preferences exist yet (first run).
|
|
71
|
+
*/
|
|
72
|
+
export function getSavedSelectedApps(filePath) {
|
|
73
|
+
const prefs = readPreferences(filePath);
|
|
74
|
+
return prefs.selectedApps ?? null;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=preferences.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preferences.js","sourceRoot":"","sources":["../src/preferences.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@getmcp/cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"description": "CLI tool to install MCP servers into any AI application with one command",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -21,7 +21,6 @@
|
|
|
21
21
|
],
|
|
22
22
|
"scripts": {
|
|
23
23
|
"build": "tsc",
|
|
24
|
-
"test": "vitest run",
|
|
25
24
|
"lint": "tsc --noEmit",
|
|
26
25
|
"prepublishOnly": "npm run build"
|
|
27
26
|
},
|