add-mcp 1.13.0 → 1.13.2

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 (3) hide show
  1. package/README.md +50 -15
  2. package/dist/index.js +12 -26
  3. package/package.json +2 -1
package/README.md CHANGED
@@ -34,15 +34,15 @@ console.log(result);
34
34
 
35
35
  You can add env variables and arguments (stdio) and headers (remote) to the server config using the `--env`, `--args` and `--header` options. With `${VAR}` placeholders, interactive installs prompt for each variable (omit skipped optional keys so empty strings are not written to config).
36
36
 
37
- ## Find an MCP Servers
37
+ ## Find MCP Servers
38
38
 
39
- Find and install MCP servers from the add-mcp curated registry and/or the official Anthropic MCP registry:
39
+ Find and install MCP servers from the integrations.sh MCP registry:
40
40
 
41
41
  ```bash
42
42
  npx add-mcp find vercel
43
43
  ```
44
44
 
45
- When running `find`/`search` for the first time, the CLI prompts you to choose which registries to enable (add-mcp curated registry and/or official Anthropic registry). You can also add custom registries to the configuration file.
45
+ The first `find`/`search` run automatically saves the integrations.sh registry to `~/.config/add-mcp/config.json` (or `$XDG_CONFIG_HOME/add-mcp/config.json`). You can edit that file to replace the default registry, add the official Anthropic registry, or point at any registry-compatible server.
46
46
 
47
47
  ## Supported Agents
48
48
 
@@ -284,24 +284,59 @@ If a selected remote server defines URL variables or header inputs:
284
284
 
285
285
  ### Configuring Registries for Find / Search
286
286
 
287
- The first time you run `find` or `search`, the CLI prompts you to choose which registries to enable. Your selection is saved to `~/.config/add-mcp/config.json` (respects `XDG_CONFIG_HOME`) and reused on every subsequent search.
288
-
289
- If you run with `-y` before this one-time registry setup is completed, the CLI exits with guidance to rerun without `--yes`.
287
+ The first time you run `find` or `search`, the CLI automatically saves the integrations.sh MCP registry to `~/.config/add-mcp/config.json` (respects `XDG_CONFIG_HOME`) and reuses that registry on every subsequent search.
290
288
 
291
289
  ### Built-in Registries
292
290
 
293
- | Registry | Base URL | Description |
294
- | ------------------------------- | ------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
295
- | **add-mcp curated registry** | `https://mcp.agent-tooling.dev/api/v1/servers` | A curated list of first-party, verified MCP servers from popular developer tools and SaaS services. Designed to surface high-quality, officially maintained servers instead of a long tail of unmaintained or third-party entries. |
296
- | **Official Anthropic registry** | `https://registry.modelcontextprotocol.io/v0.1/servers` | The community-driven MCP server registry maintained by Anthropic. Contains the broadest catalog of MCP servers. |
291
+ | Registry | Base URL | Description |
292
+ | -------------------------------- | ------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
293
+ | **integrations.sh MCP registry** | `https://mcp.agent-tooling.dev/api/v1/servers` | MCP servers discovered by integrations.sh and exposed through an MCP registry-compatible API, using add-mcp's checked-in `registry.json` as the source of truth. |
294
+ | **Official Anthropic registry** | `https://registry.modelcontextprotocol.io/v0.1/servers` | The community-driven MCP server registry maintained by Anthropic. Contains the broadest catalog of MCP servers. |
295
+
296
+ ### Missing A Server in integrations.sh?
297
297
 
298
- ### Missing A Server in add-mcp Curated Registry?
298
+ The default add-mcp registry is generated from [integrations.sh](https://integrations.sh). To be listed in add-mcp, add your MCP server to integrations.sh. Package-only entries that integrations.sh cannot represent yet can still be contributed to add-mcp's `registry.overlay.json`.
299
299
 
300
- The source of truth for the add-mcp curated registry is [registry.json](registry.json) in this repository. You can contribute to the registry by opening a pull request to add or update a server.
300
+ Maintainers can refresh the checked-in registry snapshot with:
301
+
302
+ ```bash
303
+ bun run registry:sync
304
+ bun run registry:verify
305
+ ```
301
306
 
302
307
  ### Editing or Removing Registries
303
308
 
304
- Registry selections are stored in `~/.config/add-mcp/config.json` under the `findRegistries` key. You can edit this file directly to add, remove, or reorder registries:
309
+ Registry selections are stored in `~/.config/add-mcp/config.json` under the `findRegistries` key. You can edit this file directly to replace, add, remove, or reorder registries.
310
+
311
+ Default integrations.sh registry:
312
+
313
+ ```json
314
+ {
315
+ "version": 1,
316
+ "findRegistries": [
317
+ {
318
+ "url": "https://mcp.agent-tooling.dev/api/v1/servers",
319
+ "label": "integrations.sh MCP registry"
320
+ }
321
+ ]
322
+ }
323
+ ```
324
+
325
+ Replace the default with the official Anthropic registry:
326
+
327
+ ```json
328
+ {
329
+ "version": 1,
330
+ "findRegistries": [
331
+ {
332
+ "url": "https://registry.modelcontextprotocol.io/v0.1/servers",
333
+ "label": "Official Anthropic registry"
334
+ }
335
+ ]
336
+ }
337
+ ```
338
+
339
+ Search both integrations.sh and the official Anthropic registry:
305
340
 
306
341
  ```json
307
342
  {
@@ -309,7 +344,7 @@ Registry selections are stored in `~/.config/add-mcp/config.json` under the `fin
309
344
  "findRegistries": [
310
345
  {
311
346
  "url": "https://mcp.agent-tooling.dev/api/v1/servers",
312
- "label": "add-mcp curated registry"
347
+ "label": "integrations.sh MCP registry"
313
348
  },
314
349
  {
315
350
  "url": "https://registry.modelcontextprotocol.io/v0.1/servers",
@@ -319,7 +354,7 @@ Registry selections are stored in `~/.config/add-mcp/config.json` under the `fin
319
354
  }
320
355
  ```
321
356
 
322
- To reset and re-trigger the interactive selection prompt, remove the `findRegistries` key (or delete the file entirely).
357
+ To reset to the default integrations.sh registry, remove the `findRegistries` key or delete the config file.
323
358
 
324
359
  ### Adding a Custom Registry
325
360
 
package/dist/index.js CHANGED
@@ -358,7 +358,7 @@ function getDefaultFindRegistries() {
358
358
  return [
359
359
  {
360
360
  url: VERIFIED_ESSENTIALS_DEFAULT_SERVERS_URL,
361
- label: "add-mcp curated registry"
361
+ label: "integrations.sh MCP registry"
362
362
  },
363
363
  {
364
364
  url: resolveOfficialRegistryServersUrl(),
@@ -784,7 +784,7 @@ async function runFind(query, options) {
784
784
  // package.json
785
785
  var package_default = {
786
786
  name: "add-mcp",
787
- version: "1.13.0",
787
+ version: "1.13.2",
788
788
  description: "Add MCP servers to your favorite coding agents with a single command.",
789
789
  author: "Andre Landgraf <andre@neon.tech>",
790
790
  license: "Apache-2.0",
@@ -812,6 +812,7 @@ var package_default = {
812
812
  test: "tsx tests/source-parser.test.ts && tsx tests/agents.test.ts && tsx tests/config.test.ts && tsx tests/installer.test.ts && tsx tests/find.test.ts && tsx tests/package-arguments.test.ts && tsx tests/template.test.ts && tsx tests/reader.test.ts && tsx tests/formats-remove.test.ts && tsx tests/lib.test.ts && tsx tests/e2e/install.test.ts && tsx tests/e2e/cli.test.ts",
813
813
  "test:unit": "tsx tests/source-parser.test.ts && tsx tests/agents.test.ts && tsx tests/config.test.ts && tsx tests/installer.test.ts && tsx tests/find.test.ts && tsx tests/package-arguments.test.ts && tsx tests/template.test.ts && tsx tests/reader.test.ts && tsx tests/formats-remove.test.ts && tsx tests/lib.test.ts",
814
814
  "registry:sort": "tsx scripts/sort-registry.ts",
815
+ "registry:sync": "node scripts/sync-integrations-sh.mjs",
815
816
  "registry:verify": "tsx scripts/verify-registry.ts",
816
817
  "test:e2e": "tsx tests/e2e/install.test.ts && tsx tests/e2e/cli.test.ts",
817
818
  typecheck: "tsc --noEmit",
@@ -913,34 +914,19 @@ function resolveAgentType(input) {
913
914
  }
914
915
  return null;
915
916
  }
916
- async function ensureFindRegistriesConfigured(yes) {
917
+ async function ensureFindRegistriesConfigured() {
917
918
  const configured = await getFindRegistries();
918
919
  if (configured.length > 0) {
919
920
  return configured;
920
921
  }
921
- p2.log.warn("Find requires configuring one or more registries");
922
- if (yes) {
923
- p2.log.error("Re-run without --yes to configure registries for find/search");
924
- return null;
925
- }
926
- const defaults = getDefaultFindRegistries();
927
- const selected = await p2.multiselect({
928
- message: "[One time] Please select what MCP registries you would like to configure globally for search",
929
- options: defaults.map((registry) => ({
930
- value: registry.url,
931
- label: registry.label ?? registry.url
932
- })),
933
- required: true
934
- });
935
- if (p2.isCancel(selected)) {
936
- return null;
922
+ const defaultRegistry = getDefaultFindRegistries()[0];
923
+ if (!defaultRegistry) {
924
+ throw new Error("No default find registry is configured");
937
925
  }
938
- const selectedRegistries = defaults.filter(
939
- (registry) => selected.includes(registry.url)
940
- );
926
+ const selectedRegistries = [defaultRegistry];
941
927
  await saveFindRegistries(selectedRegistries);
942
928
  p2.log.info(
943
- `Selection has been saved to ${shortenPath(getConfigPath())} - you can remove or update it any time.`
929
+ `Using ${defaultRegistry.label ?? defaultRegistry.url}. Saved to ${shortenPath(getConfigPath())} - you can remove or update it any time.`
944
930
  );
945
931
  return selectedRegistries;
946
932
  }
@@ -1166,7 +1152,7 @@ async function runFindCommand(keyword, rawOptions) {
1166
1152
  ...extractSubcommandOptionsFromArgv()
1167
1153
  };
1168
1154
  const query = (keyword ?? "").trim();
1169
- const registries = await ensureFindRegistriesConfigured(options.yes);
1155
+ const registries = await ensureFindRegistriesConfigured();
1170
1156
  if (!registries) {
1171
1157
  p2.cancel("Find cancelled");
1172
1158
  process.exit(0);
@@ -1193,7 +1179,7 @@ async function runFindCommand(keyword, rawOptions) {
1193
1179
  await main(installPlan.target, mergedOptions);
1194
1180
  }
1195
1181
  program.command("find [keyword]").description(
1196
- "Find MCP servers from curated registry data (omit keyword to browse)"
1182
+ "Find MCP servers from integrations.sh registry data (omit keyword to browse)"
1197
1183
  ).option(
1198
1184
  "-g, --global",
1199
1185
  "Install globally (user-level) instead of project-level"
@@ -1726,7 +1712,7 @@ async function main(target, options) {
1726
1712
  ` ${DIM}$${RESET} ${TEXT}npx add-mcp ${DIM}<url> ${TEXT}-a cursor${RESET} ${DIM}Install to specific agent${RESET}`
1727
1713
  );
1728
1714
  console.log(
1729
- ` ${DIM}$${RESET} ${TEXT}npx add-mcp find ${DIM}<keyword>${RESET} ${DIM}Search and install curated MCP servers${RESET}`
1715
+ ` ${DIM}$${RESET} ${TEXT}npx add-mcp find ${DIM}<keyword>${RESET} ${DIM}Search integrations.sh MCP servers${RESET}`
1730
1716
  );
1731
1717
  console.log();
1732
1718
  console.log(
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "add-mcp",
3
- "version": "1.13.0",
3
+ "version": "1.13.2",
4
4
  "description": "Add MCP servers to your favorite coding agents with a single command.",
5
5
  "author": "Andre Landgraf <andre@neon.tech>",
6
6
  "license": "Apache-2.0",
@@ -28,6 +28,7 @@
28
28
  "test": "tsx tests/source-parser.test.ts && tsx tests/agents.test.ts && tsx tests/config.test.ts && tsx tests/installer.test.ts && tsx tests/find.test.ts && tsx tests/package-arguments.test.ts && tsx tests/template.test.ts && tsx tests/reader.test.ts && tsx tests/formats-remove.test.ts && tsx tests/lib.test.ts && tsx tests/e2e/install.test.ts && tsx tests/e2e/cli.test.ts",
29
29
  "test:unit": "tsx tests/source-parser.test.ts && tsx tests/agents.test.ts && tsx tests/config.test.ts && tsx tests/installer.test.ts && tsx tests/find.test.ts && tsx tests/package-arguments.test.ts && tsx tests/template.test.ts && tsx tests/reader.test.ts && tsx tests/formats-remove.test.ts && tsx tests/lib.test.ts",
30
30
  "registry:sort": "tsx scripts/sort-registry.ts",
31
+ "registry:sync": "node scripts/sync-integrations-sh.mjs",
31
32
  "registry:verify": "tsx scripts/verify-registry.ts",
32
33
  "test:e2e": "tsx tests/e2e/install.test.ts && tsx tests/e2e/cli.test.ts",
33
34
  "typecheck": "tsc --noEmit",