UNPKG

mcp-use

Version:

Opinionated MCP Framework for TypeScript (@modelcontextprotocol/sdk compatible) - Build MCP Agents, Clients and Servers with support for ChatGPT Apps, Code Mode, OAuth, Notifications, Sampling, Observability and more.

111 lines (108 loc) 3.18 kB
import { __name } from "./chunk-3GQAWCBQ.js"; // src/server/resources/conversion.ts function isReadResourceResult(result) { return "contents" in result && Array.isArray(result.contents); } __name(isReadResourceResult, "isReadResourceResult"); function extractMimeType(result) { if (result._meta && typeof result._meta === "object") { const meta = result._meta; if (meta.mimeType && typeof meta.mimeType === "string") { return meta.mimeType; } } if (result.content && result.content.length > 0) { const firstContent = result.content[0]; if (firstContent.type === "image") { return firstContent.mimeType || "image/png"; } if (firstContent.type === "text") { return "text/plain"; } if (firstContent.type === "resource") { const resourceData = firstContent.resource; return resourceData?.mimeType || "application/octet-stream"; } } return "text/plain"; } __name(extractMimeType, "extractMimeType"); function isBinaryContent(result) { if (result._meta && typeof result._meta === "object") { const meta = result._meta; return meta.isBinary === true || meta.isImage === true; } return false; } __name(isBinaryContent, "isBinaryContent"); function convertToolResultToResourceResult(uri, result) { if (isReadResourceResult(result)) { return result; } const mimeType = extractMimeType(result); const isBinary = isBinaryContent(result); const contents = []; if (result.content && result.content.length > 0) { for (const content of result.content) { if (content.type === "text") { const textContent = content; if (isBinary) { contents.push({ uri, mimeType, blob: textContent.text }); } else { contents.push({ uri, mimeType, text: textContent.text }); } } else if (content.type === "image") { const imageContent = content; contents.push({ uri, mimeType: imageContent.mimeType || mimeType, blob: imageContent.data }); } else if (content.type === "resource") { const resourceContent = content; const resourceData = resourceContent.resource; if (resourceData.text !== void 0) { contents.push({ uri: resourceData.uri, mimeType: resourceData.mimeType || mimeType, text: resourceData.text }); } else if (resourceData.blob !== void 0) { contents.push({ uri: resourceData.uri, mimeType: resourceData.mimeType || mimeType, blob: resourceData.blob }); } else { contents.push({ uri: resourceData.uri, mimeType: resourceData.mimeType || mimeType, text: "" }); } } } } if (contents.length === 0) { contents.push({ uri, mimeType: "text/plain", text: "" }); } return { contents }; } __name(convertToolResultToResourceResult, "convertToolResultToResourceResult"); export { convertToolResultToResourceResult };