Skip to main content
Glama
deepakkumardewani

Color Scheme Generator MCP Server

generate_analogic_scheme

Create analogic color schemes based on a seed color, generating adjacent hues from the color wheel for cohesive designs. Specify the number of colors (3-10) to tailor your palette.

Instructions

Generates an analogic color scheme with adjacent colors on the color wheel

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
colorYesThe seed color in hex (098765), RGB (0,71,171), or HSL (215,100%,34%) format
countNoNumber of colors to generate (3-10, default: 5)

Implementation Reference

  • The inline asynchronous handler function for the 'generate_analogic_scheme' tool. It extracts 'color' and 'count' from input args, calls the shared 'generateColorScheme' helper with 'analogic' mode, and returns the result as a formatted JSON text content block.
    async (args) => { const { color, count } = args; const result = await generateColorScheme(color, "analogic", count); return { content: [ { type: "text", text: JSON.stringify(result, null, 2), }, ], }; }
  • Zod-based input schema shared across all color scheme tools, including 'generate_analogic_scheme'. Defines 'color' as a string (with description of supported formats) and optional 'count' as an integer between 3-10 (default 5).
    const colorSchemeInputShape = { color: z .string() .describe( "The seed color in hex (098765), RGB (0,71,171), or HSL (215,100%,34%) format" ), count: z .number() .int() .min(3) .max(10) .default(5) .optional() .describe("Number of colors to generate (3-10, default: 5)"), };
  • The registration function 'registerAnalogicScheme' that calls 'server.tool' to register the tool with its name, description, input schema, and handler function.
    function registerAnalogicScheme() { server.tool( "generate_analogic_scheme", "Generates an analogic color scheme with adjacent colors on the color wheel", colorSchemeInputShape, async (args) => { const { color, count } = args; const result = await generateColorScheme(color, "analogic", count); return { content: [ { type: "text", text: JSON.stringify(result, null, 2), }, ], }; } ); }
  • Shared helper function that parses the input color, constructs the URL for The Color API with the specified mode ('analogic' for this tool), fetches and processes the response, formats the colors array with hex, rgb, hsl, and name, and returns a structured scheme object.
    async function generateColorScheme( color: string, mode: string, count: number = 5 ) { const { param, value } = parseColorInput(color); const url = `https://www.thecolorapi.com/scheme?${param}=${value}&mode=${mode}&count=${count}&format=json`; try { const response = await fetch(url); if (!response.ok) { throw new Error( `Color API request failed: ${response.status} ${response.statusText}` ); } const data: any = await response.json(); if (!data.colors || !Array.isArray(data.colors)) { throw new Error("Invalid response from Color API"); } // Format the response for better readability const colors = data.colors.map((color: any, index: number) => ({ position: index + 1, hex: color.hex?.value || "N/A", rgb: color.rgb ? `rgb(${color.rgb.r}, ${color.rgb.g}, ${color.rgb.b})` : "N/A", hsl: color.hsl ? `hsl(${color.hsl.h}, ${color.hsl.s}%, ${color.hsl.l}%)` : "N/A", name: color.name?.value || "Unknown", })); return { scheme_mode: mode, seed_color: data.seed?.hex?.value || value, color_count: colors.length, colors: colors, }; } catch (error) { console.error(`Error generating ${mode} color scheme:`, error); throw error; } }
  • Helper function to parse input color string into API-compatible {param, value} for hex, rgb, or hsl formats, used by generateColorScheme.
    function parseColorInput(color: string): { param: string; value: string } { const cleanColor = color.trim(); // Check for hex format if (cleanColor.startsWith("#")) { return { param: "hex", value: cleanColor.substring(1) }; } else if (/^[0-9A-Fa-f]{6}$/.test(cleanColor)) { return { param: "hex", value: cleanColor }; } // Check for RGB format if ( cleanColor.toLowerCase().includes("rgb") || /^\d+,\d+,\d+$/.test(cleanColor) ) { const rgbMatch = cleanColor.match(/(\d+),\s*(\d+),\s*(\d+)/); if (rgbMatch) { return { param: "rgb", value: `${rgbMatch[1]},${rgbMatch[2]},${rgbMatch[3]}`, }; } } // Check for HSL format if (cleanColor.toLowerCase().includes("hsl") || cleanColor.includes("%")) { const hslMatch = cleanColor.match(/(\d+),\s*(\d+)%,\s*(\d+)%/); if (hslMatch) { return { param: "hsl", value: `${hslMatch[1]},${hslMatch[2]}%,${hslMatch[3]}%`, }; } } // Default to hex if format is unclear return { param: "hex", value: cleanColor.replace("#", "") }; }

Other Tools

Related Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/deepakkumardewani/color-scheme-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server