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.
- package/README.md +50 -15
- package/dist/index.js +12 -26
- 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
|
|
37
|
+
## Find MCP Servers
|
|
38
38
|
|
|
39
|
-
Find and install MCP servers from the
|
|
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
|
-
|
|
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
|
|
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
|
|
294
|
-
|
|
|
295
|
-
| **
|
|
296
|
-
| **Official Anthropic registry**
|
|
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
|
-
|
|
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
|
-
|
|
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": "
|
|
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
|
|
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: "
|
|
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.
|
|
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(
|
|
917
|
+
async function ensureFindRegistriesConfigured() {
|
|
917
918
|
const configured = await getFindRegistries();
|
|
918
919
|
if (configured.length > 0) {
|
|
919
920
|
return configured;
|
|
920
921
|
}
|
|
921
|
-
|
|
922
|
-
if (
|
|
923
|
-
|
|
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 =
|
|
939
|
-
(registry) => selected.includes(registry.url)
|
|
940
|
-
);
|
|
926
|
+
const selectedRegistries = [defaultRegistry];
|
|
941
927
|
await saveFindRegistries(selectedRegistries);
|
|
942
928
|
p2.log.info(
|
|
943
|
-
`
|
|
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(
|
|
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
|
|
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
|
|
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.
|
|
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",
|