@thantos66/claude-context-mcp 0.1.0 → 0.2.0

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/dist/index.js CHANGED
@@ -21,10 +21,16 @@ import { registerPermissionsTools } from "./tools/permissions.js";
21
21
  import { registerAgentTools } from "./tools/agents.js";
22
22
  import { registerSkillTools } from "./tools/skills.js";
23
23
  import { registerMetaTools } from "./tools/meta.js";
24
+ import { runProxy } from "./proxy.js";
24
25
  async function main() {
26
+ // Subcommand: proxy mode — sanitize tool schemas from an external MCP server
27
+ if (process.argv[2] === "proxy") {
28
+ runProxy(process.argv.slice(3));
29
+ return;
30
+ }
25
31
  const server = new McpServer({
26
32
  name: "claude-context-mcp",
27
- version: "0.1.0",
33
+ version: "0.2.0",
28
34
  });
29
35
  registerMcpTools(server);
30
36
  registerPermissionsTools(server);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,KAAK,UAAU,IAAI;IACjB,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,oBAAoB;QAC1B,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACzB,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACjC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC3B,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC3B,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAE1B,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,0EAA0E;IAC1E,sDAAsD;IACtD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;AAChE,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,+BAAgC,GAAa,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC,CAAC;IACrF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,KAAK,UAAU,IAAI;IACjB,6EAA6E;IAC7E,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;QAChC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAChC,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,oBAAoB;QAC1B,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACzB,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACjC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC3B,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC3B,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAE1B,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,0EAA0E;IAC1E,sDAAsD;IACtD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;AAChE,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,+BAAgC,GAAa,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC,CAAC;IACrF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function runProxy(childArgs: string[]): void;
package/dist/proxy.js ADDED
@@ -0,0 +1,208 @@
1
+ /**
2
+ * Schema-sanitizing MCP stdio proxy.
3
+ *
4
+ * Sits between Claude Code and any MCP server. Transparently passes all
5
+ * JSON-RPC messages, but intercepts `tools/list` responses and flattens
6
+ * `oneOf`, `anyOf`, and `allOf` in tool input schemas — which the Claude
7
+ * API rejects.
8
+ *
9
+ * Usage:
10
+ * node dist/index.js proxy <command> [args...]
11
+ * npx @thantos66/claude-context-mcp proxy npx -y @stripe/mcp
12
+ *
13
+ * Security: The proxy never touches secrets or data payloads — only schema
14
+ * metadata in tools/list responses. The child process inherits env as-is.
15
+ */
16
+ import { spawn } from "node:child_process";
17
+ import { createInterface } from "node:readline";
18
+ // ── Schema sanitization ─────────────────────────────────────────────
19
+ /**
20
+ * Recursively walk a JSON Schema node and flatten any oneOf/anyOf/allOf
21
+ * by merging all branch properties into a single object schema.
22
+ */
23
+ function sanitizeSchema(schema) {
24
+ if (schema === null || typeof schema !== "object" || Array.isArray(schema)) {
25
+ return schema;
26
+ }
27
+ const result = { ...schema };
28
+ // Handle top-level or nested oneOf/anyOf/allOf
29
+ for (const keyword of ["oneOf", "anyOf", "allOf"]) {
30
+ if (Array.isArray(result[keyword])) {
31
+ const branches = result[keyword];
32
+ const merged = mergeBranches(branches);
33
+ // Remove the keyword and merge the result
34
+ delete result[keyword];
35
+ Object.assign(result, merged);
36
+ }
37
+ }
38
+ // Ensure we have type: "object" if we have properties
39
+ if (result.properties && !result.type) {
40
+ result.type = "object";
41
+ }
42
+ // Recurse into properties
43
+ if (result.properties && typeof result.properties === "object") {
44
+ const props = result.properties;
45
+ const sanitized = {};
46
+ for (const [key, value] of Object.entries(props)) {
47
+ sanitized[key] =
48
+ value && typeof value === "object" && !Array.isArray(value)
49
+ ? sanitizeSchema(value)
50
+ : value;
51
+ }
52
+ result.properties = sanitized;
53
+ }
54
+ // Recurse into items (array schemas)
55
+ if (result.items && typeof result.items === "object" && !Array.isArray(result.items)) {
56
+ result.items = sanitizeSchema(result.items);
57
+ }
58
+ // Recurse into additionalProperties if it's a schema
59
+ if (result.additionalProperties &&
60
+ typeof result.additionalProperties === "object" &&
61
+ !Array.isArray(result.additionalProperties)) {
62
+ result.additionalProperties = sanitizeSchema(result.additionalProperties);
63
+ }
64
+ return result;
65
+ }
66
+ /**
67
+ * Merge multiple JSON Schema branch objects into a single flat object schema.
68
+ * Properties from all branches are collected; required arrays are unioned.
69
+ */
70
+ function mergeBranches(branches) {
71
+ const mergedProps = {};
72
+ const mergedRequired = new Set();
73
+ let hasProperties = false;
74
+ for (const branch of branches) {
75
+ if (branch === null || typeof branch !== "object")
76
+ continue;
77
+ // Recursively sanitize each branch first
78
+ const clean = sanitizeSchema(branch);
79
+ if (clean.properties && typeof clean.properties === "object") {
80
+ hasProperties = true;
81
+ const props = clean.properties;
82
+ for (const [key, value] of Object.entries(props)) {
83
+ // First branch wins for conflicting property definitions
84
+ if (!(key in mergedProps)) {
85
+ mergedProps[key] = value;
86
+ }
87
+ }
88
+ }
89
+ if (Array.isArray(clean.required)) {
90
+ for (const r of clean.required) {
91
+ if (typeof r === "string")
92
+ mergedRequired.add(r);
93
+ }
94
+ }
95
+ }
96
+ const result = { type: "object" };
97
+ if (hasProperties) {
98
+ result.properties = mergedProps;
99
+ }
100
+ // Only include required fields that actually exist in merged properties
101
+ const validRequired = [...mergedRequired].filter((r) => r in mergedProps);
102
+ if (validRequired.length > 0) {
103
+ result.required = validRequired;
104
+ }
105
+ return result;
106
+ }
107
+ /**
108
+ * Check if a schema (or any nested part) contains oneOf/anyOf/allOf.
109
+ */
110
+ function schemaHasUnion(schema) {
111
+ if (schema === null || typeof schema !== "object" || Array.isArray(schema)) {
112
+ return false;
113
+ }
114
+ const obj = schema;
115
+ if (obj.oneOf || obj.anyOf || obj.allOf)
116
+ return true;
117
+ // Check nested properties
118
+ if (obj.properties && typeof obj.properties === "object") {
119
+ for (const value of Object.values(obj.properties)) {
120
+ if (schemaHasUnion(value))
121
+ return true;
122
+ }
123
+ }
124
+ if (obj.items && typeof obj.items === "object") {
125
+ if (schemaHasUnion(obj.items))
126
+ return true;
127
+ }
128
+ if (obj.additionalProperties && typeof obj.additionalProperties === "object") {
129
+ if (schemaHasUnion(obj.additionalProperties))
130
+ return true;
131
+ }
132
+ return false;
133
+ }
134
+ // ── JSON-RPC message processing ─────────────────────────────────────
135
+ /**
136
+ * Process a JSON-RPC response. If it's a tools/list result, sanitize
137
+ * tool input schemas. Returns the (possibly modified) message string.
138
+ */
139
+ function processMessage(line) {
140
+ let msg;
141
+ try {
142
+ msg = JSON.parse(line);
143
+ }
144
+ catch {
145
+ return line; // Not JSON — pass through
146
+ }
147
+ // Only process JSON-RPC responses that have a result with tools array
148
+ if (!msg.result || typeof msg.result !== "object")
149
+ return line;
150
+ const result = msg.result;
151
+ if (!Array.isArray(result.tools))
152
+ return line;
153
+ // This is a tools/list response — sanitize each tool's inputSchema
154
+ const tools = result.tools;
155
+ const patched = [];
156
+ for (const tool of tools) {
157
+ if (!tool.inputSchema || typeof tool.inputSchema !== "object")
158
+ continue;
159
+ const schema = tool.inputSchema;
160
+ if (schemaHasUnion(schema)) {
161
+ const name = tool.name || "(unknown)";
162
+ tool.inputSchema = sanitizeSchema(schema);
163
+ patched.push(name);
164
+ }
165
+ }
166
+ if (patched.length > 0) {
167
+ process.stderr.write(`[claude-context-mcp proxy] sanitized ${patched.length} tool schema(s): ${patched.join(", ")}\n`);
168
+ }
169
+ return JSON.stringify(msg);
170
+ }
171
+ // ── Main proxy logic ────────────────────────────────────────────────
172
+ export function runProxy(childArgs) {
173
+ if (childArgs.length === 0) {
174
+ process.stderr.write("[claude-context-mcp proxy] error: no command specified\n" +
175
+ "Usage: claude-context-mcp proxy <command> [args...]\n");
176
+ process.exit(1);
177
+ }
178
+ const [command, ...args] = childArgs;
179
+ const child = spawn(command, args, {
180
+ stdio: ["pipe", "pipe", "inherit"], // stdin: pipe, stdout: pipe, stderr: inherit
181
+ env: process.env,
182
+ });
183
+ child.on("error", (err) => {
184
+ process.stderr.write(`[claude-context-mcp proxy] failed to spawn "${command}": ${err.message}\n`);
185
+ process.exit(1);
186
+ });
187
+ child.on("exit", (code, signal) => {
188
+ if (signal) {
189
+ process.stderr.write(`[claude-context-mcp proxy] child killed by signal ${signal}\n`);
190
+ process.exit(1);
191
+ }
192
+ process.exit(code ?? 0);
193
+ });
194
+ // stdin → child stdin (pass through, no processing needed)
195
+ process.stdin.pipe(child.stdin);
196
+ // child stdout → process stdout (intercept and sanitize)
197
+ const rl = createInterface({ input: child.stdout, crlfDelay: Infinity });
198
+ rl.on("line", (line) => {
199
+ const processed = processMessage(line);
200
+ process.stdout.write(processed + "\n");
201
+ });
202
+ // Handle parent stdin closing
203
+ process.stdin.on("end", () => {
204
+ child.stdin.end();
205
+ });
206
+ process.stderr.write(`[claude-context-mcp proxy] proxying: ${command} ${args.join(" ")}\n`);
207
+ }
208
+ //# sourceMappingURL=proxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy.js","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"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"}
@@ -32,21 +32,21 @@ export declare const AgentInputSchema: z.ZodObject<{
32
32
  name: z.ZodString;
33
33
  description: z.ZodString;
34
34
  model: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["sonnet", "opus", "haiku", "inherit"]>, z.ZodString]>>;
35
- tools: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
35
+ tools: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
36
36
  color: z.ZodOptional<z.ZodString>;
37
37
  body: z.ZodDefault<z.ZodString>;
38
38
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
39
39
  name: z.ZodString;
40
40
  description: z.ZodString;
41
41
  model: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["sonnet", "opus", "haiku", "inherit"]>, z.ZodString]>>;
42
- tools: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
42
+ tools: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
43
43
  color: z.ZodOptional<z.ZodString>;
44
44
  body: z.ZodDefault<z.ZodString>;
45
45
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
46
46
  name: z.ZodString;
47
47
  description: z.ZodString;
48
48
  model: z.ZodOptional<z.ZodUnion<[z.ZodEnum<["sonnet", "opus", "haiku", "inherit"]>, z.ZodString]>>;
49
- tools: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
49
+ tools: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
50
50
  color: z.ZodOptional<z.ZodString>;
51
51
  body: z.ZodDefault<z.ZodString>;
52
52
  }, z.ZodTypeAny, "passthrough">>;
@@ -27,7 +27,7 @@ export const AgentInputSchema = z
27
27
  name: AgentFrontmatterSchema.shape.name,
28
28
  description: z.string().min(1),
29
29
  model: AgentModelSchema.optional(),
30
- tools: z.union([z.string(), z.array(z.string())]).optional(),
30
+ tools: z.array(z.string()).optional(),
31
31
  color: z.string().optional(),
32
32
  body: z.string().default(""),
33
33
  })
@@ -1 +1 @@
1
- {"version":3,"file":"agent-frontmatter.js","sourceRoot":"","sources":["../../src/schemas/agent-frontmatter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC;IACtC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IAC9C,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,4CAA4C;CAChE,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC;KACpC,MAAM,CAAC;IACN,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,KAAK,CAAC,sBAAsB,EAAE,qDAAqD,CAAC;IACvF,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,KAAK,EAAE,gBAAgB,CAAC,QAAQ,EAAE;IAClC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,0BAA0B;IACxD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC7B,CAAC;KACD,WAAW,EAAE,CAAC;AAIjB,gFAAgF;AAChF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC;KAC9B,MAAM,CAAC;IACN,IAAI,EAAE,sBAAsB,CAAC,KAAK,CAAC,IAAI;IACvC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,KAAK,EAAE,gBAAgB,CAAC,QAAQ,EAAE;IAClC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC5D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;CAC7B,CAAC;KACD,WAAW,EAAE,CAAC;AAIjB,wEAAwE;AACxE,MAAM,UAAU,cAAc,CAC5B,KAAoC;IAEpC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClD,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"agent-frontmatter.js","sourceRoot":"","sources":["../../src/schemas/agent-frontmatter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC;IACtC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IAC9C,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,4CAA4C;CAChE,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC;KACpC,MAAM,CAAC;IACN,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,KAAK,CAAC,sBAAsB,EAAE,qDAAqD,CAAC;IACvF,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,KAAK,EAAE,gBAAgB,CAAC,QAAQ,EAAE;IAClC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,0BAA0B;IACxD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC7B,CAAC;KACD,WAAW,EAAE,CAAC;AAIjB,gFAAgF;AAChF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC;KAC9B,MAAM,CAAC;IACN,IAAI,EAAE,sBAAsB,CAAC,KAAK,CAAC,IAAI;IACvC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,KAAK,EAAE,gBAAgB,CAAC,QAAQ,EAAE;IAClC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACrC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;CAC7B,CAAC;KACD,WAAW,EAAE,CAAC;AAIjB,wEAAwE;AACxE,MAAM,UAAU,cAAc,CAC5B,KAAoC;IAEpC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -17,7 +17,7 @@ export declare const SkillFrontmatterSchema: z.ZodObject<{
17
17
  model: z.ZodOptional<z.ZodString>;
18
18
  effort: z.ZodOptional<z.ZodEnum<["low", "medium", "high", "max"]>>;
19
19
  context: z.ZodOptional<z.ZodEnum<["fork"]>>;
20
- paths: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
20
+ paths: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
21
21
  }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
22
22
  name: z.ZodString;
23
23
  description: z.ZodString;
@@ -27,7 +27,7 @@ export declare const SkillFrontmatterSchema: z.ZodObject<{
27
27
  model: z.ZodOptional<z.ZodString>;
28
28
  effort: z.ZodOptional<z.ZodEnum<["low", "medium", "high", "max"]>>;
29
29
  context: z.ZodOptional<z.ZodEnum<["fork"]>>;
30
- paths: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
30
+ paths: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
31
31
  }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
32
32
  name: z.ZodString;
33
33
  description: z.ZodString;
@@ -37,6 +37,6 @@ export declare const SkillFrontmatterSchema: z.ZodObject<{
37
37
  model: z.ZodOptional<z.ZodString>;
38
38
  effort: z.ZodOptional<z.ZodEnum<["low", "medium", "high", "max"]>>;
39
39
  context: z.ZodOptional<z.ZodEnum<["fork"]>>;
40
- paths: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
40
+ paths: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
41
41
  }, z.ZodTypeAny, "passthrough">>;
42
42
  export type SkillFrontmatter = z.infer<typeof SkillFrontmatterSchema>;
@@ -21,7 +21,7 @@ export const SkillFrontmatterSchema = z
21
21
  model: z.string().optional(),
22
22
  effort: SkillEffortSchema.optional(),
23
23
  context: SkillContextSchema.optional(),
24
- paths: z.union([z.string(), z.array(z.string())]).optional(),
24
+ paths: z.array(z.string()).optional(),
25
25
  })
26
26
  .passthrough();
27
27
  //# sourceMappingURL=skill-frontmatter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"skill-frontmatter.js","sourceRoot":"","sources":["../../src/schemas/skill-frontmatter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AAC1E,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,wBAAwB;AAE5E,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC;KACpC,MAAM,CAAC;IACN,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,KAAK,CAAC,sBAAsB,EAAE,qDAAqD,CAAC;SACpF,GAAG,CAAC,EAAE,CAAC;IACV,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACtC,0BAA0B,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAClD,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACxC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,MAAM,EAAE,iBAAiB,CAAC,QAAQ,EAAE;IACpC,OAAO,EAAE,kBAAkB,CAAC,QAAQ,EAAE;IACtC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC7D,CAAC;KACD,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"skill-frontmatter.js","sourceRoot":"","sources":["../../src/schemas/skill-frontmatter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AAC1E,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,wBAAwB;AAE5E,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC;KACpC,MAAM,CAAC;IACN,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,KAAK,CAAC,sBAAsB,EAAE,qDAAqD,CAAC;SACpF,GAAG,CAAC,EAAE,CAAC;IACV,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACtC,0BAA0B,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAClD,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACxC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,MAAM,EAAE,iBAAiB,CAAC,QAAQ,EAAE;IACpC,OAAO,EAAE,kBAAkB,CAAC,QAAQ,EAAE;IACtC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CACtC,CAAC;KACD,WAAW,EAAE,CAAC"}
@@ -68,7 +68,7 @@ export function registerAgentTools(server) {
68
68
  .regex(/^[a-z0-9][a-z0-9-]*$/, "agent name must be lowercase alphanumeric + hyphens"),
69
69
  description: z.string().min(1),
70
70
  model: z.string().optional(),
71
- tools: z.union([z.string(), z.array(z.string())]).optional(),
71
+ tools: z.array(z.string()).optional(),
72
72
  color: z.string().optional(),
73
73
  body: z.string().optional(),
74
74
  overwrite: z.boolean().optional(),
@@ -93,7 +93,7 @@ export function registerAgentTools(server) {
93
93
  name: z.string().min(1),
94
94
  description: z.string().optional(),
95
95
  model: z.string().optional(),
96
- tools: z.union([z.string(), z.array(z.string())]).optional(),
96
+ tools: z.array(z.string()).optional(),
97
97
  color: z.string().optional(),
98
98
  body: z.string().optional(),
99
99
  ...ProjectPathField,
@@ -1 +1 @@
1
- {"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/tools/agents.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,UAAU,EACV,QAAQ,EACR,WAAW,EACX,WAAW,EACX,WAAW,GACZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAErE,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;AAE9C,MAAM,gBAAgB,GAAG;IACvB,WAAW,EAAE,CAAC;SACX,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,4DAA4D,CAAC;CAC1E,CAAC;AACF,MAAM,WAAW,GAAG;IAClB,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAC/B,CAAC;AAEF,MAAM,UAAU,kBAAkB,CAAC,MAAiB;IAClD,qEAAqE;IACrE,aAAa;IACb,qEAAqE;IACrE,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ;QACE,KAAK,EAAE,gBAAgB;QACvB,WAAW,EAAE,4DAA4D;QACzE,WAAW,EAAE;YACX,KAAK,EAAE,SAAS;YAChB,GAAG,gBAAgB;SACpB;QACD,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE,CAC/B,MAAM,CACJ,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,EACpC,CAAC,MAAM,EAAE,EAAE,CACT,UAAU,CACR,MAAM,CAAC,MAAM,KAAK,CAAC;QACjB,CAAC,CAAC,sBAAsB,KAAK,SAAS;QACtC,CAAC,CAAC,MAAM;aACH,GAAG,CACF,CAAC,CAAC,EAAE,EAAE,CACJ,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,IAAI,oBAAoB,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CAC1G;aACA,IAAI,CAAC,MAAM,CAAC,EACnB,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CACvE,CACJ,CACJ,CAAC;IAEF,qEAAqE;IACrE,YAAY;IACZ,qEAAqE;IACrE,MAAM,CAAC,YAAY,CACjB,WAAW,EACX;QACE,KAAK,EAAE,gBAAgB;QACvB,WAAW,EAAE,gDAAgD;QAC7D,WAAW,EAAE;YACX,KAAK,EAAE,SAAS;YAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACvB,GAAG,gBAAgB;SACpB;QACD,WAAW,EAAE;YACX,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CACb,MAAM,CACJ,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EACpB,CAAC,GAAG,EAAE,EAAE,CACN,GAAG;QACD,CAAC,CAAC,UAAU,CACR,IAAI,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,IAAI,aAAa,GAAG,CAAC,IAAI,4BAA4B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,qBAAqB,GAAG,CAAC,IAAI,EAAE,EAClJ,EAAE,KAAK,EAAE,GAAG,EAAE,CACf;QACH,CAAC,CAAC,UAAU,CAAC,UAAU,IAAI,CAAC,IAAI,cAAc,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CACtE,CACJ,CAAC;IAEF,qEAAqE;IACrE,eAAe;IACf,qEAAqE;IACrE,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EACT,kEAAkE;YAClE,kEAAkE;YAClE,0BAA0B;QAC5B,WAAW,EAAE;YACX,KAAK,EAAE,SAAS;YAChB,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,KAAK,CAAC,sBAAsB,EAAE,qDAAqD,CAAC;YACvF,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC5B,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;YAC5D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC5B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC3B,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;YACjC,GAAG,gBAAgB;YACnB,GAAG,WAAW;SACf;QACD,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,KAAK;YACrB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CACb,MAAM,CACJ,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EACvB,CAAC,MAAM,EAAE,EAAE,CACT,UAAU,CACR,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,IAAI,CAAC,IAAI,MAAM,EAAE,KAAK,CAAC,EAClE,EAAE,MAAM,EAAE,CACX,CACJ,CACJ,CAAC;IAEF,qEAAqE;IACrE,eAAe;IACf,qEAAqE;IACrE,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EACT,wEAAwE;QAC1E,WAAW,EAAE;YACX,KAAK,EAAE,SAAS;YAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACvB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAClC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC5B,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;YAC5D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC5B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC3B,GAAG,gBAAgB;YACnB,GAAG,WAAW;SACf;QACD,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CACb,MAAM,CACJ,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EACvB,CAAC,MAAM,EAAE,EAAE,CACT,UAAU,CACR,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,IAAI,CAAC,IAAI,MAAM,EAAE,KAAK,CAAC,EAClE,EAAE,MAAM,EAAE,CACX,CACJ,CACJ,CAAC;IAEF,qEAAqE;IACrE,eAAe;IACf,qEAAqE;IACrE,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EAAE,mDAAmD;QAChE,WAAW,EAAE;YACX,KAAK,EAAE,SAAS;YAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACvB,GAAG,gBAAgB;YACnB,GAAG,WAAW;SACf;QACD,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,IAAI;YACrB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,KAAK;SACrB;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CACb,MAAM,CACJ,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EACvB,CAAC,MAAM,EAAE,EAAE,CACT,UAAU,CACR,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,IAAI,CAAC,IAAI,MAAM,EAAE,KAAK,CAAC,EAClE,EAAE,MAAM,EAAE,CACX,CACJ,CACJ,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,CAAS,EAAE,CAAS;IACpC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IAC5B,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;AACjC,CAAC"}
1
+ {"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/tools/agents.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,12 @@
1
1
  import { z } from "zod";
2
2
  import fs from "node:fs/promises";
3
+ import { spawn } from "node:child_process";
3
4
  import { allPlatformPaths } from "../services/paths.js";
4
5
  import { loadMcpConfig } from "../services/mcp-config.js";
5
6
  import { loadSettings } from "../services/permissions.js";
6
7
  import { backupFile } from "../services/backup.js";
8
+ import { getServer } from "../services/mcp-config.js";
9
+ import { isStdioServer } from "../schemas/mcp-config.js";
7
10
  import { handle, okResponse } from "./helpers.js";
8
11
  export function registerMetaTools(server) {
9
12
  // ------------------------------------------------------------------
@@ -75,5 +78,252 @@ export function registerMetaTools(server) {
75
78
  }, (result) => result.backup
76
79
  ? okResponse(`backed up ${result.filePath} -> ${result.backup}`, result)
77
80
  : okResponse(`no-op: ${result.filePath} did not exist`, result)));
81
+ // ------------------------------------------------------------------
82
+ // meta_check_server_health
83
+ // ------------------------------------------------------------------
84
+ server.registerTool("meta_check_server_health", {
85
+ title: "Check if an MCP server can start",
86
+ description: "Spawn a stdio MCP server, send an initialize request, and check " +
87
+ "if it responds within a timeout. Reports: ok, failed, or timeout. " +
88
+ "Provide either (scope + name) to look up the config, or (command + args) directly.",
89
+ inputSchema: {
90
+ scope: z.enum(["desktop", "user", "project"]).optional(),
91
+ name: z.string().optional().describe("Server name to look up in config."),
92
+ command: z.string().optional().describe("Command to spawn directly (alternative to scope+name)."),
93
+ args: z.array(z.string()).optional(),
94
+ projectPath: z.string().optional(),
95
+ timeoutMs: z.number().optional().describe("Timeout in ms (default 10000)."),
96
+ },
97
+ annotations: {
98
+ readOnlyHint: true,
99
+ destructiveHint: false,
100
+ idempotentHint: true,
101
+ openWorldHint: true,
102
+ },
103
+ }, async (input) => handle(async () => {
104
+ let cmd;
105
+ let cmdArgs = [];
106
+ let env;
107
+ if (input.command) {
108
+ cmd = input.command;
109
+ cmdArgs = input.args ?? [];
110
+ }
111
+ else if (input.scope && input.name) {
112
+ const entry = await getServer({
113
+ scope: input.scope,
114
+ name: input.name,
115
+ projectPath: input.projectPath,
116
+ revealSecrets: true,
117
+ });
118
+ if (!entry) {
119
+ return { status: "not_found", message: `Server "${input.name}" not found in ${input.scope} scope.` };
120
+ }
121
+ if (!isStdioServer(entry.entry)) {
122
+ return { status: "skip", message: `Server "${input.name}" is HTTP-based, not stdio.` };
123
+ }
124
+ cmd = entry.entry.command;
125
+ cmdArgs = entry.entry.args ?? [];
126
+ env = entry.entry.env;
127
+ }
128
+ else {
129
+ throw new Error("Provide either (scope + name) or (command + args).");
130
+ }
131
+ const timeout = input.timeoutMs ?? 10000;
132
+ return await checkServerHealth(cmd, cmdArgs, env, timeout);
133
+ }, (result) => okResponse(`status: ${result.status}\n${result.message ?? ""}`, result)));
134
+ // ------------------------------------------------------------------
135
+ // meta_env_template
136
+ // ------------------------------------------------------------------
137
+ server.registerTool("meta_env_template", {
138
+ title: "Manage a secrets env template",
139
+ description: "Create, read, or validate a secrets .env file. When action=create, " +
140
+ "writes a template with placeholder comments (chmod 600). When " +
141
+ "action=validate, checks that all keys have non-empty, non-placeholder values.",
142
+ inputSchema: {
143
+ action: z.enum(["create", "read", "validate"]),
144
+ filePath: z.string().describe("Absolute path to the .env file."),
145
+ entries: z
146
+ .array(z.object({
147
+ key: z.string(),
148
+ comment: z.string().optional(),
149
+ }))
150
+ .optional()
151
+ .describe("Key definitions for create action. Each entry becomes KEY= with optional # comment."),
152
+ header: z.string().optional().describe("Header comment block for create action."),
153
+ },
154
+ annotations: {
155
+ readOnlyHint: false,
156
+ destructiveHint: false,
157
+ idempotentHint: true,
158
+ openWorldHint: false,
159
+ },
160
+ }, async (input) => handle(async () => {
161
+ if (input.action === "create") {
162
+ const lines = [];
163
+ if (input.header) {
164
+ for (const line of input.header.split("\n")) {
165
+ lines.push(`# ${line}`);
166
+ }
167
+ lines.push("");
168
+ }
169
+ for (const entry of input.entries ?? []) {
170
+ if (entry.comment) {
171
+ lines.push(`# ${entry.comment}`);
172
+ }
173
+ lines.push(`${entry.key}=`);
174
+ }
175
+ lines.push(""); // trailing newline
176
+ const content = lines.join("\n");
177
+ await fs.writeFile(input.filePath, content, { mode: 0o600 });
178
+ return {
179
+ action: "create",
180
+ filePath: input.filePath,
181
+ keys: (input.entries ?? []).map((e) => e.key),
182
+ message: `Created template at ${input.filePath} (chmod 600) with ${(input.entries ?? []).length} key(s).`,
183
+ };
184
+ }
185
+ if (input.action === "read") {
186
+ let content;
187
+ try {
188
+ content = await fs.readFile(input.filePath, "utf8");
189
+ }
190
+ catch (err) {
191
+ if (err.code === "ENOENT") {
192
+ return { action: "read", filePath: input.filePath, exists: false, message: "File does not exist." };
193
+ }
194
+ throw err;
195
+ }
196
+ const parsed = parseEnvFile(content);
197
+ return { action: "read", filePath: input.filePath, exists: true, keys: parsed };
198
+ }
199
+ // validate
200
+ let content;
201
+ try {
202
+ content = await fs.readFile(input.filePath, "utf8");
203
+ }
204
+ catch (err) {
205
+ if (err.code === "ENOENT") {
206
+ return { action: "validate", filePath: input.filePath, valid: false, message: "File does not exist." };
207
+ }
208
+ throw err;
209
+ }
210
+ const parsed = parseEnvFile(content);
211
+ const issues = [];
212
+ for (const { key, value } of parsed) {
213
+ if (!value || value.trim() === "") {
214
+ issues.push(`${key}: empty`);
215
+ }
216
+ else if (/^<YOUR_.*>$/i.test(value.trim())) {
217
+ issues.push(`${key}: placeholder value`);
218
+ }
219
+ }
220
+ return {
221
+ action: "validate",
222
+ filePath: input.filePath,
223
+ valid: issues.length === 0,
224
+ total: parsed.length,
225
+ filled: parsed.length - issues.length,
226
+ issues,
227
+ message: issues.length === 0
228
+ ? `All ${parsed.length} key(s) are filled.`
229
+ : `${issues.length} of ${parsed.length} key(s) need attention: ${issues.join(", ")}`,
230
+ };
231
+ }, (result) => okResponse(result.message ?? JSON.stringify(result), result)));
232
+ }
233
+ // ── Helpers ──────────────────────────────────────────────────────────
234
+ function parseEnvFile(content) {
235
+ const results = [];
236
+ for (const line of content.split("\n")) {
237
+ const trimmed = line.trim();
238
+ if (!trimmed || trimmed.startsWith("#"))
239
+ continue;
240
+ const eqIdx = trimmed.indexOf("=");
241
+ if (eqIdx === -1)
242
+ continue;
243
+ results.push({
244
+ key: trimmed.slice(0, eqIdx),
245
+ value: trimmed.slice(eqIdx + 1),
246
+ });
247
+ }
248
+ return results;
249
+ }
250
+ function checkServerHealth(command, args, env, timeoutMs) {
251
+ return new Promise((resolve) => {
252
+ const childEnv = env ? { ...process.env, ...env } : process.env;
253
+ let child;
254
+ try {
255
+ child = spawn(command, args, {
256
+ stdio: ["pipe", "pipe", "pipe"],
257
+ env: childEnv,
258
+ });
259
+ }
260
+ catch (err) {
261
+ resolve({
262
+ status: "failed",
263
+ message: `Failed to spawn "${command}": ${err.message}`,
264
+ });
265
+ return;
266
+ }
267
+ let stdout = "";
268
+ let stderr = "";
269
+ let settled = false;
270
+ const timer = setTimeout(() => {
271
+ if (!settled) {
272
+ settled = true;
273
+ child.kill("SIGTERM");
274
+ resolve({
275
+ status: "timeout",
276
+ message: `Server did not respond within ${timeoutMs}ms.`,
277
+ stderr: stderr.slice(0, 500),
278
+ });
279
+ }
280
+ }, timeoutMs);
281
+ child.stdout.on("data", (chunk) => {
282
+ stdout += chunk.toString();
283
+ // Check if we got a valid JSON-RPC response
284
+ if (!settled && stdout.includes('"result"')) {
285
+ settled = true;
286
+ clearTimeout(timer);
287
+ child.kill("SIGTERM");
288
+ resolve({ status: "ok", message: "Server responded to initialize." });
289
+ }
290
+ });
291
+ child.stderr.on("data", (chunk) => {
292
+ stderr += chunk.toString();
293
+ });
294
+ child.on("error", (err) => {
295
+ if (!settled) {
296
+ settled = true;
297
+ clearTimeout(timer);
298
+ resolve({
299
+ status: "failed",
300
+ message: `Spawn error: ${err.message}`,
301
+ });
302
+ }
303
+ });
304
+ child.on("exit", (code) => {
305
+ if (!settled) {
306
+ settled = true;
307
+ clearTimeout(timer);
308
+ resolve({
309
+ status: "failed",
310
+ message: `Server exited with code ${code} before responding.`,
311
+ stderr: stderr.slice(0, 500),
312
+ });
313
+ }
314
+ });
315
+ // Send an initialize request
316
+ const initRequest = JSON.stringify({
317
+ jsonrpc: "2.0",
318
+ id: 1,
319
+ method: "initialize",
320
+ params: {
321
+ protocolVersion: "2025-03-26",
322
+ capabilities: {},
323
+ clientInfo: { name: "health-check", version: "1.0" },
324
+ },
325
+ });
326
+ child.stdin.write(initRequest + "\n");
327
+ });
78
328
  }
79
329
  //# sourceMappingURL=meta.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"meta.js","sourceRoot":"","sources":["../../src/tools/meta.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"meta.js","sourceRoot":"","sources":["../../src/tools/meta.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thantos66/claude-context-mcp",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "MCP server for managing Claude Code MCP servers, subagents, skills, and permissions across projects.",
5
5
  "type": "module",
6
6
  "bin": {