@getmcp/cli 0.1.5 → 0.3.1

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 (56) hide show
  1. package/README.md +144 -20
  2. package/dist/bin.d.ts +7 -5
  3. package/dist/bin.d.ts.map +1 -1
  4. package/dist/bin.js +88 -28
  5. package/dist/bin.js.map +1 -1
  6. package/dist/commands/add.d.ts +10 -1
  7. package/dist/commands/add.d.ts.map +1 -1
  8. package/dist/commands/add.js +208 -71
  9. package/dist/commands/add.js.map +1 -1
  10. package/dist/commands/check.d.ts +9 -0
  11. package/dist/commands/check.d.ts.map +1 -0
  12. package/dist/commands/check.js +76 -0
  13. package/dist/commands/check.js.map +1 -0
  14. package/dist/commands/find.d.ts +10 -0
  15. package/dist/commands/find.d.ts.map +1 -0
  16. package/dist/commands/find.js +83 -0
  17. package/dist/commands/find.js.map +1 -0
  18. package/dist/commands/init.d.ts +8 -0
  19. package/dist/commands/init.d.ts.map +1 -0
  20. package/dist/commands/init.js +257 -0
  21. package/dist/commands/init.js.map +1 -0
  22. package/dist/commands/list.d.ts.map +1 -1
  23. package/dist/commands/list.js +25 -27
  24. package/dist/commands/list.js.map +1 -1
  25. package/dist/commands/remove.d.ts +9 -1
  26. package/dist/commands/remove.d.ts.map +1 -1
  27. package/dist/commands/remove.js +83 -33
  28. package/dist/commands/remove.js.map +1 -1
  29. package/dist/commands/update.d.ts +14 -0
  30. package/dist/commands/update.d.ts.map +1 -0
  31. package/dist/commands/update.js +99 -0
  32. package/dist/commands/update.js.map +1 -0
  33. package/dist/config-file.d.ts.map +1 -1
  34. package/dist/config-file.js +6 -16
  35. package/dist/config-file.js.map +1 -1
  36. package/dist/detect.d.ts.map +1 -1
  37. package/dist/detect.js.map +1 -1
  38. package/dist/errors.d.ts +49 -0
  39. package/dist/errors.d.ts.map +1 -0
  40. package/dist/errors.js +84 -0
  41. package/dist/errors.js.map +1 -0
  42. package/dist/index.d.ts +8 -1
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +8 -1
  45. package/dist/index.js.map +1 -1
  46. package/dist/lock.d.ts +49 -0
  47. package/dist/lock.d.ts.map +1 -0
  48. package/dist/lock.js +108 -0
  49. package/dist/lock.js.map +1 -0
  50. package/dist/preferences.d.ts.map +1 -1
  51. package/dist/preferences.js.map +1 -1
  52. package/dist/utils.d.ts +30 -0
  53. package/dist/utils.d.ts.map +1 -0
  54. package/dist/utils.js +101 -0
  55. package/dist/utils.js.map +1 -0
  56. package/package.json +39 -39
@@ -0,0 +1,257 @@
1
+ /**
2
+ * `getmcp init` command.
3
+ *
4
+ * Interactive wizard to scaffold a new MCP server registry entry.
5
+ * Prompts for metadata and generates the TypeScript file.
6
+ */
7
+ import * as p from "@clack/prompts";
8
+ import * as fs from "node:fs";
9
+ import * as path from "node:path";
10
+ export async function initCommand() {
11
+ p.intro("getmcp init — Scaffold a new MCP server entry");
12
+ // Basic metadata
13
+ const id = await p.text({
14
+ message: "Server ID (lowercase, hyphens only):",
15
+ placeholder: "my-mcp-server",
16
+ validate: (val) => {
17
+ if (!val || !val.trim())
18
+ return "ID is required";
19
+ if (!/^[a-z0-9-]+$/.test(val))
20
+ return "Must be lowercase alphanumeric with hyphens";
21
+ },
22
+ });
23
+ if (p.isCancel(id)) {
24
+ p.cancel("Operation cancelled.");
25
+ process.exit(0);
26
+ }
27
+ const name = await p.text({
28
+ message: "Display name:",
29
+ placeholder: "My MCP Server",
30
+ validate: (val) => {
31
+ if (!val || !val.trim())
32
+ return "Name is required";
33
+ },
34
+ });
35
+ if (p.isCancel(name)) {
36
+ p.cancel("Operation cancelled.");
37
+ process.exit(0);
38
+ }
39
+ const description = await p.text({
40
+ message: "Description:",
41
+ placeholder: "What does this server do?",
42
+ validate: (val) => {
43
+ if (!val || !val.trim())
44
+ return "Description is required";
45
+ },
46
+ });
47
+ if (p.isCancel(description)) {
48
+ p.cancel("Operation cancelled.");
49
+ process.exit(0);
50
+ }
51
+ // Transport type
52
+ const transport = await p.select({
53
+ message: "Transport type:",
54
+ options: [
55
+ { label: "stdio", hint: "Local process (npx, uvx, docker, etc.)", value: "stdio" },
56
+ { label: "http", hint: "Remote HTTP server", value: "http" },
57
+ {
58
+ label: "streamable-http",
59
+ hint: "Remote streamable HTTP",
60
+ value: "streamable-http",
61
+ },
62
+ { label: "sse", hint: "Server-Sent Events", value: "sse" },
63
+ ],
64
+ });
65
+ if (p.isCancel(transport)) {
66
+ p.cancel("Operation cancelled.");
67
+ process.exit(0);
68
+ }
69
+ let configBlock;
70
+ let envVarNames = [];
71
+ if (transport === "stdio") {
72
+ const command = await p.text({
73
+ message: "Command:",
74
+ placeholder: "npx",
75
+ validate: (val) => {
76
+ if (!val || !val.trim())
77
+ return "Command is required";
78
+ },
79
+ });
80
+ if (p.isCancel(command)) {
81
+ p.cancel("Operation cancelled.");
82
+ process.exit(0);
83
+ }
84
+ const argsRaw = await p.text({
85
+ message: "Arguments (space-separated):",
86
+ placeholder: "-y @modelcontextprotocol/server-github",
87
+ });
88
+ if (p.isCancel(argsRaw)) {
89
+ p.cancel("Operation cancelled.");
90
+ process.exit(0);
91
+ }
92
+ const args = argsRaw.trim() ? argsRaw.trim().split(/\s+/) : [];
93
+ const envRaw = await p.text({
94
+ message: "Required env vars (comma-separated, or empty):",
95
+ placeholder: "GITHUB_TOKEN, API_KEY",
96
+ });
97
+ if (p.isCancel(envRaw)) {
98
+ p.cancel("Operation cancelled.");
99
+ process.exit(0);
100
+ }
101
+ envVarNames = envRaw.trim()
102
+ ? envRaw
103
+ .trim()
104
+ .split(/\s*,\s*/)
105
+ .filter(Boolean)
106
+ : [];
107
+ const envObj = envVarNames.length > 0
108
+ ? `\n env: {\n${envVarNames.map((v) => ` ${v}: "",`).join("\n")}\n },`
109
+ : "";
110
+ const argsStr = args.length > 0 ? `\n args: [${args.map((a) => `"${a}"`).join(", ")}],` : "";
111
+ configBlock = ` config: {
112
+ command: "${command}",${argsStr}${envObj}
113
+ },`;
114
+ }
115
+ else {
116
+ const url = await p.text({
117
+ message: "Server URL:",
118
+ placeholder: "https://example.com/mcp",
119
+ validate: (val) => {
120
+ if (!val || !val.trim())
121
+ return "URL is required";
122
+ try {
123
+ new URL(val);
124
+ }
125
+ catch {
126
+ return "Must be a valid URL";
127
+ }
128
+ },
129
+ });
130
+ if (p.isCancel(url)) {
131
+ p.cancel("Operation cancelled.");
132
+ process.exit(0);
133
+ }
134
+ configBlock = ` config: {
135
+ url: "${url}",
136
+ transport: "${transport}",
137
+ },`;
138
+ }
139
+ // Categories
140
+ const categories = await p.multiselect({
141
+ message: "Categories:",
142
+ options: [
143
+ { label: "developer-tools", value: "developer-tools" },
144
+ { label: "web", value: "web" },
145
+ { label: "automation", value: "automation" },
146
+ { label: "data", value: "data" },
147
+ { label: "search", value: "search" },
148
+ { label: "ai", value: "ai" },
149
+ { label: "cloud", value: "cloud" },
150
+ { label: "communication", value: "communication" },
151
+ { label: "design", value: "design" },
152
+ { label: "documentation", value: "documentation" },
153
+ { label: "devops", value: "devops" },
154
+ { label: "utilities", value: "utilities" },
155
+ { label: "security", value: "security" },
156
+ { label: "gaming", value: "gaming" },
157
+ ],
158
+ required: false,
159
+ });
160
+ if (p.isCancel(categories)) {
161
+ p.cancel("Operation cancelled.");
162
+ process.exit(0);
163
+ }
164
+ // Runtime (for stdio)
165
+ let runtime;
166
+ if (transport === "stdio") {
167
+ const runtimeChoice = await p.select({
168
+ message: "Runtime:",
169
+ options: [
170
+ { label: "node", value: "node" },
171
+ { label: "python", value: "python" },
172
+ { label: "docker", value: "docker" },
173
+ { label: "binary", value: "binary" },
174
+ ],
175
+ });
176
+ if (p.isCancel(runtimeChoice)) {
177
+ p.cancel("Operation cancelled.");
178
+ process.exit(0);
179
+ }
180
+ runtime = runtimeChoice;
181
+ }
182
+ // Optional metadata
183
+ const repository = await p.text({
184
+ message: "Repository URL (optional):",
185
+ placeholder: "https://github.com/user/repo",
186
+ });
187
+ if (p.isCancel(repository)) {
188
+ p.cancel("Operation cancelled.");
189
+ process.exit(0);
190
+ }
191
+ const author = await p.text({
192
+ message: "Author (optional):",
193
+ placeholder: "Author Name",
194
+ });
195
+ if (p.isCancel(author)) {
196
+ p.cancel("Operation cancelled.");
197
+ process.exit(0);
198
+ }
199
+ // Generate the TypeScript file
200
+ const categoriesArr = categories;
201
+ const categoriesStr = categoriesArr.length > 0
202
+ ? `\n categories: [${categoriesArr.map((c) => `"${c}"`).join(", ")}],`
203
+ : "";
204
+ const runtimeStr = runtime ? `\n runtime: "${runtime}",` : "";
205
+ const repoStr = repository.trim() ? `\n repository: "${repository.trim()}",` : "";
206
+ const authorStr = author.trim() ? `\n author: "${author.trim()}",` : "";
207
+ const envVarsStr = envVarNames.length > 0
208
+ ? `\n requiredEnvVars: [${envVarNames.map((v) => `"${v}"`).join(", ")}],`
209
+ : "";
210
+ const fileContent = `import type { RegistryEntryType } from "@getmcp/core";
211
+
212
+ const server: RegistryEntryType = {
213
+ id: "${id}",
214
+ name: "${name}",
215
+ description: "${description}",
216
+ ${configBlock}${categoriesStr}${runtimeStr}${repoStr}${authorStr}${envVarsStr}
217
+ };
218
+
219
+ export default server;
220
+ `;
221
+ // Determine output path
222
+ const registryDir = path.resolve("packages/registry/src/servers");
223
+ const outputPath = path.join(registryDir, `${id}.ts`);
224
+ if (fs.existsSync(outputPath)) {
225
+ p.log.warn(`File already exists: ${outputPath}`);
226
+ const overwrite = await p.confirm({
227
+ message: "Overwrite?",
228
+ initialValue: false,
229
+ });
230
+ if (p.isCancel(overwrite) || !overwrite) {
231
+ p.cancel("Operation cancelled.");
232
+ process.exit(0);
233
+ }
234
+ }
235
+ // Show preview
236
+ p.note(fileContent, `${id}.ts`);
237
+ const confirmed = await p.confirm({
238
+ message: "Create this file?",
239
+ initialValue: true,
240
+ });
241
+ if (p.isCancel(confirmed) || !confirmed) {
242
+ p.cancel("Operation cancelled.");
243
+ process.exit(0);
244
+ }
245
+ // Write file
246
+ if (!fs.existsSync(registryDir)) {
247
+ fs.mkdirSync(registryDir, { recursive: true });
248
+ }
249
+ fs.writeFileSync(outputPath, fileContent, "utf-8");
250
+ p.log.success(`Created: ${outputPath}`);
251
+ p.log.info("Next steps:\n" +
252
+ ` 1. Import and register in packages/registry/src/index.ts\n` +
253
+ ` 2. Add a test in packages/registry/tests/registry.test.ts\n` +
254
+ ` 3. Run: npx vitest packages/registry`);
255
+ p.outro("Server entry scaffolded successfully.");
256
+ }
257
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,wBAAsB,WAAW,CAAC,OAAO,EAAE;IACzC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,IAAI,CAAC,CAUhB"}
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAcH,wBAAsB,WAAW,CAAC,OAAO,EAAE;IACzC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,IAAI,CAAC,CAUhB"}
@@ -4,9 +4,11 @@
4
4
  * Lists all MCP servers from the registry, or lists servers
5
5
  * installed in detected AI apps.
6
6
  */
7
+ import * as p from "@clack/prompts";
7
8
  import { getAllServers, searchServers, getCategories, getServersByCategory, getServerCount, } from "@getmcp/registry";
8
9
  import { detectInstalledApps } from "../detect.js";
9
10
  import { listServersInConfig } from "../config-file.js";
11
+ import { shortenPath } from "../utils.js";
10
12
  export async function listCommand(options) {
11
13
  if (options.installed) {
12
14
  return listInstalledServers();
@@ -19,63 +21,59 @@ export async function listCommand(options) {
19
21
  async function listRegistry(search) {
20
22
  const servers = search ? searchServers(search) : getAllServers();
21
23
  if (servers.length === 0) {
22
- console.log(search ? `No servers matching "${search}".` : "No servers in registry.");
24
+ p.log.warn(search ? `No servers matching "${search}".` : "No servers in registry.");
23
25
  return;
24
26
  }
25
27
  const title = search
26
28
  ? `Servers matching "${search}" (${servers.length}):`
27
29
  : `Available MCP servers (${getServerCount()}):`;
28
- console.log(`\n${title}\n`);
30
+ p.intro(title);
31
+ const lines = [];
29
32
  for (const server of servers) {
30
33
  const transport = "command" in server.config ? "stdio" : "remote";
31
34
  const envCount = server.requiredEnvVars.length;
32
35
  const envNote = envCount > 0 ? ` [${envCount} env var${envCount > 1 ? "s" : ""} required]` : "";
33
- console.log(` ${server.id}`);
34
- console.log(` ${server.name} — ${server.description}`);
35
- console.log(` Transport: ${transport}${envNote}`);
36
- if (server.categories && server.categories.length > 0) {
37
- console.log(` Categories: ${server.categories.join(", ")}`);
38
- }
39
- console.log();
36
+ const categories = server.categories && server.categories.length > 0 ? ` (${server.categories.join(", ")})` : "";
37
+ lines.push(`${server.id} — ${server.name}`);
38
+ lines.push(` ${server.description}`);
39
+ lines.push(` ${transport}${envNote}${categories}`);
40
+ lines.push("");
40
41
  }
42
+ console.log(lines.join("\n"));
41
43
  }
42
44
  async function listByCategory(category) {
43
45
  const servers = getServersByCategory(category);
44
46
  if (servers.length === 0) {
45
- console.log(`No servers in category "${category}".`);
46
- console.log(`\nAvailable categories: ${getCategories().join(", ")}`);
47
+ p.log.warn(`No servers in category "${category}".`);
48
+ p.log.info(`Available categories: ${getCategories().join(", ")}`);
47
49
  return;
48
50
  }
49
- console.log(`\nServers in category "${category}" (${servers.length}):\n`);
51
+ p.intro(`Servers in category "${category}" (${servers.length}):`);
52
+ const lines = [];
50
53
  for (const server of servers) {
51
- console.log(` ${server.id} — ${server.name}`);
52
- console.log(` ${server.description}`);
53
- console.log();
54
+ lines.push(`${server.id} — ${server.name}`);
55
+ lines.push(` ${server.description}`);
56
+ lines.push("");
54
57
  }
58
+ console.log(lines.join("\n"));
55
59
  }
56
60
  async function listInstalledServers() {
57
61
  const apps = detectInstalledApps();
58
62
  if (apps.length === 0) {
59
- console.log("No AI applications detected on this system.");
63
+ p.log.warn("No AI applications detected on this system.");
60
64
  return;
61
65
  }
62
- console.log(`\nDetected AI applications (${apps.length}):\n`);
66
+ p.intro(`Detected AI applications (${apps.length}):`);
63
67
  for (const app of apps) {
64
- console.log(` ${app.name}`);
65
- console.log(` Config: ${app.configPath}`);
68
+ let serversLine;
66
69
  try {
67
70
  const servers = listServersInConfig(app.configPath);
68
- if (servers.length > 0) {
69
- console.log(` Servers: ${servers.join(", ")}`);
70
- }
71
- else {
72
- console.log(` Servers: (none configured)`);
73
- }
71
+ serversLine = servers.length > 0 ? servers.join(", ") : "(none configured)";
74
72
  }
75
73
  catch {
76
- console.log(` Servers: (config not readable)`);
74
+ serversLine = "(config not readable)";
77
75
  }
78
- console.log();
76
+ p.log.info(`${app.name}\n Config: ${shortenPath(app.configPath)}\n Servers: ${serversLine}`);
79
77
  }
80
78
  }
81
79
  //# sourceMappingURL=list.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EACL,aAAa,EACb,aAAa,EACb,aAAa,EACb,oBAAoB,EACpB,cAAc,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAIjC;IACC,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,OAAO,oBAAoB,EAAE,CAAC;IAChC,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,OAAO,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,MAAe;IACzC,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;IAEjE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,wBAAwB,MAAM,IAAI,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC;QACpF,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG,MAAM;QAClB,CAAC,CAAC,qBAAqB,MAAM,MAAM,OAAO,CAAC,MAAM,IAAI;QACrD,CAAC,CAAC,0BAA0B,cAAc,EAAE,IAAI,CAAC;IAEnD,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAEf,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;QAClE,MAAM,QAAQ,GAAG,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC;QAC/C,MAAM,OAAO,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,WAAW,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;QAChG,MAAM,UAAU,GACd,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAEhG,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5C,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS,GAAG,OAAO,GAAG,UAAU,EAAE,CAAC,CAAC;QACpD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAChC,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,QAAgB;IAC5C,MAAM,OAAO,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAE/C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,2BAA2B,QAAQ,IAAI,CAAC,CAAC;QACpD,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,yBAAyB,aAAa,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClE,OAAO;IACT,CAAC;IAED,CAAC,CAAC,KAAK,CAAC,wBAAwB,QAAQ,MAAM,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;IAElE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5C,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAChC,CAAC;AAED,KAAK,UAAU,oBAAoB;IACjC,MAAM,IAAI,GAAG,mBAAmB,EAAE,CAAC;IAEnC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;QAC1D,OAAO;IACT,CAAC;IAED,CAAC,CAAC,KAAK,CAAC,6BAA6B,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;IAEtD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,WAAmB,CAAC;QAExB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACpD,WAAW,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC;QAC9E,CAAC;QAAC,MAAM,CAAC;YACP,WAAW,GAAG,uBAAuB,CAAC;QACxC,CAAC;QAED,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,eAAe,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,gBAAgB,WAAW,EAAE,CAAC,CAAC;IACjG,CAAC;AACH,CAAC"}
@@ -6,6 +6,14 @@
6
6
  * 2. Detect installed apps
7
7
  * 3. User selects which apps to remove from (or all)
8
8
  * 4. Remove server from each selected config file
9
+ *
10
+ * Supports non-interactive mode via --yes flag.
11
+ * Supports --dry-run to preview changes without writing.
9
12
  */
10
- export declare function removeCommand(serverName?: string): Promise<void>;
13
+ export interface RemoveOptions {
14
+ yes?: boolean;
15
+ apps?: string[];
16
+ dryRun?: boolean;
17
+ }
18
+ export declare function removeCommand(serverName?: string, options?: RemoveOptions): Promise<void>;
11
19
  //# sourceMappingURL=remove.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAUH,wBAAsB,aAAa,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoFtE"}
1
+ {"version":3,"file":"remove.d.ts","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AASH,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,aAAa,CACjC,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAsIf"}
@@ -6,19 +6,27 @@
6
6
  * 2. Detect installed apps
7
7
  * 3. User selects which apps to remove from (or all)
8
8
  * 4. Remove server from each selected config file
9
+ *
10
+ * Supports non-interactive mode via --yes flag.
11
+ * Supports --dry-run to preview changes without writing.
9
12
  */
10
- import { checkbox, confirm } from "@inquirer/prompts";
13
+ import * as p from "@clack/prompts";
11
14
  import { detectInstalledApps } from "../detect.js";
12
- import { removeServerFromConfig, writeConfigFile, listServersInConfig, } from "../config-file.js";
13
- export async function removeCommand(serverName) {
15
+ import { removeServerFromConfig, writeConfigFile, listServersInConfig } from "../config-file.js";
16
+ import { trackRemoval } from "../lock.js";
17
+ import { shortenPath } from "../utils.js";
18
+ import { formatError } from "../errors.js";
19
+ export async function removeCommand(serverName, options = {}) {
20
+ const isNonInteractive = options.yes || !process.stdin.isTTY;
21
+ p.intro("getmcp remove");
14
22
  if (!serverName) {
15
- console.error("Usage: getmcp remove <server-name>");
16
- console.error(" Provide the name/key of the MCP server to remove.");
23
+ p.log.error("Usage: getmcp remove <server-name>\n Provide the name/key of the MCP server to remove.");
17
24
  process.exit(1);
18
25
  }
19
26
  const installed = detectInstalledApps();
20
27
  if (installed.length === 0) {
21
- console.log("No AI applications detected on this system.");
28
+ p.log.warn("No AI applications detected on this system.");
29
+ p.outro("Done");
22
30
  return;
23
31
  }
24
32
  // Find which apps have this server configured
@@ -35,50 +43,92 @@ export async function removeCommand(serverName) {
35
43
  }
36
44
  }
37
45
  if (appsWithServer.length === 0) {
38
- console.log(`Server "${serverName}" was not found in any detected app config.`);
46
+ p.log.warn(`Server "${serverName}" was not found in any detected app config.`);
47
+ p.outro("Done");
39
48
  return;
40
49
  }
41
- console.log(`\nFound "${serverName}" in ${appsWithServer.length} app(s):\n`);
42
- for (const app of appsWithServer) {
43
- console.log(` - ${app.name} (${app.configPath})`);
50
+ const appList = appsWithServer
51
+ .map((app) => ` - ${app.name} (${shortenPath(app.configPath)})`)
52
+ .join("\n");
53
+ p.log.info(`Found "${serverName}" in ${appsWithServer.length} app(s):\n${appList}`);
54
+ // Select apps to remove from
55
+ let selectedApps;
56
+ if (options.apps && options.apps.length > 0) {
57
+ // --app flag: filter to specified apps
58
+ selectedApps = appsWithServer.filter((a) => options.apps.includes(a.id));
59
+ if (selectedApps.length === 0) {
60
+ p.log.warn("None of the specified apps have this server configured.");
61
+ p.outro("Done");
62
+ return;
63
+ }
64
+ }
65
+ else if (isNonInteractive) {
66
+ // Non-interactive: remove from all apps that have it
67
+ selectedApps = appsWithServer;
68
+ }
69
+ else {
70
+ const selected = await p.multiselect({
71
+ message: "Select apps to remove from:",
72
+ options: appsWithServer.map((app) => ({
73
+ label: app.name,
74
+ hint: shortenPath(app.configPath),
75
+ value: app,
76
+ })),
77
+ initialValues: appsWithServer,
78
+ required: true,
79
+ });
80
+ if (p.isCancel(selected)) {
81
+ p.cancel("Operation cancelled.");
82
+ process.exit(0);
83
+ }
84
+ selectedApps = selected;
44
85
  }
45
- console.log();
46
- // Confirm removal
47
- const selectedApps = await checkbox({
48
- message: "Select apps to remove from:",
49
- choices: appsWithServer.map((app) => ({
50
- name: app.name,
51
- value: app,
52
- checked: true,
53
- })),
54
- });
55
86
  if (selectedApps.length === 0) {
56
- console.log("No apps selected. Cancelled.");
87
+ p.log.warn("No apps selected.");
88
+ p.outro("Cancelled");
57
89
  return;
58
90
  }
59
- const yes = await confirm({
60
- message: `Remove "${serverName}" from ${selectedApps.length} app(s)?`,
61
- default: true,
62
- });
63
- if (!yes) {
64
- console.log("Cancelled.");
65
- return;
91
+ // Confirm removal
92
+ if (!isNonInteractive) {
93
+ const confirmed = await p.confirm({
94
+ message: `Remove "${serverName}" from ${selectedApps.length} app(s)?`,
95
+ initialValue: true,
96
+ });
97
+ if (p.isCancel(confirmed) || !confirmed) {
98
+ p.cancel("Operation cancelled.");
99
+ process.exit(0);
100
+ }
66
101
  }
102
+ if (options.dryRun) {
103
+ p.log.step("Dry run — no files will be modified:");
104
+ }
105
+ const removedApps = [];
67
106
  for (const app of selectedApps) {
68
107
  try {
69
108
  const updated = removeServerFromConfig(app.configPath, serverName);
70
109
  if (updated) {
71
- writeConfigFile(app.configPath, updated);
72
- console.log(` - ${app.name}: removed`);
110
+ if (options.dryRun) {
111
+ p.log.info(`${app.name}: would remove "${serverName}" from ${shortenPath(app.configPath)}`);
112
+ }
113
+ else {
114
+ writeConfigFile(app.configPath, updated);
115
+ p.log.success(`${app.name}: removed`);
116
+ }
117
+ removedApps.push(app);
73
118
  }
74
119
  else {
75
- console.log(` - ${app.name}: not found (skipped)`);
120
+ p.log.warn(`${app.name}: not found (skipped)`);
76
121
  }
77
122
  }
78
123
  catch (err) {
79
- console.error(` ! ${app.name}: Failed — ${err instanceof Error ? err.message : String(err)}`);
124
+ p.log.error(`${app.name}: ${formatError(err)}`);
80
125
  }
81
126
  }
82
- console.log(`\nDone! "${serverName}" has been removed.`);
127
+ // Track removal (unless dry-run)
128
+ if (!options.dryRun && removedApps.length > 0) {
129
+ trackRemoval(serverName, removedApps.map((a) => a.id));
130
+ }
131
+ const action = options.dryRun ? "would be removed" : "has been removed";
132
+ p.outro(`"${serverName}" ${action}.`);
83
133
  }
84
134
  //# sourceMappingURL=remove.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"remove.js","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"remove.js","sourceRoot":"","sources":["../../src/commands/remove.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * `getmcp update` command.
3
+ *
4
+ * Re-generates and merges configs for all tracked installations
5
+ * using the current registry definitions.
6
+ */
7
+ export interface UpdateOptions {
8
+ yes?: boolean;
9
+ apps?: string[];
10
+ allApps?: boolean;
11
+ dryRun?: boolean;
12
+ }
13
+ export declare function updateCommand(options?: UpdateOptions): Promise<void>;
14
+ //# sourceMappingURL=update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,aAAa,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuG9E"}