color_tools.mcp.server

MCP server exposing Color Tools color science and filament expertise.

color_tools.mcp.server.analyze_color(red, green, blue, named_color_count=3, filament_count=5)[source]

Analyze an sRGB color in all spaces and find named-color and filament matches.

Return type:

ColorAnalysis

Parameters:
  • red (Annotated[int, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0), Le(le=255)])])

  • green (Annotated[int, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0), Le(le=255)])])

  • blue (Annotated[int, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0), Le(le=255)])])

  • named_color_count (Annotated[int, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=1), Le(le=50)])])

  • filament_count (Annotated[int, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=1), Le(le=50)])])

color_tools.mcp.server.compare_colors(first_red, first_green, first_blue, second_red, second_green, second_blue)[source]

Compare two sRGB colors with every Color Tools perceptual distance metric.

Return type:

ColorComparison

Parameters:
  • first_red (Annotated[int, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0), Le(le=255)])])

  • first_green (Annotated[int, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0), Le(le=255)])])

  • first_blue (Annotated[int, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0), Le(le=255)])])

  • second_red (Annotated[int, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0), Le(le=255)])])

  • second_green (Annotated[int, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0), Le(le=255)])])

  • second_blue (Annotated[int, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0), Le(le=255)])])

color_tools.mcp.server.convert_color(source_space, target_space, component_1, component_2, component_3, component_4=None, clamp_rgb=True)[source]

Convert scalar components between RGB, XYZ, LAB, LCH, HSL, CMY, and CMYK using D65 sRGB.

Return type:

ConversionResult

Parameters:
  • source_space (Literal['rgb', 'xyz', 'lab', 'lch', 'hsl', 'cmy', 'cmyk'])

  • target_space (Literal['rgb', 'xyz', 'lab', 'lch', 'hsl', 'cmy', 'cmyk'])

  • component_1 (float)

  • component_2 (float)

  • component_3 (float)

  • component_4 (float | None)

  • clamp_rgb (bool)

color_tools.mcp.server.find_filaments(red, green, blue, metric='de2000', count=5, makers=None, materials=None, finishes=None, owned_only=False, max_hue_delta=None)[source]

Find filament colors; maker, material, and finish filters accept comma-separated values.

Return type:

FilamentSearchResult

Parameters:
  • red (Annotated[int, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0), Le(le=255)])])

  • green (Annotated[int, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0), Le(le=255)])])

  • blue (Annotated[int, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0), Le(le=255)])])

  • metric (Literal['de2000', 'de94', 'de76', 'cmc', 'hyab'])

  • count (Annotated[int, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=1), Le(le=50)])])

  • makers (str | None)

  • materials (str | None)

  • finishes (str | None)

  • owned_only (bool)

  • max_hue_delta (Annotated[float | None, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0.0), Le(le=180.0)])])

color_tools.mcp.server.find_named_colors(red, green, blue, palette='css', metric='de2000', count=5)[source]

Find nearest named colors in the CSS database or a bundled retro palette.

Return type:

NamedColorSearchResult

Parameters:
  • red (Annotated[int, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0), Le(le=255)])])

  • green (Annotated[int, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0), Le(le=255)])])

  • blue (Annotated[int, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0), Le(le=255)])])

  • palette (str)

  • metric (Literal['de2000', 'de94', 'de76', 'cmc', 'hyab'])

  • count (Annotated[int, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=1), Le(le=50)])])

color_tools.mcp.server.get_filament_catalog()[source]

List valid makers, materials, and finishes for filtering filament searches.

Return type:

FilamentCatalog

color_tools.mcp.server.main()[source]

Run the Color Tools MCP server over stdio.

Return type:

None

color_tools.mcp.server.map_to_srgb_gamut(lightness, a, b)[source]

Check a LAB color and map it into sRGB by preserving lightness and hue while reducing chroma.

Return type:

GamutMappingResult

Parameters:
color_tools.mcp.server.transform_color_vision(red, green, blue, deficiency, operation='simulate')[source]

Simulate a color vision deficiency or apply a discriminability correction.

Return type:

CVDResult

Parameters:
  • red (Annotated[int, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0), Le(le=255)])])

  • green (Annotated[int, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0), Le(le=255)])])

  • blue (Annotated[int, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0), Le(le=255)])])

  • deficiency (Literal['protanopia', 'protan', 'deuteranopia', 'deutan', 'tritanopia', 'tritan', 'all'])

  • operation (Literal['simulate', 'correct'])

color_tools.mcp.server.validate_color_name(color_name, hex_code, delta_e_threshold=20.0)[source]

Validate whether a color name plausibly describes a hex color.

Return type:

ColorNameValidation

Parameters:
  • color_name (str)

  • hex_code (str)

  • delta_e_threshold (Annotated[float, FieldInfo(annotation=NoneType, required=True, metadata=[Ge(ge=0.0), Le(le=100.0)])])