/* * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. * @generated-id: 26f3d73cbf31 */ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { ShapeOutput, ZodRawShapeCompat, } from "@modelcontextprotocol/sdk/server/zod-compat.js"; import { RequestHandlerExtra } from "@modelcontextprotocol/sdk/shared/protocol.js"; import { GetPromptResult, ServerNotification, ServerRequest, } from "@modelcontextprotocol/sdk/types.js"; import { CloudinaryAssetMgmtCore } from "../core.js"; import { ConsoleLogger } from "./console-logger.js"; import { MCPScope } from "./scopes.js"; export type PromptDefinition< Args extends undefined | ZodRawShapeCompat = undefined, > = Args extends ZodRawShapeCompat ? { name: string; description?: string; scopes?: MCPScope[]; args: Args; prompt: ( client: CloudinaryAssetMgmtCore, args: ShapeOutput, extra: RequestHandlerExtra, ) => GetPromptResult | Promise; } : { name: string; description?: string; scopes?: MCPScope[]; args?: undefined; prompt: ( client: CloudinaryAssetMgmtCore, extra: RequestHandlerExtra, ) => GetPromptResult | Promise; }; // Optional function to assist with formatting prompt results export async function formatResult(value: string): Promise { return { messages: [ { role: "user", content: { type: "text", text: value, }, }, ], }; } export function createRegisterPrompt( logger: ConsoleLogger, server: McpServer, getSDK: () => CloudinaryAssetMgmtCore, allowedScopes: Set, ): ( prompt: PromptDefinition, ) => void { return ( prompt: PromptDefinition, ): void => { const scopes = prompt.scopes ?? []; if (allowedScopes.size > 0 && scopes.length === 0) { return; } if ( allowedScopes.size > 0 && !scopes.every((s: MCPScope) => allowedScopes.has(s)) ) { return; } if (prompt.args) { if (prompt.description) { server.prompt( prompt.name, prompt.description, prompt.args, async (args, ctx) => prompt.prompt(getSDK(), args, ctx), ); } else { server.prompt( prompt.name, prompt.args, async (args, ctx) => prompt.prompt(getSDK(), args, ctx), ); } } else { if (prompt.description) { server.prompt( prompt.name, prompt.description, async (ctx) => prompt.prompt(getSDK(), ctx), ); } else { server.prompt(prompt.name, async (ctx) => prompt.prompt(getSDK(), ctx)); } } logger.debug("Registered prompt", { name: prompt.name }); }; }