UNPKG

@kinetixarts/craft-it-mcp-server

Version:

Craft IT - Model Context Protocol (MCP) compliant Server for AI-Powered Asset Generation using Gemini

65 lines 2.48 kB
import { z } from "zod"; import { ImageGenerationService } from "./services/index.js"; import { assetStore } from "./assetStore.js"; import { v4 as uuidv4 } from "uuid"; /** * Register all tools with the MCP server * * @param server The FastMCP server instance */ export function registerTools(server) { server.addTool({ name: "generate", description: "Generate an asset (image/icon) from a prompt and parameters.", parameters: z.object({ prompt: z.string().describe("Textual description of the asset."), parameters: z .object({ primary_color: z.string().describe("Hex code or color name").optional(), style_descriptor: z.string().describe("Style descriptor, e.g., 'flat', 'minimalist'").optional(), }) .optional(), output_config: z.object({ format: z.enum(["png", "jpg"]).describe("Output format: 'png' or 'jpg'"), width: z.number().int().min(64).max(1024).optional().describe("Width in pixels (64-1024)"), height: z.number().int().min(64).max(1024).optional().describe("Height in pixels (64-1024)") }) }), async execute({ prompt, parameters, output_config }, context) { try { const { base64, mimeType } = await ImageGenerationService.generateImage({ prompt, parameters, output_config, }); const assetId = uuidv4(); assetStore[assetId] = { base64, mimeType }; return { content: [ { type: "image", data: base64, mimeType, }, { type: "text", text: `Asset ID: ${assetId}`, } ], }; } catch (error) { return { content: [ { type: "text", text: `Error: ${(error instanceof Error ? error.message : String(error))}`, }, ], isError: true, }; } } }); } //# sourceMappingURL=tools.js.map