UNPKG

pixellab-mcp

Version:

MCP server for PixelLab pixel art generation and manipulation. Usage: pixellab-mcp --secret=your-key

57 lines (56 loc) 1.85 kB
// Simple conversion utilities - no duplication of business logic export function toMcpResponse(description, image, metadata) { const content = [ { type: "text", text: description }, { type: "image", data: image.dataUrl, mimeType: "image/png" }, ]; if (metadata) { content.push({ type: "text", text: JSON.stringify(metadata, null, 2) }); } return { content }; } export function toMcpError(error) { let errorMessage; if (error instanceof Error) { errorMessage = error.message; } else if (typeof error === "string") { errorMessage = error; } else if (typeof error === "object" && error !== null) { try { // Try to stringify the object for better error reporting errorMessage = JSON.stringify(error, null, 2); } catch { // If JSON.stringify fails, fall back to a descriptive message errorMessage = `Object error: ${Object.prototype.toString.call(error)}`; } } else { errorMessage = `Unknown error: ${String(error)}`; } return { content: [ { type: "text", text: `Error: ${errorMessage}`, }, ], isError: true, }; } // For comparison views (before/after images) export function toMcpComparison(description, beforeImage, afterImage, metadata) { const content = [ { type: "text", text: description }, { type: "text", text: "Before:" }, { type: "image", data: beforeImage.dataUrl, mimeType: "image/png" }, { type: "text", text: "After:" }, { type: "image", data: afterImage.dataUrl, mimeType: "image/png" }, ]; if (metadata) { content.push({ type: "text", text: JSON.stringify(metadata, null, 2) }); } return { content }; }