builder-doctor 1.0.19 → 1.0.21
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 +36 -0
- package/dist/fetch.d.ts +2 -0
- package/dist/fetch.d.ts.map +1 -1
- package/dist/fetch.js +75 -0
- package/dist/fetch.js.map +1 -1
- package/dist/index.js +42 -2
- package/dist/index.js.map +1 -1
- package/dist/mcp.d.ts +8 -0
- package/dist/mcp.d.ts.map +1 -0
- package/dist/mcp.js +134 -0
- package/dist/mcp.js.map +1 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -154,6 +154,36 @@ npx builder-doctor install-plugin my-plugin
|
|
|
154
154
|
|
|
155
155
|
Plugin contents are extracted into the `.builder` root (for example: `skills`, `agents`, `rules`, etc).
|
|
156
156
|
|
|
157
|
+
### mcp
|
|
158
|
+
|
|
159
|
+
Add or remove the Builder MCP server entry in an agent's MCP configuration file.
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
npx builder-doctor mcp add <agent>
|
|
163
|
+
npx builder-doctor mcp remove <agent>
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
Supported agents and the file each one writes to:
|
|
167
|
+
|
|
168
|
+
| Agent | File |
|
|
169
|
+
| ------------ | ------------------------------------- |
|
|
170
|
+
| `claude` | `~/.claude/settings.local.json` |
|
|
171
|
+
| `cursor` | `~/.cursor/mcp.json` |
|
|
172
|
+
| `copilot` | `.vscode/mcp.json` (project-local) |
|
|
173
|
+
| `code_puppy` | `~/.code_puppy/mcp_servers.json` |
|
|
174
|
+
| _(omitted)_ | `mcp.json` (project-local) |
|
|
175
|
+
|
|
176
|
+
`add` creates the file (and any missing parent directories) if it doesn't exist, and merges the `builder-mcp` entry into it without disturbing other settings. `remove` deletes only the `builder-mcp` entry.
|
|
177
|
+
|
|
178
|
+
```bash
|
|
179
|
+
npx builder-doctor mcp add claude # ~/.claude/settings.local.json
|
|
180
|
+
npx builder-doctor mcp add cursor # ~/.cursor/mcp.json
|
|
181
|
+
npx builder-doctor mcp add copilot # .vscode/mcp.json
|
|
182
|
+
npx builder-doctor mcp add code_puppy # ~/.code_puppy/mcp_servers.json
|
|
183
|
+
npx builder-doctor mcp add # ./mcp.json
|
|
184
|
+
npx builder-doctor mcp remove claude # remove from Claude
|
|
185
|
+
```
|
|
186
|
+
|
|
157
187
|
## Examples
|
|
158
188
|
|
|
159
189
|
```bash
|
|
@@ -171,5 +201,11 @@ builder-doctor skills --source myorg/myrepo # List availabl
|
|
|
171
201
|
BUILDER_SKILLS_SOURCE=myorg/myrepo builder-doctor skills # Use env var as the default source
|
|
172
202
|
builder-doctor install-plugin my-plugin # Install a plugin into .builder
|
|
173
203
|
builder-doctor install-plugin my-plugin --source myorg/myrepo # Install a plugin from a custom source
|
|
204
|
+
builder-doctor mcp add claude # Add Builder MCP entry to ~/.claude/settings.local.json
|
|
205
|
+
builder-doctor mcp add cursor # Add Builder MCP entry to ~/.cursor/mcp.json
|
|
206
|
+
builder-doctor mcp add copilot # Add Builder MCP entry to .vscode/mcp.json
|
|
207
|
+
builder-doctor mcp add code_puppy # Add Builder MCP entry to ~/.code_puppy/mcp_servers.json
|
|
208
|
+
builder-doctor mcp add # Create or update a local mcp.json
|
|
209
|
+
builder-doctor mcp remove claude # Remove the Builder MCP entry for Claude
|
|
174
210
|
builder-doctor --verbose # Run all checks with detailed output
|
|
175
211
|
```
|
package/dist/fetch.d.ts
CHANGED
|
@@ -10,6 +10,8 @@ declare function getAgent(_url?: string): Promise<Dispatcher>;
|
|
|
10
10
|
* Uses undici; respects NODE_TLS_REJECT_UNAUTHORIZED for TLS verification.
|
|
11
11
|
*/
|
|
12
12
|
export declare const safeFetch: (input: string | URL, init?: RequestInit) => ReturnType<typeof globalThis.fetch>;
|
|
13
|
+
export declare function getTlsCertErrorCode(error: unknown): string | undefined;
|
|
14
|
+
export declare function formatTlsCertErrorMessage(code: string): string;
|
|
13
15
|
export declare const __testing__: {
|
|
14
16
|
getAgent: typeof getAgent;
|
|
15
17
|
resetCache: () => void;
|
package/dist/fetch.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,WAAW,EAGhB,UAAU,EACX,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,WAAW,EAGhB,UAAU,EACX,MAAM,QAAQ,CAAC;AA4ChB;;;;GAIG;AACH,iBAAe,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAmC1D;AAoBD;;;GAGG;AACH,eAAO,MAAM,SAAS,GACpB,OAAO,MAAM,GAAG,GAAG,EACnB,OAAO,WAAW,KACjB,UAAU,CAAC,OAAO,UAAU,CAAC,KAAK,CAWpC,CAAC;AAWF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAUtE;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAqB9D;AAED,eAAO,MAAM,WAAW;;;CAKvB,CAAC"}
|
package/dist/fetch.js
CHANGED
|
@@ -4,16 +4,50 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.__testing__ = exports.safeFetch = void 0;
|
|
7
|
+
exports.getTlsCertErrorCode = getTlsCertErrorCode;
|
|
8
|
+
exports.formatTlsCertErrorMessage = formatTlsCertErrorMessage;
|
|
7
9
|
const undici_1 = require("undici");
|
|
8
10
|
const node_process_1 = __importDefault(require("node:process"));
|
|
11
|
+
const node_tls_1 = __importDefault(require("node:tls"));
|
|
9
12
|
const package_json_1 = require("../package.json");
|
|
10
13
|
let _agent;
|
|
14
|
+
let _systemCAsLoaded = false;
|
|
15
|
+
/**
|
|
16
|
+
* Merge the OS trust store into Node's default CA list so that requests trust
|
|
17
|
+
* certificates added at the system level (e.g. corporate root CAs deployed via
|
|
18
|
+
* MDM, Keychain, the Windows cert store, or /etc/ssl/certs).
|
|
19
|
+
*
|
|
20
|
+
* No-op on Node versions that lack tls.getCACertificates / setDefaultCACertificates
|
|
21
|
+
* (added in Node 22.15). Best-effort; failures are swallowed so an unusual
|
|
22
|
+
* system trust store cannot break fetches that would otherwise have worked.
|
|
23
|
+
*/
|
|
24
|
+
function ensureSystemCAsLoaded() {
|
|
25
|
+
if (_systemCAsLoaded)
|
|
26
|
+
return;
|
|
27
|
+
_systemCAsLoaded = true;
|
|
28
|
+
const t = node_tls_1.default;
|
|
29
|
+
if (typeof t.getCACertificates !== "function" ||
|
|
30
|
+
typeof t.setDefaultCACertificates !== "function") {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
try {
|
|
34
|
+
const system = t.getCACertificates("system");
|
|
35
|
+
if (!system || system.length === 0)
|
|
36
|
+
return;
|
|
37
|
+
const defaults = t.getCACertificates("default");
|
|
38
|
+
t.setDefaultCACertificates([...defaults, ...system]);
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
// best-effort — fall through to whatever default trust Node had
|
|
42
|
+
}
|
|
43
|
+
}
|
|
11
44
|
/**
|
|
12
45
|
* Get a dispatcher (Agent or ProxyAgent) for fetch requests.
|
|
13
46
|
* Respects HTTPS_PROXY, https_proxy, HTTP_PROXY, http_proxy.
|
|
14
47
|
* When no proxy is set, uses a plain Agent with optional TLS verification control.
|
|
15
48
|
*/
|
|
16
49
|
async function getAgent(_url) {
|
|
50
|
+
ensureSystemCAsLoaded();
|
|
17
51
|
const rejectUnauthorized = node_process_1.default.env.NODE_TLS_REJECT_UNAUTHORIZED !== "0";
|
|
18
52
|
const envProxyUrl = node_process_1.default.env.HTTPS_PROXY ||
|
|
19
53
|
node_process_1.default.env.https_proxy ||
|
|
@@ -74,6 +108,47 @@ const safeFetch = async (input, init) => {
|
|
|
74
108
|
});
|
|
75
109
|
};
|
|
76
110
|
exports.safeFetch = safeFetch;
|
|
111
|
+
const TLS_CERT_ERROR_CODES = new Set([
|
|
112
|
+
"SELF_SIGNED_CERT_IN_CHAIN",
|
|
113
|
+
"DEPTH_ZERO_SELF_SIGNED_CERT",
|
|
114
|
+
"UNABLE_TO_GET_ISSUER_CERT_LOCALLY",
|
|
115
|
+
"UNABLE_TO_VERIFY_LEAF_SIGNATURE",
|
|
116
|
+
"CERT_UNTRUSTED",
|
|
117
|
+
"ERR_TLS_CERT_ALTNAME_INVALID",
|
|
118
|
+
]);
|
|
119
|
+
function getTlsCertErrorCode(error) {
|
|
120
|
+
let current = error;
|
|
121
|
+
for (let i = 0; i < 8 && current; i += 1) {
|
|
122
|
+
const code = current.code;
|
|
123
|
+
if (typeof code === "string" && TLS_CERT_ERROR_CODES.has(code)) {
|
|
124
|
+
return code;
|
|
125
|
+
}
|
|
126
|
+
current = current.cause;
|
|
127
|
+
}
|
|
128
|
+
return undefined;
|
|
129
|
+
}
|
|
130
|
+
function formatTlsCertErrorMessage(code) {
|
|
131
|
+
return [
|
|
132
|
+
`Network request failed with TLS certificate error: ${code}.`,
|
|
133
|
+
"",
|
|
134
|
+
"This usually means your network is behind a corporate proxy or firewall that",
|
|
135
|
+
"intercepts HTTPS traffic with a custom certificate authority that Node.js does",
|
|
136
|
+
"not trust by default.",
|
|
137
|
+
"",
|
|
138
|
+
"To fix this, try one of the following (in order of preference):",
|
|
139
|
+
" 1. Point Node at your organization's root CA bundle (recommended):",
|
|
140
|
+
" export NODE_EXTRA_CA_CERTS=/path/to/your-org-ca.pem",
|
|
141
|
+
" Ask your IT team for the certificate file if you do not have it.",
|
|
142
|
+
"",
|
|
143
|
+
" 2. If you are behind an HTTP(S) proxy, make sure it is set:",
|
|
144
|
+
" export HTTPS_PROXY=http://your-proxy:port",
|
|
145
|
+
" export HTTP_PROXY=http://your-proxy:port",
|
|
146
|
+
"",
|
|
147
|
+
" 3. As a last resort (insecure, disables TLS verification), re-run with",
|
|
148
|
+
" the --acceptSelfSigned flag, or set:",
|
|
149
|
+
" export NODE_TLS_REJECT_UNAUTHORIZED=0",
|
|
150
|
+
].join("\n");
|
|
151
|
+
}
|
|
77
152
|
exports.__testing__ = {
|
|
78
153
|
getAgent,
|
|
79
154
|
resetCache: () => {
|
package/dist/fetch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch.js","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"fetch.js","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -6,8 +6,15 @@ const setup_1 = require("./setup");
|
|
|
6
6
|
const env_1 = require("./env");
|
|
7
7
|
const network_1 = require("./network");
|
|
8
8
|
const install_1 = require("./install");
|
|
9
|
+
const mcp_1 = require("./mcp");
|
|
10
|
+
const fetch_1 = require("./fetch");
|
|
9
11
|
const args = process.argv.slice(2);
|
|
10
12
|
const verbose = args.includes("--verbose");
|
|
13
|
+
const acceptSelfSigned = args.includes("--acceptSelfSigned");
|
|
14
|
+
if (acceptSelfSigned) {
|
|
15
|
+
process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
|
|
16
|
+
console.warn("Warning: --acceptSelfSigned is set. TLS certificate verification is disabled for this run; only use on trusted networks.");
|
|
17
|
+
}
|
|
11
18
|
const rules = args.includes("rules");
|
|
12
19
|
const network = args.includes("network");
|
|
13
20
|
const setup = args.includes("setup");
|
|
@@ -25,6 +32,9 @@ if (installSkill) {
|
|
|
25
32
|
const installPlugin = args[0] === "install-plugin";
|
|
26
33
|
const installPluginName = installPlugin ? args[1] : undefined;
|
|
27
34
|
const skills = args[0] === "skills";
|
|
35
|
+
const mcp = args[0] === "mcp";
|
|
36
|
+
const mcpActionRaw = mcp ? args[1] : undefined;
|
|
37
|
+
const mcpAgent = mcp && args[2] && !args[2].startsWith("--") ? args[2] : undefined;
|
|
28
38
|
const source = getOptionValue("--source");
|
|
29
39
|
const agent = getOptionValue("--agent");
|
|
30
40
|
const all = !rules &&
|
|
@@ -34,7 +44,8 @@ const all = !rules &&
|
|
|
34
44
|
!showHelp &&
|
|
35
45
|
!installSkill &&
|
|
36
46
|
!installPlugin &&
|
|
37
|
-
!skills
|
|
47
|
+
!skills &&
|
|
48
|
+
!mcp;
|
|
38
49
|
const help = `
|
|
39
50
|
builder-doctor - A CLI tool for Builder.io diagnostics
|
|
40
51
|
|
|
@@ -49,12 +60,15 @@ Commands:
|
|
|
49
60
|
Use --agent <name> to change the install folder (e.g. github, claude, cursor)
|
|
50
61
|
skills List available skills
|
|
51
62
|
install-plugin <plugin-name> Install a plugin from BuilderIO/builder-agent-plugins
|
|
63
|
+
mcp <add|remove> [agent] Add or remove the Builder MCP server entry
|
|
64
|
+
Agents: claude, cursor, copilot, code_puppy. Omit agent to write a local mcp.json.
|
|
52
65
|
help Show this help message
|
|
53
66
|
|
|
54
67
|
Options:
|
|
55
68
|
--verbose Show detailed output for each check
|
|
56
69
|
--source <owner/repo> Override source repository (GitHub owner/repository). Overrides BUILDER_SKILLS_SOURCE
|
|
57
70
|
--agent <name> Set the target agent folder (e.g. github -> .github, claude -> .claude). Default: .builder
|
|
71
|
+
--acceptSelfSigned Trust self-signed / untrusted TLS certificates for this run (insecure; only use on trusted networks)
|
|
58
72
|
--help, -h Show this help message
|
|
59
73
|
|
|
60
74
|
Examples:
|
|
@@ -72,6 +86,12 @@ Examples:
|
|
|
72
86
|
builder-doctor install-skill skill-creator --source myorg/myrepo Install a skill from a custom source
|
|
73
87
|
builder-doctor install-plugin my-plugin Install a plugin into .builder
|
|
74
88
|
builder-doctor install-plugin my-plugin --source myorg/myrepo Install a plugin from a custom source
|
|
89
|
+
builder-doctor mcp add claude Add Builder MCP entry to ~/.claude/settings.local.json
|
|
90
|
+
builder-doctor mcp add cursor Add Builder MCP entry to ~/.cursor/mcp.json
|
|
91
|
+
builder-doctor mcp add copilot Add Builder MCP entry to .vscode/mcp.json
|
|
92
|
+
builder-doctor mcp add code_puppy Add Builder MCP entry to ~/.code_puppy/mcp_servers.json
|
|
93
|
+
builder-doctor mcp add Create or update a local mcp.json
|
|
94
|
+
builder-doctor mcp remove claude Remove the Builder MCP entry for Claude
|
|
75
95
|
builder-doctor --verbose Run rules and network checks with detailed output
|
|
76
96
|
`;
|
|
77
97
|
const nonInteractive = !process.stdin.isTTY || !process.stdout.isTTY;
|
|
@@ -139,9 +159,29 @@ async function main() {
|
|
|
139
159
|
verbose,
|
|
140
160
|
});
|
|
141
161
|
}
|
|
162
|
+
if (mcp) {
|
|
163
|
+
if (mcpActionRaw !== "add" && mcpActionRaw !== "remove") {
|
|
164
|
+
console.error("Invalid MCP action. Usage: builder-doctor mcp <add|remove> [agent]");
|
|
165
|
+
process.exit(1);
|
|
166
|
+
}
|
|
167
|
+
await (0, mcp_1.runMcp)({
|
|
168
|
+
action: mcpActionRaw,
|
|
169
|
+
agent: mcpAgent,
|
|
170
|
+
verbose,
|
|
171
|
+
});
|
|
172
|
+
}
|
|
142
173
|
}
|
|
143
174
|
catch (error) {
|
|
144
|
-
|
|
175
|
+
const tlsErrorCode = (0, fetch_1.getTlsCertErrorCode)(error);
|
|
176
|
+
if (tlsErrorCode) {
|
|
177
|
+
console.error((0, fetch_1.formatTlsCertErrorMessage)(tlsErrorCode));
|
|
178
|
+
if (verbose) {
|
|
179
|
+
console.error("\nOriginal error:", error);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
console.error("An error occurred:", error);
|
|
184
|
+
}
|
|
145
185
|
process.exit(1);
|
|
146
186
|
}
|
|
147
187
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAEA,mCAAqC;AACrC,mCAAmC;AACnC,+BAA+B;AAC/B,uCAAuC;AACvC,uCAA6E;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,QAAQ,CAAC;AAEzC,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAaD,wBAAsB,MAAM,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAkB/D"}
|
package/dist/mcp.js
ADDED
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.runMcp = runMcp;
|
|
7
|
+
const node_fs_1 = require("node:fs");
|
|
8
|
+
const node_os_1 = require("node:os");
|
|
9
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
10
|
+
const SERVER_KEY = "builder-mcp";
|
|
11
|
+
const SERVER_COMMAND = "npx";
|
|
12
|
+
const SERVER_ARGS = ["@builder.io/dev-tools@latest", "mcp"];
|
|
13
|
+
async function runMcp(options) {
|
|
14
|
+
const { action, agent, verbose = false } = options;
|
|
15
|
+
const target = resolveTarget(agent);
|
|
16
|
+
if (verbose) {
|
|
17
|
+
console.log(`${action === "add" ? "Adding" : "Removing"} ${SERVER_KEY} ${action === "add" ? "to" : "from"} ${target.filePath}`);
|
|
18
|
+
}
|
|
19
|
+
if (action === "add") {
|
|
20
|
+
addServer(target);
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
removeServer(target);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function resolveTarget(agent) {
|
|
27
|
+
const standardEntry = {
|
|
28
|
+
command: SERVER_COMMAND,
|
|
29
|
+
args: [...SERVER_ARGS],
|
|
30
|
+
};
|
|
31
|
+
if (!agent) {
|
|
32
|
+
return {
|
|
33
|
+
agentLabel: "local",
|
|
34
|
+
filePath: node_path_1.default.join(process.cwd(), "mcp.json"),
|
|
35
|
+
containerKey: "mcpServers",
|
|
36
|
+
serverEntry: standardEntry,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
switch (agent) {
|
|
40
|
+
case "claude":
|
|
41
|
+
return {
|
|
42
|
+
agentLabel: "Claude",
|
|
43
|
+
filePath: node_path_1.default.join((0, node_os_1.homedir)(), ".claude", "settings.local.json"),
|
|
44
|
+
containerKey: "mcpServers",
|
|
45
|
+
serverEntry: standardEntry,
|
|
46
|
+
};
|
|
47
|
+
case "cursor":
|
|
48
|
+
return {
|
|
49
|
+
agentLabel: "Cursor",
|
|
50
|
+
filePath: node_path_1.default.join((0, node_os_1.homedir)(), ".cursor", "mcp.json"),
|
|
51
|
+
containerKey: "mcpServers",
|
|
52
|
+
serverEntry: standardEntry,
|
|
53
|
+
};
|
|
54
|
+
case "copilot":
|
|
55
|
+
return {
|
|
56
|
+
agentLabel: "Copilot",
|
|
57
|
+
filePath: node_path_1.default.join(process.cwd(), ".vscode", "mcp.json"),
|
|
58
|
+
containerKey: "servers",
|
|
59
|
+
serverEntry: {
|
|
60
|
+
type: "stdio",
|
|
61
|
+
command: SERVER_COMMAND,
|
|
62
|
+
args: [...SERVER_ARGS],
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
case "code_puppy":
|
|
66
|
+
return {
|
|
67
|
+
agentLabel: "Code Puppy",
|
|
68
|
+
filePath: node_path_1.default.join((0, node_os_1.homedir)(), ".code_puppy", "mcp_servers.json"),
|
|
69
|
+
containerKey: "mcp_servers",
|
|
70
|
+
serverEntry: {
|
|
71
|
+
type: "stdio",
|
|
72
|
+
command: SERVER_COMMAND,
|
|
73
|
+
args: [...SERVER_ARGS],
|
|
74
|
+
enabled: true,
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
default:
|
|
78
|
+
throw new Error(`Unknown MCP agent "${agent}". Supported: claude, cursor, copilot, code_puppy, or omit for a local mcp.json.`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
function addServer(target) {
|
|
82
|
+
const config = readJsonFile(target.filePath);
|
|
83
|
+
const existingContainer = config[target.containerKey];
|
|
84
|
+
const container = existingContainer && typeof existingContainer === "object" && !Array.isArray(existingContainer)
|
|
85
|
+
? existingContainer
|
|
86
|
+
: {};
|
|
87
|
+
container[SERVER_KEY] = target.serverEntry;
|
|
88
|
+
config[target.containerKey] = container;
|
|
89
|
+
writeJsonFile(target.filePath, config);
|
|
90
|
+
console.log(`MCP support added for Builder to ${target.agentLabel} in ${target.filePath}`);
|
|
91
|
+
}
|
|
92
|
+
function removeServer(target) {
|
|
93
|
+
if (!(0, node_fs_1.existsSync)(target.filePath)) {
|
|
94
|
+
console.log(`No MCP configuration found for ${target.agentLabel} at ${target.filePath}`);
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
const config = readJsonFile(target.filePath);
|
|
98
|
+
const container = config[target.containerKey];
|
|
99
|
+
if (!container ||
|
|
100
|
+
typeof container !== "object" ||
|
|
101
|
+
Array.isArray(container) ||
|
|
102
|
+
!(SERVER_KEY in container)) {
|
|
103
|
+
console.log(`MCP support for Builder was not present in ${target.filePath}`);
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
delete container[SERVER_KEY];
|
|
107
|
+
writeJsonFile(target.filePath, config);
|
|
108
|
+
console.log(`MCP support removed for Builder from ${target.agentLabel} in ${target.filePath}`);
|
|
109
|
+
}
|
|
110
|
+
function readJsonFile(filePath) {
|
|
111
|
+
if (!(0, node_fs_1.existsSync)(filePath)) {
|
|
112
|
+
return {};
|
|
113
|
+
}
|
|
114
|
+
const raw = (0, node_fs_1.readFileSync)(filePath, "utf8").trim();
|
|
115
|
+
if (!raw) {
|
|
116
|
+
return {};
|
|
117
|
+
}
|
|
118
|
+
try {
|
|
119
|
+
const parsed = JSON.parse(raw);
|
|
120
|
+
if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
|
|
121
|
+
return parsed;
|
|
122
|
+
}
|
|
123
|
+
throw new Error(`Expected a JSON object in ${filePath}`);
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
127
|
+
throw new Error(`Failed to parse JSON in ${filePath}: ${message}`);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
function writeJsonFile(filePath, data) {
|
|
131
|
+
(0, node_fs_1.mkdirSync)(node_path_1.default.dirname(filePath), { recursive: true });
|
|
132
|
+
(0, node_fs_1.writeFileSync)(filePath, JSON.stringify(data, null, 2) + "\n", "utf8");
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=mcp.js.map
|
package/dist/mcp.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED