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
JavaScript
// 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 };
}