import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { z } from "zod";
import { sendCommandToFigma } from "../communication";
import { logger } from "../logger";
/**
* Register export-related MCP tools
*/
export function registerExportTools(server: McpServer): void {
// Export Node as Image
server.tool(
"export_node_as_image",
"Export a node as an image from Figma",
{
nodeId: z.string().describe("The ID of the node to export"),
format: z
.enum(["PNG", "JPG", "SVG", "PDF"])
.optional()
.describe("Export format (default: PNG)"),
scale: z
.number()
.positive()
.optional()
.describe("Export scale (default: 1)"),
},
async ({ nodeId, format, scale }) => {
try {
const result = await sendCommandToFigma<{
imageData: string;
mimeType: string;
}>("export_node_as_image", {
nodeId,
format: format ?? "PNG",
scale: scale ?? 1,
});
return {
content: [
{
type: "image",
data: result.imageData,
mimeType: result.mimeType || "image/png",
},
],
};
} catch (error) {
logger.error("Error exporting node as image", error);
return {
content: [
{
type: "text",
text: `Error exporting node as image: ${
error instanceof Error ? error.message : String(error)
}`,
},
],
};
}
},
);
}