@cloudinary/environment-config-mcp 0.6.2 → 0.6.3

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 (120) hide show
  1. package/README.md +3 -2
  2. package/bin/mcp-server.js +45394 -44720
  3. package/bin/mcp-server.js.map +53 -238
  4. package/esm/landing-page.d.ts +2 -1
  5. package/esm/landing-page.d.ts.map +1 -1
  6. package/esm/landing-page.js +51 -28
  7. package/esm/landing-page.js.map +1 -1
  8. package/esm/lib/config.d.ts +3 -3
  9. package/esm/lib/config.js +3 -3
  10. package/esm/mcp-server/cli/serve/impl.js +51 -25
  11. package/esm/mcp-server/cli/serve/impl.js.map +1 -1
  12. package/esm/mcp-server/cli/start/impl.js +11 -8
  13. package/esm/mcp-server/cli/start/impl.js.map +1 -1
  14. package/esm/mcp-server/extensions.d.ts +3 -3
  15. package/esm/mcp-server/extensions.d.ts.map +1 -1
  16. package/esm/mcp-server/mcp-server.js +1 -1
  17. package/esm/mcp-server/prompts.d.ts +7 -8
  18. package/esm/mcp-server/prompts.d.ts.map +1 -1
  19. package/esm/mcp-server/prompts.js +12 -12
  20. package/esm/mcp-server/prompts.js.map +1 -1
  21. package/esm/mcp-server/resources.d.ts +6 -7
  22. package/esm/mcp-server/resources.d.ts.map +1 -1
  23. package/esm/mcp-server/resources.js +19 -3
  24. package/esm/mcp-server/resources.js.map +1 -1
  25. package/esm/mcp-server/server.d.ts +1 -1
  26. package/esm/mcp-server/server.d.ts.map +1 -1
  27. package/esm/mcp-server/server.js +2 -2
  28. package/esm/mcp-server/server.js.map +1 -1
  29. package/esm/mcp-server/shared.d.ts +7 -0
  30. package/esm/mcp-server/shared.d.ts.map +1 -1
  31. package/esm/mcp-server/shared.js +184 -0
  32. package/esm/mcp-server/shared.js.map +1 -1
  33. package/esm/mcp-server/tools/streamingProfilesCreateStreamingProfile.js +1 -1
  34. package/esm/mcp-server/tools/streamingProfilesCreateStreamingProfile.js.map +1 -1
  35. package/esm/mcp-server/tools/streamingProfilesDeleteStreamingProfile.js +1 -1
  36. package/esm/mcp-server/tools/streamingProfilesDeleteStreamingProfile.js.map +1 -1
  37. package/esm/mcp-server/tools/streamingProfilesGetStreamingProfile.js +1 -1
  38. package/esm/mcp-server/tools/streamingProfilesGetStreamingProfile.js.map +1 -1
  39. package/esm/mcp-server/tools/streamingProfilesGetStreamingProfiles.js +1 -1
  40. package/esm/mcp-server/tools/streamingProfilesGetStreamingProfiles.js.map +1 -1
  41. package/esm/mcp-server/tools/streamingProfilesUpdateStreamingProfile.js +1 -1
  42. package/esm/mcp-server/tools/streamingProfilesUpdateStreamingProfile.js.map +1 -1
  43. package/esm/mcp-server/tools/transformationsCreateTransformation.js +1 -1
  44. package/esm/mcp-server/tools/transformationsCreateTransformation.js.map +1 -1
  45. package/esm/mcp-server/tools/transformationsDeleteTransformation.js +1 -1
  46. package/esm/mcp-server/tools/transformationsDeleteTransformation.js.map +1 -1
  47. package/esm/mcp-server/tools/transformationsGetTransformation.js +1 -1
  48. package/esm/mcp-server/tools/transformationsGetTransformation.js.map +1 -1
  49. package/esm/mcp-server/tools/transformationsListTransformations.js +1 -1
  50. package/esm/mcp-server/tools/transformationsListTransformations.js.map +1 -1
  51. package/esm/mcp-server/tools/transformationsUpdateTransformation.js +1 -1
  52. package/esm/mcp-server/tools/transformationsUpdateTransformation.js.map +1 -1
  53. package/esm/mcp-server/tools/triggersCreateTrigger.js +1 -1
  54. package/esm/mcp-server/tools/triggersCreateTrigger.js.map +1 -1
  55. package/esm/mcp-server/tools/triggersDeleteTrigger.js +1 -1
  56. package/esm/mcp-server/tools/triggersDeleteTrigger.js.map +1 -1
  57. package/esm/mcp-server/tools/triggersListTrigger.js +1 -1
  58. package/esm/mcp-server/tools/triggersListTrigger.js.map +1 -1
  59. package/esm/mcp-server/tools/triggersTestTrigger.js +1 -1
  60. package/esm/mcp-server/tools/triggersTestTrigger.js.map +1 -1
  61. package/esm/mcp-server/tools/triggersUpdateTrigger.js +1 -1
  62. package/esm/mcp-server/tools/triggersUpdateTrigger.js.map +1 -1
  63. package/esm/mcp-server/tools/uploadMappingsCreateUploadMapping.js +1 -1
  64. package/esm/mcp-server/tools/uploadMappingsCreateUploadMapping.js.map +1 -1
  65. package/esm/mcp-server/tools/uploadMappingsDeleteUploadMapping.js +1 -1
  66. package/esm/mcp-server/tools/uploadMappingsDeleteUploadMapping.js.map +1 -1
  67. package/esm/mcp-server/tools/uploadMappingsListUploadMappings.js +1 -1
  68. package/esm/mcp-server/tools/uploadMappingsListUploadMappings.js.map +1 -1
  69. package/esm/mcp-server/tools/uploadMappingsUpdateUploadMapping.js +1 -1
  70. package/esm/mcp-server/tools/uploadMappingsUpdateUploadMapping.js.map +1 -1
  71. package/esm/mcp-server/tools/uploadPresetsCreateUploadPreset.js +1 -1
  72. package/esm/mcp-server/tools/uploadPresetsCreateUploadPreset.js.map +1 -1
  73. package/esm/mcp-server/tools/uploadPresetsDeleteUploadPreset.js +1 -1
  74. package/esm/mcp-server/tools/uploadPresetsDeleteUploadPreset.js.map +1 -1
  75. package/esm/mcp-server/tools/uploadPresetsGetUploadPreset.js +1 -1
  76. package/esm/mcp-server/tools/uploadPresetsGetUploadPreset.js.map +1 -1
  77. package/esm/mcp-server/tools/uploadPresetsListUploadPresets.js +1 -1
  78. package/esm/mcp-server/tools/uploadPresetsListUploadPresets.js.map +1 -1
  79. package/esm/mcp-server/tools/uploadPresetsUpdateUploadPreset.js +1 -1
  80. package/esm/mcp-server/tools/uploadPresetsUpdateUploadPreset.js.map +1 -1
  81. package/esm/mcp-server/tools.d.ts +11 -9
  82. package/esm/mcp-server/tools.d.ts.map +1 -1
  83. package/esm/mcp-server/tools.js +20 -19
  84. package/esm/mcp-server/tools.js.map +1 -1
  85. package/package.json +9 -4
  86. package/src/landing-page.ts +81 -28
  87. package/src/lib/config.ts +3 -3
  88. package/src/mcp-server/cli/serve/impl.ts +55 -25
  89. package/src/mcp-server/cli/start/impl.ts +16 -9
  90. package/src/mcp-server/extensions.ts +3 -5
  91. package/src/mcp-server/mcp-server.ts +1 -1
  92. package/src/mcp-server/prompts.ts +30 -43
  93. package/src/mcp-server/resources.ts +32 -17
  94. package/src/mcp-server/server.ts +2 -2
  95. package/src/mcp-server/shared.ts +201 -0
  96. package/src/mcp-server/tools/streamingProfilesCreateStreamingProfile.ts +1 -1
  97. package/src/mcp-server/tools/streamingProfilesDeleteStreamingProfile.ts +1 -1
  98. package/src/mcp-server/tools/streamingProfilesGetStreamingProfile.ts +1 -1
  99. package/src/mcp-server/tools/streamingProfilesGetStreamingProfiles.ts +1 -1
  100. package/src/mcp-server/tools/streamingProfilesUpdateStreamingProfile.ts +1 -1
  101. package/src/mcp-server/tools/transformationsCreateTransformation.ts +1 -1
  102. package/src/mcp-server/tools/transformationsDeleteTransformation.ts +1 -1
  103. package/src/mcp-server/tools/transformationsGetTransformation.ts +1 -1
  104. package/src/mcp-server/tools/transformationsListTransformations.ts +1 -1
  105. package/src/mcp-server/tools/transformationsUpdateTransformation.ts +1 -1
  106. package/src/mcp-server/tools/triggersCreateTrigger.ts +1 -1
  107. package/src/mcp-server/tools/triggersDeleteTrigger.ts +1 -1
  108. package/src/mcp-server/tools/triggersListTrigger.ts +1 -1
  109. package/src/mcp-server/tools/triggersTestTrigger.ts +1 -1
  110. package/src/mcp-server/tools/triggersUpdateTrigger.ts +1 -1
  111. package/src/mcp-server/tools/uploadMappingsCreateUploadMapping.ts +1 -1
  112. package/src/mcp-server/tools/uploadMappingsDeleteUploadMapping.ts +1 -1
  113. package/src/mcp-server/tools/uploadMappingsListUploadMappings.ts +1 -1
  114. package/src/mcp-server/tools/uploadMappingsUpdateUploadMapping.ts +1 -1
  115. package/src/mcp-server/tools/uploadPresetsCreateUploadPreset.ts +1 -1
  116. package/src/mcp-server/tools/uploadPresetsDeleteUploadPreset.ts +1 -1
  117. package/src/mcp-server/tools/uploadPresetsGetUploadPreset.ts +1 -1
  118. package/src/mcp-server/tools/uploadPresetsListUploadPresets.ts +1 -1
  119. package/src/mcp-server/tools/uploadPresetsUpdateUploadPreset.ts +1 -1
  120. package/src/mcp-server/tools.ts +42 -45
@@ -3,24 +3,19 @@
3
3
  * @generated-id: 654d5d1f2062
4
4
  */
5
5
 
6
- import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
7
- import {
8
- ShapeOutput,
9
- ZodRawShapeCompat,
10
- } from "@modelcontextprotocol/sdk/server/zod-compat.js";
11
- import { RequestHandlerExtra } from "@modelcontextprotocol/sdk/shared/protocol.js";
12
- import {
13
- CallToolResult,
14
- ServerNotification,
15
- ServerRequest,
16
- } from "@modelcontextprotocol/sdk/types.js";
6
+ import { CallToolResult, McpServer } from "@modelcontextprotocol/server";
17
7
  import * as z from "zod";
18
8
  import { CloudinaryEnvConfigCore } from "../core.js";
19
9
  import { ServerRegion$zodSchema } from "../lib/config.js";
20
10
  import { ConsoleLogger } from "./console-logger.js";
21
11
  import { MCPServerFlags } from "./flags.js";
22
12
  import { MCPScope, mcpScopes } from "./scopes.js";
23
- import { valueToBase64 } from "./shared.js";
13
+ import {
14
+ mcpInputSchema,
15
+ MCPServerContext,
16
+ mcpServerContext,
17
+ valueToBase64,
18
+ } from "./shared.js";
24
19
 
25
20
  export type MCPToolAnnotationFilter = {
26
21
  readOnlyHint?: boolean;
@@ -66,6 +61,11 @@ export function buildAnnotationFilter(
66
61
  return filter;
67
62
  }
68
63
 
64
+ type ZodRawShapeCompat = z.ZodRawShape;
65
+ type ShapeOutput<Shape extends ZodRawShapeCompat> = z.output<
66
+ z.ZodObject<Shape>
67
+ >;
68
+
69
69
  export type ToolDefinition<
70
70
  Args extends undefined | ZodRawShapeCompat = undefined,
71
71
  > = Args extends ZodRawShapeCompat ? {
@@ -83,7 +83,7 @@ export type ToolDefinition<
83
83
  tool: (
84
84
  client: CloudinaryEnvConfigCore,
85
85
  args: ShapeOutput<Args>,
86
- extra: RequestHandlerExtra<ServerRequest, ServerNotification>,
86
+ extra: MCPServerContext,
87
87
  ) => CallToolResult | Promise<CallToolResult>;
88
88
  }
89
89
  : {
@@ -100,7 +100,7 @@ export type ToolDefinition<
100
100
  };
101
101
  tool: (
102
102
  client: CloudinaryEnvConfigCore,
103
- extra: RequestHandlerExtra<ServerRequest, ServerNotification>,
103
+ extra: MCPServerContext,
104
104
  ) => CallToolResult | Promise<CallToolResult>;
105
105
  };
106
106
 
@@ -138,16 +138,13 @@ export function createRegisterTool(
138
138
  dynamic?: boolean,
139
139
  annotationFilter?: MCPToolAnnotationFilter,
140
140
  ): [
141
- <A extends ZodRawShapeCompat | undefined>(tool: ToolDefinition<A>) => void,
141
+ <A extends z.ZodRawShape | undefined>(tool: ToolDefinition<A>) => void,
142
142
  Array<{ name: string; description: string }>,
143
- Map<string, ToolDefinition<ZodRawShapeCompat | undefined>>,
143
+ Map<string, ToolDefinition<z.ZodRawShape | undefined>>,
144
144
  ] {
145
145
  const tools: Array<{ name: string; description: string }> = [];
146
- const toolMap = new Map<
147
- string,
148
- ToolDefinition<ZodRawShapeCompat | undefined>
149
- >();
150
- const registerTool = <A extends ZodRawShapeCompat | undefined>(
146
+ const toolMap = new Map<string, ToolDefinition<z.ZodRawShape | undefined>>();
147
+ const registerTool = <A extends z.ZodRawShape | undefined>(
151
148
  tool: ToolDefinition<A>,
152
149
  ): void => {
153
150
  if (allowedTools && !allowedTools.has(tool.name)) {
@@ -194,10 +191,7 @@ export function createRegisterTool(
194
191
  }
195
192
  }
196
193
 
197
- toolMap.set(
198
- tool.name,
199
- tool as ToolDefinition<ZodRawShapeCompat | undefined>,
200
- );
194
+ toolMap.set(tool.name, tool as ToolDefinition<z.ZodRawShape | undefined>);
201
195
 
202
196
  if (dynamic) {
203
197
  logger.debug("Collected tool for dynamic mode", { name: tool.name });
@@ -210,11 +204,11 @@ export function createRegisterTool(
210
204
  tool.name,
211
205
  {
212
206
  description: tool.description,
213
- inputSchema: tool.args,
207
+ inputSchema: mcpInputSchema(tool.args),
214
208
  annotations: tool.annotations,
215
209
  },
216
210
  async (args, ctx) => {
217
- return tool.tool(getSDK(), args, ctx);
211
+ return tool.tool(getSDK(), args, mcpServerContext(ctx));
218
212
  },
219
213
  );
220
214
  } else {
@@ -225,7 +219,7 @@ export function createRegisterTool(
225
219
  annotations: tool.annotations,
226
220
  },
227
221
  async (ctx) => {
228
- return tool.tool(getSDK(), ctx);
222
+ return tool.tool(getSDK(), mcpServerContext(ctx));
229
223
  },
230
224
  );
231
225
  }
@@ -240,7 +234,7 @@ export function createRegisterTool(
240
234
  function matchesSearchTerms(
241
235
  terms: string[],
242
236
  name: string,
243
- def: ToolDefinition<ZodRawShapeCompat | undefined>,
237
+ def: ToolDefinition<z.ZodRawShape | undefined>,
244
238
  ): boolean {
245
239
  if (terms.length === 0) {
246
240
  return true;
@@ -263,14 +257,14 @@ export function registerDynamicTools(
263
257
  logger: ConsoleLogger,
264
258
  server: McpServer,
265
259
  getSDK: () => CloudinaryEnvConfigCore,
266
- toolMap: Map<string, ToolDefinition<ZodRawShapeCompat | undefined>>,
260
+ toolMap: Map<string, ToolDefinition<z.ZodRawShape | undefined>>,
267
261
  allowedScopes: Set<MCPScope>,
268
262
  ): void {
269
263
  // 1. list_tools
270
264
  server.registerTool("list_tools", {
271
265
  description:
272
266
  "List available tools. Optionally filter by search terms that match against tool name, description, and scopes.",
273
- inputSchema: {
267
+ inputSchema: z.object({
274
268
  search_terms: z.array(z.string()).optional().describe(
275
269
  [
276
270
  "Filter the list of tools.",
@@ -279,7 +273,7 @@ export function registerDynamicTools(
279
273
  "If not provided, all tools are returned.",
280
274
  ].join("\n"),
281
275
  ),
282
- },
276
+ }),
283
277
  annotations: {
284
278
  title: "List Tools",
285
279
  readOnlyHint: true,
@@ -314,11 +308,11 @@ export function registerDynamicTools(
314
308
  server.registerTool("describe_tool_input", {
315
309
  description:
316
310
  "Get the input schema for one or more tools. It is a good idea to call this tool first to understand how to successfully call execute_tool.",
317
- inputSchema: {
311
+ inputSchema: z.object({
318
312
  tool_names: z.array(z.string()).describe(
319
313
  "The names of the tools to describe",
320
314
  ),
321
- },
315
+ }),
322
316
  annotations: {
323
317
  title: "Describe Tool",
324
318
  readOnlyHint: true,
@@ -343,11 +337,8 @@ export function registerDynamicTools(
343
337
 
344
338
  let schemaText = `<input_schema tool="${toolName}">\n\n`;
345
339
  if (def.args) {
346
- const jsonSchema = z.toJSONSchema(z.object(def.args), {
347
- target: "draft-2020-12",
348
- io: "input",
349
- unrepresentable: "any",
350
- });
340
+ const jsonSchema = mcpInputSchema(def.args)["~standard"].jsonSchema
341
+ .input({ target: "draft-2020-12" });
351
342
  schemaText += JSON.stringify(jsonSchema, null, 2);
352
343
  } else {
353
344
  schemaText += "This tool takes no input parameters.";
@@ -368,12 +359,12 @@ export function registerDynamicTools(
368
359
  server.registerTool("execute_tool", {
369
360
  description:
370
361
  "Execute a tool by name with its arguments. If executing a given tool for the first time, it is recommended to call describe_tool_input first to understand the expected `arguments` shape.",
371
- inputSchema: {
362
+ inputSchema: z.object({
372
363
  name: z.string().describe("The name of the tool to execute"),
373
364
  arguments: z.looseObject({}).optional().describe(
374
365
  "Arguments for the target tool as a JSON object, matching the schema returned by describe_tool_input.",
375
366
  ),
376
- },
367
+ }),
377
368
  annotations: {
378
369
  title: "Execute Tool",
379
370
  readOnlyHint: false,
@@ -392,7 +383,9 @@ export function registerDynamicTools(
392
383
 
393
384
  let validatedInput: Record<string, unknown> = {};
394
385
  if (def.args) {
395
- const vres = z.object(def.args).safeParse(args.arguments ?? {});
386
+ const vres = await z.object(def.args).safeParseAsync(
387
+ args.arguments ?? {},
388
+ );
396
389
  if (vres.success) {
397
390
  validatedInput = vres.data;
398
391
  } else {
@@ -411,9 +404,9 @@ export function registerDynamicTools(
411
404
 
412
405
  try {
413
406
  if (def.args) {
414
- return await def.tool(getSDK(), validatedInput, ctx);
407
+ return await def.tool(getSDK(), validatedInput, mcpServerContext(ctx));
415
408
  } else {
416
- return await def.tool(getSDK(), ctx);
409
+ return await def.tool(getSDK(), mcpServerContext(ctx));
417
410
  }
418
411
  } catch (error) {
419
412
  const message = error instanceof Error ? error.message : String(error);
@@ -465,7 +458,11 @@ function resolveHeader<T>(
465
458
  if (val != null) {
466
459
  return schema.parse(val);
467
460
  }
468
- return disableStaticAuth ? undefined : schema.parse(cliFlagValue);
461
+ if (disableStaticAuth || cliFlagValue === undefined) {
462
+ const parsed = schema.safeParse(undefined);
463
+ return parsed.success ? parsed.data : undefined;
464
+ }
465
+ return schema.parse(cliFlagValue);
469
466
  }
470
467
 
471
468
  export function buildSDK(