@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
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @getmcp/cli
2
2
 
3
- CLI tool to install MCP servers into any AI application with one command. Auto-detects installed apps, generates the correct config format, and merges it into existing config files without overwriting.
3
+ CLI tool to install MCP servers into any AI application with one command. Auto-detects installed apps, generates the correct config format, and merges it into existing config files without overwriting. Tracks installations in a project-level `getmcp-lock.json` for team sharing and update workflows.
4
4
 
5
5
  ## Install
6
6
 
@@ -28,27 +28,48 @@ getmcp add github
28
28
  # Install with environment variables prompted interactively
29
29
  getmcp add brave-search
30
30
  # => Prompts: Enter BRAVE_API_KEY: ****
31
+
32
+ # Install to a specific app (non-interactive)
33
+ getmcp add github --app claude-desktop
34
+
35
+ # Install to multiple apps
36
+ getmcp add github --app vscode --app cursor
37
+
38
+ # Install to all detected apps without prompts
39
+ getmcp add github -y --all-apps
40
+
41
+ # Preview what would be written
42
+ getmcp add github --dry-run
31
43
  ```
32
44
 
33
45
  The `add` command will:
46
+
34
47
  1. Look up the server in the built-in registry
35
48
  2. Auto-detect which AI apps you have installed
36
49
  3. Ask which apps you want to configure (or configure all)
37
50
  4. Prompt for any required environment variables
38
51
  5. Generate the correct config format for each app
39
52
  6. Merge the config into each app's config file (never overwrites existing servers)
53
+ 7. Track the installation in `getmcp-lock.json`
40
54
 
41
55
  ### `getmcp remove <server-name>`
42
56
 
43
57
  Remove an MCP server from your AI app configs.
44
58
 
45
59
  ```bash
60
+ # Interactive removal
46
61
  getmcp remove github
62
+
63
+ # Remove without confirmation
64
+ getmcp remove github --yes
65
+
66
+ # Preview what would change
67
+ getmcp remove github --dry-run
47
68
  ```
48
69
 
49
70
  ### `getmcp list`
50
71
 
51
- Browse the server registry.
72
+ Browse the server registry. Shows server name, description, transport type, and categories.
52
73
 
53
74
  ```bash
54
75
  # List all available servers
@@ -64,22 +85,109 @@ getmcp list --category=developer-tools
64
85
  getmcp list --installed
65
86
  ```
66
87
 
88
+ ### `getmcp find [query]`
89
+
90
+ Interactive fuzzy search through the registry. Shows transport type, env var count, and categories in the selection hint. After selecting a server, jumps directly into the `add` flow.
91
+
92
+ ```bash
93
+ # Interactive search prompt
94
+ getmcp find
95
+
96
+ # Search with a query
97
+ getmcp find database
98
+
99
+ # Aliases
100
+ getmcp search github
101
+ getmcp s docker
102
+ getmcp f web
103
+ ```
104
+
105
+ ### `getmcp check`
106
+
107
+ Validate tracked installations against the registry and app configs. Reports servers removed from registry, servers missing from app configs, and apps that are no longer detected.
108
+
109
+ ```bash
110
+ getmcp check
111
+ ```
112
+
113
+ ### `getmcp update`
114
+
115
+ Re-generate and merge configs for all tracked installations using the latest registry definitions.
116
+
117
+ ```bash
118
+ # Interactive update
119
+ getmcp update
120
+
121
+ # Update without confirmation
122
+ getmcp update --yes
123
+
124
+ # Update only for specific apps
125
+ getmcp update --app vscode --app cursor
126
+
127
+ # Preview what would change
128
+ getmcp update --dry-run
129
+ ```
130
+
131
+ ### `getmcp init`
132
+
133
+ Interactive wizard to scaffold a new MCP server registry entry. Prompts for metadata (ID, name, description, transport, command/URL, env vars, categories, runtime) and generates a TypeScript file ready for registration.
134
+
135
+ ```bash
136
+ getmcp init
137
+ ```
138
+
139
+ ## Command Aliases
140
+
141
+ | Command | Aliases |
142
+ | -------- | ---------------------- |
143
+ | `add` | `install`, `i` |
144
+ | `remove` | `rm`, `r`, `uninstall` |
145
+ | `list` | `ls` |
146
+ | `find` | `search`, `s`, `f` |
147
+
148
+ ## Options
149
+
150
+ | Flag | Description |
151
+ | ------------------ | ------------------------------------------------------------ |
152
+ | `--help`, `-h` | Show help message |
153
+ | `--version`, `-v` | Show version number |
154
+ | `--yes`, `-y` | Skip confirmation prompts (use defaults) |
155
+ | `--app <id>` | Target a specific app (repeatable for multiple apps) |
156
+ | `--all-apps` | Target all detected apps |
157
+ | `--dry-run` | Preview changes without writing files |
158
+ | `--installed` | List servers installed in detected apps (for `list` command) |
159
+ | `--search=<query>` | Search the registry (for `list` command) |
160
+ | `--category=<cat>` | Filter by category (for `list` command) |
161
+
162
+ ## Installation Tracking
163
+
164
+ When you install or remove servers, getmcp records the action in a `getmcp-lock.json` file in the current working directory. This file:
165
+
166
+ - Tracks which servers are installed to which apps
167
+ - Records which environment variable names were set (values are **not** stored for security)
168
+ - Stores installation and last-update timestamps
169
+ - Can be **committed to version control** for team sharing (like `package-lock.json`)
170
+
171
+ The lock file enables the `check` and `update` commands — `check` compares your lock file against actual app configs to detect drift, and `update` re-applies configs from the registry.
172
+
67
173
  ## Supported Apps
68
174
 
69
175
  The CLI auto-detects and generates configs for:
70
176
 
71
- | App | Config Location |
72
- |-----|----------------|
73
- | Claude Desktop | `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS), `%AppData%\Claude\claude_desktop_config.json` (Windows) |
74
- | Claude Code | `.mcp.json` (project), `~/.claude.json` (user) |
75
- | VS Code / Copilot | `.vscode/mcp.json` |
76
- | Cursor | `.cursor/mcp.json` |
77
- | Cline | `cline_mcp_settings.json` (VS Code globalStorage) |
78
- | Roo Code | `mcp_settings.json` (VS Code globalStorage) |
79
- | Goose | `~/.config/goose/config.yaml` |
80
- | Windsurf | `~/.codeium/windsurf/mcp_config.json` |
81
- | OpenCode | `opencode.json` |
82
- | Zed | `settings.json` (Zed settings) |
177
+ | App | Config Location | Format |
178
+ | ----------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ------ |
179
+ | Claude Desktop | `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS), `%AppData%\Claude\claude_desktop_config.json` (Windows) | JSON |
180
+ | Claude Code | `.mcp.json` (project), `~/.claude.json` (user) | JSON |
181
+ | VS Code / Copilot | `.vscode/mcp.json` | JSON |
182
+ | Cursor | `.cursor/mcp.json` | JSON |
183
+ | Cline | `cline_mcp_settings.json` (VS Code globalStorage) | JSON |
184
+ | Roo Code | `mcp_settings.json` (VS Code globalStorage) | JSON |
185
+ | Goose | `~/.config/goose/config.yaml` | YAML |
186
+ | Windsurf | `~/.codeium/windsurf/mcp_config.json` | JSON |
187
+ | OpenCode | `opencode.json` | JSONC |
188
+ | Zed | `settings.json` (Zed settings) | JSON |
189
+ | PyCharm | `.ai/mcp/mcp.json` (project-level, requires JetBrains AI Assistant plugin) | JSON |
190
+ | Codex | `~/.codex/config.toml` (global), `.codex/config.toml` (project) | TOML |
83
191
 
84
192
  ## Programmatic API
85
193
 
@@ -87,13 +195,33 @@ The CLI also exports its functions for use as a library:
87
195
 
88
196
  ```ts
89
197
  import {
198
+ // App detection
90
199
  detectApps,
91
200
  detectInstalledApps,
201
+ // Config file operations
92
202
  readConfigFile,
93
203
  writeConfigFile,
94
204
  mergeServerIntoConfig,
95
205
  removeServerFromConfig,
96
206
  listServersInConfig,
207
+ // Installation tracking
208
+ readLockFile,
209
+ writeLockFile,
210
+ trackInstallation,
211
+ trackRemoval,
212
+ getTrackedServers,
213
+ getLockFilePath,
214
+ // Preferences
215
+ readPreferences,
216
+ saveSelectedApps,
217
+ getSavedSelectedApps,
218
+ // Utilities
219
+ shortenPath,
220
+ parseFlags,
221
+ resolveAlias,
222
+ // Errors
223
+ CliError,
224
+ formatError,
97
225
  } from "@getmcp/cli";
98
226
 
99
227
  // Detect which apps are installed
@@ -107,13 +235,9 @@ const updated = mergeServerIntoConfig(config, "github", serverConfig, "claude-de
107
235
 
108
236
  // Write back (preserves existing content)
109
237
  await writeConfigFile("/path/to/config.json", updated);
110
- ```
111
238
 
112
- ## Options
113
-
114
- ```
115
- getmcp --help Show help message
116
- getmcp --version Show version number
239
+ // Track the installation
240
+ trackInstallation("github", ["claude-desktop"], ["GITHUB_PERSONAL_ACCESS_TOKEN"]);
117
241
  ```
118
242
 
119
243
  ## License
package/dist/bin.d.ts CHANGED
@@ -3,11 +3,13 @@
3
3
  * getmcp CLI entry point.
4
4
  *
5
5
  * Usage:
6
- * getmcp add [server-id] Install an MCP server
7
- * getmcp remove <server-name> Remove an MCP server
8
- * getmcp list [--installed] List available or installed servers
9
- * getmcp list [--search=query] Search the registry
10
- * getmcp list [--category=cat] Filter by category
6
+ * getmcp add [server-id] Install an MCP server (aliases: install, i)
7
+ * getmcp remove <server-name> Remove an MCP server (aliases: rm, r, uninstall)
8
+ * getmcp list [--installed] List available or installed servers (alias: ls)
9
+ * getmcp find [query] Interactive server search (aliases: search, s, f)
10
+ * getmcp check Check for registry updates
11
+ * getmcp update Update installed servers
12
+ * getmcp init Scaffold a new server entry
11
13
  */
12
14
  export {};
13
15
  //# sourceMappingURL=bin.d.ts.map
package/dist/bin.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AAEA;;;;;;;;;GASG"}
1
+ {"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;GAWG"}
package/dist/bin.js CHANGED
@@ -3,16 +3,23 @@
3
3
  * getmcp CLI entry point.
4
4
  *
5
5
  * Usage:
6
- * getmcp add [server-id] Install an MCP server
7
- * getmcp remove <server-name> Remove an MCP server
8
- * getmcp list [--installed] List available or installed servers
9
- * getmcp list [--search=query] Search the registry
10
- * getmcp list [--category=cat] Filter by category
6
+ * getmcp add [server-id] Install an MCP server (aliases: install, i)
7
+ * getmcp remove <server-name> Remove an MCP server (aliases: rm, r, uninstall)
8
+ * getmcp list [--installed] List available or installed servers (alias: ls)
9
+ * getmcp find [query] Interactive server search (aliases: search, s, f)
10
+ * getmcp check Check for registry updates
11
+ * getmcp update Update installed servers
12
+ * getmcp init Scaffold a new server entry
11
13
  */
12
14
  import { createRequire } from "node:module";
13
15
  import { addCommand } from "./commands/add.js";
14
16
  import { removeCommand } from "./commands/remove.js";
15
17
  import { listCommand } from "./commands/list.js";
18
+ import { findCommand } from "./commands/find.js";
19
+ import { checkCommand } from "./commands/check.js";
20
+ import { updateCommand } from "./commands/update.js";
21
+ import { initCommand } from "./commands/init.js";
22
+ import { parseFlags, resolveAlias } from "./utils.js";
16
23
  const require = createRequire(import.meta.url);
17
24
  const { version: VERSION } = require("../package.json");
18
25
  function printHelp() {
@@ -20,60 +27,112 @@ function printHelp() {
20
27
  getmcp v${VERSION} — Install MCP servers into any AI application
21
28
 
22
29
  Usage:
23
- getmcp add [server-id] Install an MCP server interactively
30
+ getmcp add [server-id] Install an MCP server
24
31
  getmcp remove <server-name> Remove an MCP server from app configs
25
32
  getmcp list List all available MCP servers
26
33
  getmcp list --installed List servers installed in detected apps
27
34
  getmcp list --search=<query> Search the registry
28
35
  getmcp list --category=<cat> Filter by category
36
+ getmcp find [query] Interactive fuzzy search
37
+ getmcp check Check for registry updates
38
+ getmcp update Update installed servers
39
+ getmcp init Scaffold a new server entry
40
+
41
+ Command Aliases:
42
+ add install, i
43
+ remove rm, r, uninstall
44
+ list ls
45
+ find search, s, f
29
46
 
30
47
  Options:
31
- --help, -h Show this help message
32
- --version, -v Show version number
48
+ --help, -h Show this help message
49
+ --version, -v Show version number
50
+ --yes, -y Skip confirmation prompts (use defaults)
51
+ --app <id> Target specific app (repeatable)
52
+ --all-apps Target all detected apps
53
+ --dry-run Preview changes without writing files
33
54
 
34
55
  Examples:
35
- getmcp add # Interactive server selection
36
- getmcp add github # Install GitHub MCP server
37
- getmcp remove github # Remove GitHub from all apps
38
- getmcp list --search=database # Find database-related servers
39
- getmcp list --installed # See what's configured in your apps
56
+ getmcp add # Interactive server selection
57
+ getmcp add github # Install GitHub MCP server
58
+ getmcp add github --app claude-desktop # Install to specific app
59
+ getmcp add github -y --all-apps # Install to all apps, no prompts
60
+ getmcp add github --dry-run # Preview what would be written
61
+ getmcp i github -y --app vscode --app cursor # Aliases + multiple apps
62
+ getmcp remove github # Remove GitHub from all apps
63
+ getmcp rm github -y # Remove without confirmation
64
+ getmcp ls --search=database # Find database-related servers
65
+ getmcp find # Interactive fuzzy search
66
+ getmcp check # Check for updates
67
+ getmcp update # Re-apply configs from registry
40
68
  `);
41
69
  }
42
70
  async function main() {
43
71
  const args = process.argv.slice(2);
44
- if (args.length === 0 || args.includes("--help") || args.includes("-h")) {
72
+ const { command: rawCommand, serverId, flags } = parseFlags(args);
73
+ if (!rawCommand || flags.help) {
45
74
  printHelp();
46
75
  return;
47
76
  }
48
- if (args.includes("--version") || args.includes("-v")) {
77
+ if (flags.version) {
49
78
  console.log(VERSION);
50
79
  return;
51
80
  }
52
- const command = args[0];
81
+ const command = resolveAlias(rawCommand);
82
+ if (!command) {
83
+ console.error(`Unknown command: ${rawCommand}`);
84
+ printHelp();
85
+ process.exit(1);
86
+ }
53
87
  switch (command) {
54
88
  case "add": {
55
- const serverId = args[1];
56
- await addCommand(serverId);
89
+ await addCommand(serverId, {
90
+ yes: flags.yes,
91
+ apps: flags.apps,
92
+ allApps: flags.allApps,
93
+ dryRun: flags.dryRun,
94
+ });
57
95
  break;
58
96
  }
59
97
  case "remove": {
60
- const serverName = args[1];
61
- await removeCommand(serverName);
98
+ await removeCommand(serverId, {
99
+ yes: flags.yes,
100
+ apps: flags.apps,
101
+ dryRun: flags.dryRun,
102
+ });
62
103
  break;
63
104
  }
64
105
  case "list": {
65
- const installed = args.includes("--installed");
66
- const searchArg = args.find((a) => a.startsWith("--search="));
67
- const categoryArg = args.find((a) => a.startsWith("--category="));
68
106
  await listCommand({
69
- installed,
70
- search: searchArg?.split("=")[1],
71
- category: categoryArg?.split("=")[1],
107
+ installed: flags.installed,
108
+ search: flags.search,
109
+ category: flags.category,
110
+ });
111
+ break;
112
+ }
113
+ case "find": {
114
+ await findCommand(serverId);
115
+ break;
116
+ }
117
+ case "check": {
118
+ await checkCommand();
119
+ break;
120
+ }
121
+ case "update": {
122
+ await updateCommand({
123
+ yes: flags.yes,
124
+ apps: flags.apps,
125
+ allApps: flags.allApps,
126
+ dryRun: flags.dryRun,
72
127
  });
73
128
  break;
74
129
  }
130
+ case "init": {
131
+ await initCommand();
132
+ break;
133
+ }
75
134
  default:
76
- console.error(`Unknown command: ${command}`);
135
+ console.error(`Unknown command: ${rawCommand}`);
77
136
  printHelp();
78
137
  process.exit(1);
79
138
  }
@@ -82,7 +141,8 @@ main().catch((err) => {
82
141
  // Graceful exit on Ctrl+C / prompt cancellation
83
142
  if (err instanceof Error &&
84
143
  (err.message.includes("User force closed") ||
85
- err.message.includes("prompt was canceled"))) {
144
+ err.message.includes("prompt was canceled") ||
145
+ err.message.includes("Operation cancelled"))) {
86
146
  console.log("\nCancelled.");
87
147
  process.exit(0);
88
148
  }
package/dist/bin.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,15 @@
8
8
  * 4. User selects which apps to configure
9
9
  * 5. Generate config for each selected app
10
10
  * 6. Merge into existing config files (never overwrite)
11
+ *
12
+ * Supports non-interactive mode via --yes, --app, --all-apps flags.
13
+ * Supports --dry-run to preview changes without writing.
11
14
  */
12
- export declare function addCommand(serverIdArg?: string): Promise<void>;
15
+ export interface AddOptions {
16
+ yes?: boolean;
17
+ apps?: string[];
18
+ allApps?: boolean;
19
+ dryRun?: boolean;
20
+ }
21
+ export declare function addCommand(serverIdArg?: string, options?: AddOptions): Promise<void>;
13
22
  //# sourceMappingURL=add.d.ts.map
@@ -1 +1 @@
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,CAwIpE"}
1
+ {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAoBH,MAAM,WAAW,UAAU;IACzB,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,UAAU,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,UAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAuR9F"}