@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
JavaScript
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