Skip to main content
Glama
ewilderj

Fountain Pen Ink MCP Server

analyze_color

Identify fountain pen inks matching a specific color by analyzing hex codes and returning relevant ink knowledge with similarity results.

Instructions

Analyze a color and provide ink knowledge context

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
colorYesHex color code (e.g., "#FF5733")
max_resultsNoMaximum number of closest inks to return (default: 5)

Implementation Reference

  • The main handler function that implements the analyze_color tool logic: parses hex color to RGB, finds closest matching inks, determines color family and description using utilities, and returns a structured JSON analysis response.
    private analyzeColor(colorHex: string, maxResults: number = 5): MCPTextResponse {
      try {
        const rgb = hexToRgb(colorHex);
        const closestInks = findClosestInks(rgb, this.inkColors, maxResults);
    
        const results: SearchResult[] = closestInks.map((ink) => {
          const metadata = this.getInkMetadata(ink.ink_id);
          return createSearchResult(ink, metadata, ink.distance);
        });
    
        const analysis: ColorAnalysis = {
          hex: colorHex,
          rgb,
          closest_inks: results,
          color_family: getColorFamily(rgb), // No conversion needed
          description: getColorDescription(rgb), // No conversion needed
        };
    
        return {
          content: [
            {
              type: 'text',
              text: JSON.stringify(analysis, null, 2),
            },
          ],
        } satisfies MCPTextResponse;
      } catch {
        throw new Error(`Invalid color format: ${colorHex}. Please use hex format like #FF5733`);
      }
    }
  • src/index.ts:211-229 (registration)
    Registration of the analyze_color tool in the ListTools handler, including name, description, and input schema definition.
    {
      name: 'analyze_color',
      description: 'Analyze a color and provide ink knowledge context',
      inputSchema: {
        type: 'object',
        properties: {
          color: {
            type: 'string',
            description: 'Hex color code (e.g., "#FF5733")',
          },
          max_results: {
            type: 'number',
            description: 'Maximum number of closest inks to return (default: 5)',
            default: 5,
          },
        },
        required: ['color'],
      },
    },
  • src/index.ts:292-293 (registration)
    Dispatch/registration of the analyze_color tool in the CallToolRequest switch statement, mapping arguments to the handler method.
    case 'analyze_color':
      return this.analyzeColor(args.color as string, (args.max_results as number) || 5);
  • Input schema definition for the analyze_color tool, specifying parameters for color (required hex string) and optional max_results.
    inputSchema: {
      type: 'object',
      properties: {
        color: {
          type: 'string',
          description: 'Hex color code (e.g., "#FF5733")',
        },
        max_results: {
          type: 'number',
          description: 'Maximum number of closest inks to return (default: 5)',
          default: 5,
        },
      },
      required: ['color'],
    },

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/ewilderj/inks-mcp'

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