Bead Colors MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Bead Colors MCPfind the closest Perler bead color to #FF6B6B"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Bead Colors MCP
A local MCP server for fuse bead color charts and approximate screen-color matching. It uses @meltbead/bead-colors as its only palette data source. No account or network request is needed after installation.
Requirements
Node.js 20 or newer.
Related MCP server: mcp-color
Run locally
npm install
npm startThe server uses stdio: an MCP client launches it and communicates through stdin/stdout. Starting it in a terminal will appear idle until a client connects. For a local client configuration, use an absolute path:
{
"mcpServers": {
"bead-colors": {
"command": "node",
"args": ["/absolute/path/to/bead-colors-mcp/src/index.js"]
}
}
}After publishing the npm package, clients can use npx -y @meltbead/bead-colors-mcp instead.
Tools
Tool | Purpose |
| List palette IDs, brands, sizes, counts, and sources. |
| Find a color by palette ID and code. |
| Search codes, names, HEX, brand, or series; results are limited. |
| Find the closest screen RGB references in one palette. |
| Find one approximate match in each requested palette. |
By default, search and cross-palette matching use one representative palette per brand or series. Subset palettes remain accessible by ID. Matching excludes effect finishes unless includeEffects is true. Transparent entries without one RGB value cannot be matched. Distances are ordinary Euclidean RGB distances, not measurements of actual beads.
Every color result includes a reminder to verify important shades against physical beads and printed product codes. Palette source URLs and notes come from the data package.
Develop
npm test
npm run smokesmoke starts the service through a real MCP stdio client, lists its tools, and calls them.
License and data sources
The server code is MIT licensed. Palette data comes from @meltbead/bead-colors; see that package's source and third-party notices for attribution and data limitations. Brand names belong to their owners.
Available Tools
5 toolsget_colorA
Look up one fuse bead by palette ID and printed code. Includes approximate HEX/RGB and finish.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | ||
| paletteId | Yes | Palette ID from list_palettes, such as perler or artkal-m |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the result includes approximate HEX/RGB and finish, which is the key behavioral fact given there is no output schema, but it says nothing about read-only nature, error behavior on an unknown code, or how approximation is derived.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the lookup scope first and the returned fields second. Every clause carries information; nothing is repeated from the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read lookup with no annotations or output schema, the description covers the core purpose and the shape of the result. It omits not-found behavior and where the palette ID comes from, which matter for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: paletteId is documented in the schema with an example, but 'code' has no schema description. The description fills that gap by identifying it as the printed code on the bead, and the phrase 'palette ID and printed code' makes clear both are required keys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: look up a single fuse bead keyed by palette ID plus printed code. That singles it out from the search/list siblings, though no sibling is named explicitly and the title is null.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Look up one ... by palette ID and printed code' implies an exact-match single-record fetch, contrasting implicitly with search_colors and list_palettes. It never states when not to use it, nor the prerequisite that the palette ID should come from list_palettes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_palettesA
List available fuse bead palettes, brand, series, bead size, entry count, and source links.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description bears the burden. It discloses the return content fields (a useful substitute for the absent output schema) and 'List' implies a non-mutating read, but it says nothing about ordering, pagination, size of results, or whether any auth/source-link fetching occurs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the verb and resource first, followed by the returned fields. No filler; nothing redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 0-parameter, read-only list tool with no output schema, the field enumeration does the work the schema/annotations would otherwise do. Only minor gaps remain (result ordering, whether the list is exhaustive or paginated).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so there is nothing to explain; baseline 4 applies. The description correctly implies a no-argument, full-enumeration call.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List available fuse bead palettes') and enumerates the fields returned (brand, series, bead size, entry count, source links). That makes it clearly distinct from the color-oriented siblings (get_color, search_colors, nearest_colors, match_across_palettes), though it doesn't name them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word 'available' implies a discovery/enumeration use case, but there is no explicit when-to-use, when-not-to-use, or pointer to the sibling color tools. An agent can infer the role from the name and field list, which is the definition of implied guidance rather than stated guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
match_across_palettesB
Find one approximate screen-color match per selected palette, starting from a HEX value or an existing bead code.
| Name | Required | Description | Default |
|---|---|---|---|
| hex | No | ||
| code | No | ||
| includeEffects | No | ||
| sourcePaletteId | No | Palette ID from list_palettes, such as perler or artkal-m | |
| targetPaletteIds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses that matches are approximate and that there is one match per selected palette, but it does not explain input precedence when both hex and code are supplied, how includeEffects changes behavior, whether the operation is read-only, or what the return structure looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. The core action, scope, and input alternatives are presented immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter matching tool with no annotations and no output schema, the description is incomplete. It omits input precedence, includeEffects behavior, the role of sourcePaletteId, and any indication of the response shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 20%, so the description must add meaning. It clarifies the hex/code starting alternatives and that target palette IDs represent selected palettes, but it leaves includeEffects and sourcePaletteId unexplained and does not state whether hex and code are mutually exclusive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Find'), resource ('approximate screen-color match'), and scope ('per selected palette'), with the supported starting inputs named. It is clear what the tool does, but it does not explicitly distinguish itself from sibling tools such as nearest_colors.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when the tool is useful: when starting from a HEX value or an existing bead code and wanting matches across selected palettes. However, it gives no explicit when-to-use/when-not-to-use guidance and does not mention alternatives like nearest_colors or search_colors.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nearest_colorsA
Find the nearest approximate RGB screen colors in one palette. Excludes effect and transparent finishes by default.
| Name | Required | Description | Default |
|---|---|---|---|
| hex | Yes | ||
| limit | No | ||
| paletteId | Yes | Palette ID from list_palettes, such as perler or artkal-m | |
| includeEffects | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses a behavioral default (effect and transparent finishes excluded unless opted in), but says nothing about ordering of results, whether the nearest match is first, how limit truncates, or what happens with an unmatched hex. That is real context, but well short of full behavioral disclosure for an unannotated tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero padding, with the core action front-loaded and the default-behavior caveat immediately after. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no annotations, so the description should do more. It covers palette scoping and the effect/transparency default, but omits result ordering, the meaning of the top-N limit, and the shape of the returned matches — gaps an agent would notice when interpreting results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25%, so the description must compensate. It does add meaning for includeEffects via the "excludes effect and transparent finishes by default" clause, and paletteId is documented in the schema, but hex and limit get no explanatory treatment — the description never says limit is a top-N cap or that hex must be a 6-digit #RRGGBB value, even though the schema pattern enforces the format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ("Find the nearest approximate RGB screen colors") and scopes it to "one palette," which implicitly separates it from the sibling match_across_palettes. What's missing is an explicit naming of that sibling, so the differentiation must be inferred from the phrase "in one palette."
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the "one palette" phrasing and the default exclusion of effects hint at the single-palette matching case, but the description never says when to choose this over match_across_palettes, get_color, or search_colors. No prerequisites or when-not-to-use conditions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_colorsA
Search color codes, names, HEX values, brands, or series. Without paletteId, searches representative palettes only to avoid subset duplicates.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| paletteId | No | Palette ID from list_palettes, such as perler or artkal-m |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose one meaningful behavior: omitting paletteId restricts the search to representative palettes to avoid subset duplicates. It says nothing about result expansion, ordering, or whether restricting to a palette changes deduplication behavior, so the coverage is partial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with capability and followed by the one non-obvious caveat. No filler, no restatement of the tool name, and each sentence contributes new information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description should ideally explain what a result looks like and how limit affects it. It covers the query surface and the paletteId scoping rule well but leaves result shape and limit semantics entirely implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 33%: paletteId is documented in-schema and the description adds the scoping consequence of omitting it, while query's meaning is enriched by the enumerated searchable fields. The limit parameter is undocumented in both places beyond its numeric constraints, so the description only partially compensates for the low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and a concrete enumeration of searchable fields (color codes, names, HEX values, brands, series), which tells an agent exactly what the resource is. It doesn't explicitly contrast itself with siblings like get_color or nearest_colors, but the verb 'search' versus 'get'/'nearest' is distinguishable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence describes the consequence of omitting paletteId rather than when to include it, so the scoping rule implicitly guides usage. There is no explicit statement of when to prefer this over get_color (exact lookup) or nearest_colors (similarity), leaving the agent to infer alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
v0.1.0- First observed
get_color - First observed
list_palettes - First observed
match_across_palettes - First observed
nearest_colors - First observed
search_colors
TDQS
Scored across 5 tools
The tools mostly have clear, distinct purposes: list palettes, exact color lookup, search, nearest match within a palette, and match across palettes. There is some potential overlap because search_colors accepts HEX values while nearest_colors performs approximate RGB matching, but the descriptions help distinguish exact/catalog search from approximate matching.
All names use consistent snake_case and are easy to read. Most follow a verb_noun pattern, though nearest_colors is adjective_noun rather than verb-led, and match_across_palettes adds a prepositional structure.
Five tools is well-scoped for a read-only bead color reference server. Each tool covers a distinct mode of access without obvious bloat or redundancy.
The surface covers palette discovery, exact color lookup, search, nearest matching within a palette, and cross-palette matching. A dedicated way to list all colors in a specific palette is not explicitly exposed, which is a minor gap but not a major blocker.
Maintenance
Related MCP Connectors
WCAG color contrast checks, nearest accessible color, CSS color conversion and palette pair checks.
Contrast checks with fixes, OKLCH harmonies, palettes, color-blind previews and code export.
Convert colours between hex, RGB, HSL, OKLCH and CMYK, and compute harmonies.
Choose a palette, compare digital colors and create portable outfit, event or packing boards.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceExtract palettes from images, generate harmonies, gradients, random palettes; Check WCAG and APCA contrast; Suggest nearest passing OkLCH lightness; Simulate color-blindness; Convert and sort colors across formats (hex / RGB / HSL / OkLCH / …)MIT
- AlicenseNot gradedqualityBmaintenanceProvides color conversion between formats, WCAG contrast ratio computation, and nearest CSS named color lookup.13 npmMIT
- AlicenseNot gradedqualityDmaintenanceFuse bead MCP: convert images, generate AI art, matchcolors (CIEDE2000) estimate bead costs.MIT
- AlicenseAqualityCmaintenanceEnables matching digital sRGB colors to the nearest Behr paint colors and searching Behr colors by code or name.2MIT