@getmcp/cli 0.5.0 → 0.6.0

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.
Files changed (64) hide show
  1. package/README.md +77 -12
  2. package/dist/app-selection.d.ts +44 -0
  3. package/dist/app-selection.d.ts.map +1 -0
  4. package/dist/app-selection.js +99 -0
  5. package/dist/app-selection.js.map +1 -0
  6. package/dist/bin.js +54 -1
  7. package/dist/bin.js.map +1 -1
  8. package/dist/commands/add.d.ts +6 -0
  9. package/dist/commands/add.d.ts.map +1 -1
  10. package/dist/commands/add.js +215 -11
  11. package/dist/commands/add.js.map +1 -1
  12. package/dist/commands/check.d.ts +4 -1
  13. package/dist/commands/check.d.ts.map +1 -1
  14. package/dist/commands/check.js +44 -8
  15. package/dist/commands/check.js.map +1 -1
  16. package/dist/commands/doctor.d.ts +17 -0
  17. package/dist/commands/doctor.d.ts.map +1 -0
  18. package/dist/commands/doctor.js +179 -0
  19. package/dist/commands/doctor.js.map +1 -0
  20. package/dist/commands/import.d.ts +13 -0
  21. package/dist/commands/import.d.ts.map +1 -0
  22. package/dist/commands/import.js +148 -0
  23. package/dist/commands/import.js.map +1 -0
  24. package/dist/commands/list.d.ts +2 -0
  25. package/dist/commands/list.d.ts.map +1 -1
  26. package/dist/commands/list.js +75 -6
  27. package/dist/commands/list.js.map +1 -1
  28. package/dist/commands/remove.d.ts +3 -0
  29. package/dist/commands/remove.d.ts.map +1 -1
  30. package/dist/commands/remove.js +20 -8
  31. package/dist/commands/remove.js.map +1 -1
  32. package/dist/commands/sync.d.ts +19 -0
  33. package/dist/commands/sync.d.ts.map +1 -0
  34. package/dist/commands/sync.js +214 -0
  35. package/dist/commands/sync.js.map +1 -0
  36. package/dist/commands/update.d.ts +2 -0
  37. package/dist/commands/update.d.ts.map +1 -1
  38. package/dist/commands/update.js +3 -3
  39. package/dist/commands/update.js.map +1 -1
  40. package/dist/config-file.d.ts +4 -0
  41. package/dist/config-file.d.ts.map +1 -1
  42. package/dist/config-file.js +12 -1
  43. package/dist/config-file.js.map +1 -1
  44. package/dist/detect.d.ts +17 -7
  45. package/dist/detect.d.ts.map +1 -1
  46. package/dist/detect.js +40 -17
  47. package/dist/detect.js.map +1 -1
  48. package/dist/errors.d.ts +3 -1
  49. package/dist/errors.d.ts.map +1 -1
  50. package/dist/errors.js +8 -9
  51. package/dist/errors.js.map +1 -1
  52. package/dist/index.d.ts +1 -1
  53. package/dist/index.d.ts.map +1 -1
  54. package/dist/index.js +1 -1
  55. package/dist/index.js.map +1 -1
  56. package/dist/lock.d.ts +47 -1
  57. package/dist/lock.d.ts.map +1 -1
  58. package/dist/lock.js +36 -3
  59. package/dist/lock.js.map +1 -1
  60. package/dist/utils.d.ts +14 -0
  61. package/dist/utils.d.ts.map +1 -1
  62. package/dist/utils.js +49 -1
  63. package/dist/utils.js.map +1 -1
  64. package/package.json +4 -4
package/dist/index.d.ts CHANGED
@@ -11,7 +11,7 @@ export { findCommand } from "./commands/find.js";
11
11
  export { checkCommand } from "./commands/check.js";
12
12
  export { updateCommand } from "./commands/update.js";
13
13
  export { initCommand } from "./commands/init.js";
14
- export { detectApps, detectInstalledApps, resolvePath, getConfigPath } from "./detect.js";
14
+ export { detectApps, detectInstalledApps, resolveAppForScope } from "./detect.js";
15
15
  export { readConfigFile, writeConfigFile, mergeServerIntoConfig, removeServerFromConfig, listServersInConfig, } from "./config-file.js";
16
16
  export { getPreferencesPath, readPreferences, saveSelectedApps, getSavedSelectedApps, } from "./preferences.js";
17
17
  export { readLockFile, writeLockFile, trackInstallation, trackRemoval, getTrackedServers, getLockFilePath, } from "./lock.js";
@@ -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,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,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;AAC1B,OAAO,EACL,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,eAAe,GAChB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,EACL,QAAQ,EACR,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,GACZ,MAAM,aAAa,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,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAClF,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;AAC1B,OAAO,EACL,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,eAAe,GAChB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,EACL,QAAQ,EACR,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,GACZ,MAAM,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -11,7 +11,7 @@ export { findCommand } from "./commands/find.js";
11
11
  export { checkCommand } from "./commands/check.js";
12
12
  export { updateCommand } from "./commands/update.js";
13
13
  export { initCommand } from "./commands/init.js";
14
- export { detectApps, detectInstalledApps, resolvePath, getConfigPath } from "./detect.js";
14
+ export { detectApps, detectInstalledApps, resolveAppForScope } from "./detect.js";
15
15
  export { readConfigFile, writeConfigFile, mergeServerIntoConfig, removeServerFromConfig, listServersInConfig, } from "./config-file.js";
16
16
  export { getPreferencesPath, readPreferences, saveSelectedApps, getSavedSelectedApps, } from "./preferences.js";
17
17
  export { readLockFile, writeLockFile, trackInstallation, trackRemoval, getTrackedServers, getLockFilePath, } from "./lock.js";
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,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,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;AAC1B,OAAO,EACL,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,eAAe,GAChB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,EACL,QAAQ,EACR,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,GACZ,MAAM,aAAa,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,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAClF,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;AAC1B,OAAO,EACL,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,eAAe,GAChB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,EACL,QAAQ,EACR,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,GACZ,MAAM,aAAa,CAAC"}
package/dist/lock.d.ts CHANGED
@@ -6,6 +6,7 @@
6
6
  *
7
7
  * Lock file location: ./getmcp-lock.json (project root)
8
8
  */
9
+ import { z } from "zod";
9
10
  import type { AppIdType } from "@getmcp/core";
10
11
  export interface LockInstallation {
11
12
  /** App IDs this server is installed in */
@@ -16,11 +17,54 @@ export interface LockInstallation {
16
17
  updatedAt: string;
17
18
  /** Env var names that were set (values NOT stored for security) */
18
19
  envVars: string[];
20
+ /** Per-app installation scope (missing entry = "project" for backwards compat) */
21
+ scopes?: Partial<Record<string, "project" | "global">>;
19
22
  }
20
23
  export interface LockFile {
21
24
  version: 1;
22
25
  installations: Record<string, LockInstallation>;
23
26
  }
27
+ declare const LockFileSchema: z.ZodObject<{
28
+ version: z.ZodLiteral<1>;
29
+ installations: z.ZodRecord<z.ZodString, z.ZodObject<{
30
+ apps: z.ZodArray<z.ZodString, "many">;
31
+ installedAt: z.ZodString;
32
+ updatedAt: z.ZodString;
33
+ envVars: z.ZodArray<z.ZodString, "many">;
34
+ scopes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<["project", "global"]>>>;
35
+ }, "strip", z.ZodTypeAny, {
36
+ apps: string[];
37
+ installedAt: string;
38
+ updatedAt: string;
39
+ envVars: string[];
40
+ scopes?: Record<string, "project" | "global"> | undefined;
41
+ }, {
42
+ apps: string[];
43
+ installedAt: string;
44
+ updatedAt: string;
45
+ envVars: string[];
46
+ scopes?: Record<string, "project" | "global"> | undefined;
47
+ }>>;
48
+ }, "strip", z.ZodTypeAny, {
49
+ version: 1;
50
+ installations: Record<string, {
51
+ apps: string[];
52
+ installedAt: string;
53
+ updatedAt: string;
54
+ envVars: string[];
55
+ scopes?: Record<string, "project" | "global"> | undefined;
56
+ }>;
57
+ }, {
58
+ version: 1;
59
+ installations: Record<string, {
60
+ apps: string[];
61
+ installedAt: string;
62
+ updatedAt: string;
63
+ envVars: string[];
64
+ scopes?: Record<string, "project" | "global"> | undefined;
65
+ }>;
66
+ }>;
67
+ export { LockFileSchema };
24
68
  /**
25
69
  * Get the path for the project-level lock file.
26
70
  */
@@ -35,8 +79,10 @@ export declare function readLockFile(filePath?: string): LockFile;
35
79
  export declare function writeLockFile(lock: LockFile, filePath?: string): void;
36
80
  /**
37
81
  * Record an installation of a server to one or more apps.
82
+ *
83
+ * @param scopes - Per-app scope map. Only apps with non-"project" scope need entries.
38
84
  */
39
- export declare function trackInstallation(serverId: string, appIds: AppIdType[], envVarNames: string[], filePath?: string): void;
85
+ export declare function trackInstallation(serverId: string, appIds: AppIdType[], envVarNames: string[], filePath?: string, scopes?: Partial<Record<string, "project" | "global">>): void;
40
86
  /**
41
87
  * Record the removal of a server from one or more apps.
42
88
  * Removes the entire entry if no apps remain.
@@ -1 +1 @@
1
- {"version":3,"file":"lock.d.ts","sourceRoot":"","sources":["../src/lock.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAM9C,MAAM,WAAW,gBAAgB;IAC/B,0CAA0C;IAC1C,IAAI,EAAE,SAAS,EAAE,CAAC;IAClB,oCAAoC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,mEAAmE;IACnE,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,CAAC,CAAC;IACX,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CACjD;AAMD;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAMD;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,CAoBxD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CASrE;AAMD;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,SAAS,EAAE,EACnB,WAAW,EAAE,MAAM,EAAE,EACrB,QAAQ,CAAC,EAAE,MAAM,GAChB,IAAI,CAuBN;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAe3F;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,CAE7D"}
1
+ {"version":3,"file":"lock.d.ts","sourceRoot":"","sources":["../src/lock.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAM9C,MAAM,WAAW,gBAAgB;IAC/B,0CAA0C;IAC1C,IAAI,EAAE,SAAS,EAAE,CAAC;IAClB,oCAAoC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,mEAAmE;IACnE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,kFAAkF;IAClF,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC;CACxD;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,CAAC,CAAC;IACX,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CACjD;AAcD,QAAA,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGlB,CAAC;AAEH,OAAO,EAAE,cAAc,EAAE,CAAC;AAM1B;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAMD;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,CAqBxD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CASrE;AAMD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,SAAS,EAAE,EACnB,WAAW,EAAE,MAAM,EAAE,EACrB,QAAQ,CAAC,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC,CAAC,GACrD,IAAI,CA4BN;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAyB3F;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,CAE7D"}
package/dist/lock.js CHANGED
@@ -8,6 +8,22 @@
8
8
  */
9
9
  import * as fs from "node:fs";
10
10
  import * as path from "node:path";
11
+ import { z } from "zod";
12
+ // ---------------------------------------------------------------------------
13
+ // Validation schema
14
+ // ---------------------------------------------------------------------------
15
+ const LockInstallationSchema = z.object({
16
+ apps: z.array(z.string()),
17
+ installedAt: z.string(),
18
+ updatedAt: z.string(),
19
+ envVars: z.array(z.string()),
20
+ scopes: z.record(z.enum(["project", "global"])).optional(),
21
+ });
22
+ const LockFileSchema = z.object({
23
+ version: z.literal(1),
24
+ installations: z.record(LockInstallationSchema),
25
+ });
26
+ export { LockFileSchema };
11
27
  // ---------------------------------------------------------------------------
12
28
  // Path resolution
13
29
  // ---------------------------------------------------------------------------
@@ -33,10 +49,11 @@ export function readLockFile(filePath) {
33
49
  if (!raw.trim())
34
50
  return { version: 1, installations: {} };
35
51
  const parsed = JSON.parse(raw);
36
- if (typeof parsed !== "object" || parsed === null || parsed.version !== 1) {
52
+ const result = LockFileSchema.safeParse(parsed);
53
+ if (!result.success) {
37
54
  return { version: 1, installations: {} };
38
55
  }
39
- return parsed;
56
+ return result.data;
40
57
  }
41
58
  catch {
42
59
  return { version: 1, installations: {} };
@@ -58,8 +75,10 @@ export function writeLockFile(lock, filePath) {
58
75
  // ---------------------------------------------------------------------------
59
76
  /**
60
77
  * Record an installation of a server to one or more apps.
78
+ *
79
+ * @param scopes - Per-app scope map. Only apps with non-"project" scope need entries.
61
80
  */
62
- export function trackInstallation(serverId, appIds, envVarNames, filePath) {
81
+ export function trackInstallation(serverId, appIds, envVarNames, filePath, scopes) {
63
82
  const lock = readLockFile(filePath);
64
83
  const now = new Date().toISOString();
65
84
  const existing = lock.installations[serverId];
@@ -71,6 +90,10 @@ export function trackInstallation(serverId, appIds, envVarNames, filePath) {
71
90
  // Merge env var names
72
91
  const allEnv = new Set([...existing.envVars, ...envVarNames]);
73
92
  existing.envVars = [...allEnv];
93
+ // Merge per-app scopes
94
+ if (scopes) {
95
+ existing.scopes = { ...existing.scopes, ...scopes };
96
+ }
74
97
  }
75
98
  else {
76
99
  lock.installations[serverId] = {
@@ -78,6 +101,7 @@ export function trackInstallation(serverId, appIds, envVarNames, filePath) {
78
101
  installedAt: now,
79
102
  updatedAt: now,
80
103
  envVars: envVarNames,
104
+ ...(scopes && Object.keys(scopes).length > 0 ? { scopes } : {}),
81
105
  };
82
106
  }
83
107
  writeLockFile(lock, filePath);
@@ -94,6 +118,15 @@ export function trackRemoval(serverId, appIds, filePath) {
94
118
  const removeSet = new Set(appIds);
95
119
  existing.apps = existing.apps.filter((a) => !removeSet.has(a));
96
120
  existing.updatedAt = new Date().toISOString();
121
+ // Clean up scopes for removed apps
122
+ if (existing.scopes) {
123
+ for (const appId of appIds) {
124
+ delete existing.scopes[appId];
125
+ }
126
+ if (Object.keys(existing.scopes).length === 0) {
127
+ delete existing.scopes;
128
+ }
129
+ }
97
130
  if (existing.apps.length === 0) {
98
131
  delete lock.installations[serverId];
99
132
  }
package/dist/lock.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"lock.js","sourceRoot":"","sources":["../src/lock.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lock.js","sourceRoot":"","sources":["../src/lock.ts"],"names":[],"mappings":"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"}
package/dist/utils.d.ts CHANGED
@@ -1,6 +1,13 @@
1
1
  /**
2
2
  * CLI utility functions.
3
3
  */
4
+ /**
5
+ * Check if the CLI is running in non-interactive mode.
6
+ * Non-interactive when --yes is passed or stdin is not a TTY.
7
+ */
8
+ export declare function isNonInteractive(opts: {
9
+ yes?: boolean;
10
+ }): boolean;
4
11
  /**
5
12
  * Shorten a file path for display by replacing the home directory with `~`
6
13
  * and the current working directory with `.`.
@@ -18,6 +25,13 @@ export interface CliFlags {
18
25
  installed: boolean;
19
26
  search?: string;
20
27
  category?: string;
28
+ json: boolean;
29
+ quiet: boolean;
30
+ fromNpm?: string;
31
+ fromPypi?: string;
32
+ fromUrl?: string;
33
+ global: boolean;
34
+ project: boolean;
21
35
  help: boolean;
22
36
  version: boolean;
23
37
  }
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH;;;GAGG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAepD;AAED;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,OAAO,CAAC;IACb,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,QAAQ,CAAC;CACjB,CAgDA;AAwBD,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEhE"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAEjE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAepD;AAED;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,OAAO,CAAC;IACb,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,QAAQ,CAAC;CACjB,CA2EA;AA4BD,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEhE"}
package/dist/utils.js CHANGED
@@ -3,6 +3,13 @@
3
3
  */
4
4
  import * as os from "node:os";
5
5
  import * as path from "node:path";
6
+ /**
7
+ * Check if the CLI is running in non-interactive mode.
8
+ * Non-interactive when --yes is passed or stdin is not a TTY.
9
+ */
10
+ export function isNonInteractive(opts) {
11
+ return !!opts.yes || !process.stdin.isTTY;
12
+ }
6
13
  /**
7
14
  * Shorten a file path for display by replacing the home directory with `~`
8
15
  * and the current working directory with `.`.
@@ -13,7 +20,7 @@ export function shortenPath(filePath) {
13
20
  const home = os.homedir();
14
21
  // Replace CWD first (more specific), then HOME
15
22
  if (normalized.startsWith(cwd + path.sep) || normalized === cwd) {
16
- return "." + normalized.slice(cwd.length);
23
+ return "." + normalized.slice(cwd.length).replace(/\\/g, "/");
17
24
  }
18
25
  if (normalized.startsWith(home + path.sep) || normalized === home) {
19
26
  return "~" + normalized.slice(home.length).replace(/\\/g, "/");
@@ -27,6 +34,10 @@ export function parseFlags(argv) {
27
34
  allApps: false,
28
35
  dryRun: false,
29
36
  installed: false,
37
+ json: false,
38
+ quiet: false,
39
+ global: false,
40
+ project: false,
30
41
  help: false,
31
42
  version: false,
32
43
  };
@@ -60,6 +71,39 @@ export function parseFlags(argv) {
60
71
  else if (arg.startsWith("--category=")) {
61
72
  flags.category = arg.slice("--category=".length);
62
73
  }
74
+ else if (arg.startsWith("--from-npm=")) {
75
+ flags.fromNpm = arg.slice("--from-npm=".length);
76
+ }
77
+ else if (arg === "--from-npm" && i + 1 < argv.length) {
78
+ i++;
79
+ flags.fromNpm = argv[i];
80
+ }
81
+ else if (arg.startsWith("--from-pypi=")) {
82
+ flags.fromPypi = arg.slice("--from-pypi=".length);
83
+ }
84
+ else if (arg === "--from-pypi" && i + 1 < argv.length) {
85
+ i++;
86
+ flags.fromPypi = argv[i];
87
+ }
88
+ else if (arg.startsWith("--from-url=")) {
89
+ flags.fromUrl = arg.slice("--from-url=".length);
90
+ }
91
+ else if (arg === "--from-url" && i + 1 < argv.length) {
92
+ i++;
93
+ flags.fromUrl = argv[i];
94
+ }
95
+ else if (arg === "--json") {
96
+ flags.json = true;
97
+ }
98
+ else if (arg === "--quiet" || arg === "-q") {
99
+ flags.quiet = true;
100
+ }
101
+ else if (arg === "--global" || arg === "-g") {
102
+ flags.global = true;
103
+ }
104
+ else if (arg === "--project") {
105
+ flags.project = true;
106
+ }
63
107
  else if (arg === "--help" || arg === "-h") {
64
108
  flags.help = true;
65
109
  }
@@ -94,6 +138,10 @@ const COMMAND_ALIASES = {
94
138
  check: "check",
95
139
  update: "update",
96
140
  init: "init",
141
+ doctor: "doctor",
142
+ dr: "doctor",
143
+ import: "import",
144
+ sync: "sync",
97
145
  };
98
146
  export function resolveAlias(command) {
99
147
  return COMMAND_ALIASES[command];
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,QAAgB;IAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAE1B,+CAA+C;IAC/C,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;QAChE,OAAO,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QAClE,OAAO,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAkBD,MAAM,UAAU,UAAU,CAAC,IAAc;IAKvC,MAAM,KAAK,GAAa;QACtB,GAAG,EAAE,KAAK;QACV,IAAI,EAAE,EAAE;QACR,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,KAAK;QACb,SAAS,EAAE,KAAK;QAChB,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,KAAK;KACf,CAAC;IAEF,IAAI,OAA2B,CAAC;IAChC,IAAI,QAA4B,CAAC;IACjC,MAAM,WAAW,GAAa,EAAE,CAAC;IAEjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAEpB,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACpC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;QACnB,CAAC;aAAM,IAAI,GAAG,KAAK,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YAClD,CAAC,EAAE,CAAC;YACJ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC;aAAM,IAAI,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9C,CAAC;aAAM,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;YAChC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;QACvB,CAAC;aAAM,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YAC/B,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;QACtB,CAAC;aAAM,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;YACjC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;QACzB,CAAC;aAAM,IAAI,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YACvC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC/C,CAAC;aAAM,IAAI,GAAG,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YACzC,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACnD,CAAC;aAAM,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAC5C,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;QACpB,CAAC;aAAM,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAC/C,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;QACvB,CAAC;aAAM,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAChC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IACzB,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IAE1B,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,eAAe,GAA2B;IAC9C,GAAG,EAAE,KAAK;IACV,OAAO,EAAE,KAAK;IACd,CAAC,EAAE,KAAK;IACR,MAAM,EAAE,QAAQ;IAChB,EAAE,EAAE,QAAQ;IACZ,CAAC,EAAE,QAAQ;IACX,SAAS,EAAE,QAAQ;IACnB,IAAI,EAAE,MAAM;IACZ,EAAE,EAAE,MAAM;IACV,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,MAAM;IACd,CAAC,EAAE,MAAM;IACT,CAAC,EAAE,MAAM;IACT,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;CACb,CAAC;AAEF,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,OAAO,eAAe,CAAC,OAAO,CAAC,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.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.5.0",
3
+ "version": "0.6.0",
4
4
  "description": "CLI tool to install MCP servers into any AI application with one command",
5
5
  "keywords": [
6
6
  "ai-tools",
@@ -55,9 +55,9 @@
55
55
  },
56
56
  "dependencies": {
57
57
  "@clack/prompts": "^1.0.1",
58
- "@getmcp/core": "^0.1.0",
59
- "@getmcp/generators": "^0.1.0",
60
- "@getmcp/registry": "^0.1.0",
58
+ "@getmcp/core": "*",
59
+ "@getmcp/generators": "*",
60
+ "@getmcp/registry": "*",
61
61
  "smol-toml": "^1.6.0",
62
62
  "yaml": "^2.8.2"
63
63
  },