frontend-design-mcp
Provides Airbnb's design tokens and design system guidelines so agents can style UIs to match Airbnb's visual language.
Provides Apple's design tokens and design system guidelines for generating or restyling frontends with Apple's look and feel.
Provides Figma's design tokens and design system guidelines for applying Figma's visual style to frontend work.
Provides Linear's design tokens and design system guidelines for styling interfaces in Linear's visual language.
Provides Nike's design tokens and design system guidelines for creating or restyling UIs to match Nike's brand.
Provides Notion's design tokens and design system guidelines for applying Notion's visual style to frontend work.
Provides Spotify's design tokens and design system guidelines for generating UIs that match Spotify's brand aesthetic.
Provides Stripe's design tokens and design system guidelines for styling interfaces with Stripe's visual language.
Provides Tesla's design tokens and design system guidelines for creating or restyling UIs in Tesla's design language.
Provides Vercel's design tokens and design system guidelines for applying Vercel's visual style to frontend work.
Click on "Install 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., "@frontend-design-mcpGet Stripe's design tokens to restyle our landing page."
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.
frontend-design-mcp
Gives your AI coding agent a real design system to follow, so the UI it writes looks like a brand you picked instead of generic AI output.
It searches three public catalogs of DESIGN.md files — getdesign.md,
designmd.app and designmd.ai — and hands back
only the part your agent asked for, not the whole 28KB document.
You: Restyle my landing page to match Airbnb.
Agent: [reads Airbnb's tokens - 137 tokens of context, not 6,152]
primary #ff385c · canvas #ffffff · ink #222222 · hairline #dddddd76 brands are downloadable outright — Stripe, Apple, Airbnb, Notion, Vercel, Linear, Figma, IBM, Nike, Tesla, Spotify and more — plus hundreds more searchable across the other two catalogs.
Setup
Needs Node 18 or newer. Searching all three catalogs and downloading the 76 getdesign.md brands needs no account and no key. Only designmd.ai downloads need a free key.
Plugin (recommended)
Installs the MCP server and the companion skill together. The skill is what tells the agent when to reach for the tools — at the start of frontend work, when picking it back up after a break, and when fixing a visual bug — and which call is cheapest.
Claude Code
/plugin marketplace add sam-rubinstein/frontend-design-mcp
/plugin install frontend-design@frontend-design-mcpGrok
grok plugin marketplace add sam-rubinstein/frontend-design-mcp
grok plugin install frontend-design@frontend-design-mcpInside the TUI, open /plugins after adding the marketplace and install frontend-design.
Codex
codex plugin marketplace add sam-rubinstein/frontend-design-mcp
codex plugin add frontend-design@frontend-design-mcpOr open /plugins and install frontend-design. Start a new session afterwards.
MCP server only
For Cursor, Windsurf, Zed, or if you already have the skill some other way.
Claude Code
claude mcp add -s user design -- npx -y frontend-design-mcp
claude mcp list # `design` should show as connectedCodex
codex mcp add design -- npx -y frontend-design-mcp
codex mcp listRestart Codex if it was already running.
[mcp_servers.design]
command = "npx"
args = ["-y", "frontend-design-mcp"]Grok CLI
grok mcp add design -- npx -y frontend-design-mcp
grok mcp listTools show up namespaced, as design__search_designs and so on.
[mcp_servers.design]
command = "npx"
args = ["-y", "frontend-design-mcp"]Cursor, Windsurf, Zed, anything else
Add this to the client's MCP config file:
{
"mcpServers": {
"design": {
"command": "npx",
"args": ["-y", "frontend-design-mcp"]
}
}
}This server speaks stdio, which every MCP client supports locally.
Related MCP server: eds-mcp-server
Optional: designmd.ai downloads
Searching designmd.ai needs no key. Downloading its community kits needs a free one from https://designmd.ai/api-keys:
claude mcp add -s user design -e DESIGNMD_API_KEY=dk_your_key -- npx -y frontend-design-mcpCodex takes the same idea as a flag:
codex mcp add design --env DESIGNMD_API_KEY=dk_your_key -- npx -y frontend-design-mcpGrok's mcp add has no env flag, so put it in ~/.grok/config.toml:
[mcp_servers.design]
command = "npx"
args = ["-y", "frontend-design-mcp"]
env = { DESIGNMD_API_KEY = "dk_your_key" }Without a key nothing vanishes — gated results still appear, labelled with what they need.
What your agent gets
Tool | What it's for |
| Read your project's own |
| Search all three catalogs at once. |
| Colors, type, spacing, radii as JSON. The cheap default. |
| List a document's sections before reading one. |
| One section, or the whole document. |
| Write a |
| What's enabled, and what needs a key. |
| Which brands changed upstream since you last looked. |
Development
npm install
npm run lint # Biome
npm test # offline unit tests
npm run test:live # adds live tests against the real catalogs
npm run smoke # drives the built server over stdio as a real MCP client
npm run audit # measures what each tool costs in tokensThe published package runs on Node 18. The test suite executes TypeScript directly and needs Node 22.18+; the runner will tell you if your version is too old.
How it works and why: docs/ARCHITECTURE.md.
Attribution
Design content belongs to its publishers — getdesign.md is maintained by VoltAgent, designmd.app by ft.ia.br, designmd.ai by its own team. This is an independent client that fetches on your behalf; it does not mirror, redistribute, or train on their catalogs. The files are reference material, not exact reproductions of any brand.
BSD 3-Clause licensed — see LICENSE.
Available Tools
8 toolscheck_updatesCheck for catalog changesA
Compare getdesign.md's live signed index against what is cached, reporting brands that are new or whose published sha256 changed. Only getdesign.md publishes digests, so only it can be checked this way.
| Name | Required | Description | Default |
|---|---|---|---|
| known | No | Optional map of slug to previously seen sha256, to diff against. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It discloses the comparison mechanism, the live-vs-cached nature, and the kind of results reported. However, it does not explicitly state whether the operation is read-only, whether it performs network access, or what the exact return shape is. This is acceptable but not richly transparent.
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 with no filler. The core behavior is front-loaded, and the second sentence adds a valuable scope limitation. Every word 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?
For a tool with one optional parameter and no output schema, the description covers the main behavior and constraint. However, it leaves ambiguity about what happens when 'known' is omitted, and it does not describe the return format beyond 'reporting brands'. Adequate but has clear gaps.
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 description coverage is 100%, so the parameter 'known' is already documented as an optional map of slug to sha256. The description adds context by linking this to the notion of 'cached' state and 'published sha256', which reinforces the semantics but does not add substantial new meaning beyond the schema.
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 action ('Compare getdesign.md's live signed index against what is cached') and a precise outcome ('reporting brands that are new or whose published sha256 changed'). This clearly distinguishes it from sibling retrieval and installation tools, and the restriction to getdesign.md further narrows scope.
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 gives clear context for when this tool applies: when checking for catalog updates via digest comparison. It also states a limitation ('Only getdesign.md publishes digests, so only it can be checked this way'), which helps an agent avoid misapplying it to other providers. It does not name specific sibling alternatives, but the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_designRead a design systemA
Return a DESIGN.md, or - strongly preferred - one section of it. Always pass section unless you genuinely need the whole document: these files average 28KB (~8k tokens) and a single section is typically under 10% of that.
| Name | Required | Description | Default |
|---|---|---|---|
| section | No | One section, e.g. "Colors", "Typography", "Components". Matches loosely. | |
| design_id | Yes | Namespaced id, e.g. "getdesign:stripe". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It usefully reveals the large average size (~8k tokens) and that sections are typically under 10% of the file, making the cost tradeoff transparent. It does not discuss errors or return format, but the core behavior is clear.
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 concise sentences deliver the key information up front: what is returned, the preferred mode, and the cost-based reason. Every sentence earns its place with no filler.
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 read tool with full schema coverage and no output schema, the description explains both the return value and the key usage consideration. It is slightly incomplete in not addressing siblings like get_design_sections, but the core calling context is sufficiently covered.
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 100%, so the parameters are already documented. The description adds important practical meaning by recommending the `section` parameter be used almost always, effectively clarifying that `section` is optional in schema but strongly preferred in practice.
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 clearly states what the tool does: return a DESIGN.md file, or preferably one section of it. This is specific enough to distinguish the core operation, though it does not explicitly differentiate itself from siblings like get_design_sections or get_project_design.
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?
Provides explicit, actionable guidance: always pass `section` unless the whole document is genuinely needed, with a concrete token-cost rationale. This is exactly the kind of when-to-use guidance an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_design_sectionsList a design system's sectionsA
List the sections of a DESIGN.md with each one's size in bytes, without downloading the prose. Use this to choose what to read before calling get_design, so you pull one section instead of a 28KB document.
| Name | Required | Description | Default |
|---|---|---|---|
| design_id | Yes | Namespaced id, e.g. "getdesign:stripe". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It discloses that the tool returns only section sizes rather than prose, which is a meaningful behavioral trait. It implies a read-only listing operation, though it does not explicitly mention permissions or error behavior.
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, no redundancy, and the most decision-relevant information is front-loaded: what it lists, the size detail, the no-download behavior, and when to call it.
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 one-parameter listing tool with no output schema, the description adequately explains what the result contains (sections with sizes), what it avoids (downloading prose), and how it fits into a larger workflow. No critical invocation context is missing.
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 single parameter design_id is already fully described in the schema with an example, so the description adds little parameter-level meaning. Baseline 3 is appropriate because schema coverage is 100%.
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 clearly states the specific action ('List the sections of a DESIGN.md'), the resource, and the key output detail (sizes in bytes). It implicitly distinguishes itself from get_design by noting it lists sections without downloading the full prose.
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?
Explicitly states when to use the tool: 'Use this to choose what to read before calling get_design, so you pull one section instead of a 28KB document.' This gives the agent a concrete decision rule and names the related alternative it should precede.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_design_tokensGet design tokens as JSONA
Return a design system's tokens - colours, typography, spacing, radii, components - as structured JSON. This is the cheapest way to answer any concrete styling question and should be your default over get_design. When a file has no machine-readable tokens the result sets partial:true and explains what is missing rather than returning nothing.
| Name | Required | Description | Default |
|---|---|---|---|
| only | No | Return just one token group. | |
| design_id | Yes | Namespaced id, e.g. "getdesign:stripe". |
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 partial:true fallback behavior when machine-readable tokens are absent and notes that it explains what is missing. It also signals cost ('cheapest way'). It does not discuss errors or auth, but these are less relevant for a simple read-style token fetch.
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?
Three tight sentences: the first states the core action, the second gives routing guidance, the third explains an important edge case. No filler or redundant restatement of 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?
The description is sufficient for a simple two-parameter read tool: it states what is returned, which sibling to prefer, and how missing tokens are handled. Without an output schema, it does not describe the exact JSON shape, but the declared token categories and partial:true behavior give an agent enough context to call it correctly.
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 description coverage is 100%, so the schema already documents design_id and only. The description lists token categories that mirror the only enum, but adds no new semantic meaning beyond what the schema provides.
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 ('Return'), a specific resource ('design system's tokens'), and clarifies the output format ('structured JSON'). It also explicitly distinguishes itself from the sibling tool get_design, saying it should be the default for concrete styling questions.
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 gives clear when-to-use guidance: it is the cheapest way to answer concrete styling questions and should be preferred over get_design. It does not enumerate all sibling alternatives or specify when to avoid it, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_designRead this project's DESIGN.mdA
Check whether the current project already has a DESIGN.md and summarize it: which design system it came from, its sections, and its colour tokens. Call this BEFORE writing or editing any frontend code, when resuming UI work after a break, and before fixing a visual bug - it is a cheap local read that tells you which design rules already apply. Returns exists:false when the project has none.
| Name | Required | Description | Default |
|---|---|---|---|
| project_root | No | Directory to look in. Defaults to the server's working directory. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and meets it: it labels the call as a 'cheap local read' and discloses the exists:false edge case. It could add error behavior or permissions, but for a non-mutating local read the disclosed traits are sufficient.
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 first sentence states purpose and output content; the second gives prioritized usage timing; the third covers the negative case. No sentence is wasted and the most important information is front-loaded.
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?
The description is complete enough for a one-parameter, read-only tool: it covers what the summary contains, when to use it, and the missing-file return. Because there is no output schema, a slightly more explicit success return shape would make it fully complete.
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 100% and the only parameter, project_root, is fully explained in its schema description. The tool description adds no extra parameter semantics, so the baseline of 3 applies.
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 action (check for and summarize the project's DESIGN.md) and enumerates what the summary covers: originating design system, sections, and colour tokens. The 'current project' and 'local read' framing separates it from the sibling design-search tools.
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?
It gives explicit trigger conditions: before writing/editing frontend code, when resuming UI work, and before fixing visual bugs. It does not name an alternative sibling or state when not to use it, so it falls just short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
install_designInstall a DESIGN.md into this projectA
Download a design system and write it to the project as DESIGN.md, stamped with its origin so a later session can identify it via get_project_design. Use this when the project is adopting a design system for real, rather than answering one question about it.
| Name | Required | Description | Default |
|---|---|---|---|
| design_id | Yes | Namespaced id, e.g. "getdesign:stripe". | |
| overwrite | No | Replace an existing file. Defaults to false. | |
| target_path | No | Relative path to write. Defaults to "DESIGN.md". | |
| project_root | No | Defaults to the server's working directory. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It adds a genuinely useful trait beyond the schema: the file is "stamped with its origin so a later session can identify it via get_project_design." However, it does not disclose failure behavior when DESIGN.md already exists and overwrite=false, reversibility, or any permission requirements, which matters for a disk-writing operation.
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 totaling roughly 60 words: the first delivers the action and artifact, the second delivers the decision rule. Every sentence earns its place and the core behavior is front-loaded with no filler.
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?
The definition is complete enough for a 4-parameter file-writing tool: purpose, output artifact, workflow linkage to get_project_design, and decision context are all present, with parameters fully documented in the schema. It loses a point because there is no output schema and the description does not cover what happens when the target file already exists or what a successful invocation returns.
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 description coverage is 100%, so the baseline of 3 applies even with no parameter detail in the description. The description adds marginal value by connecting the namespaced design_id example ("getdesign:stripe") to the origin-stamping behavior, but it does not elaborate on any parameter beyond what the schema already documents.
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 multi-step action — "Download a design system and write it to the project as DESIGN.md" — naming both the verb chain and the artifact produced. It also references sibling get_project_design, which distinguishes the install/persist behavior from read-only siblings like get_design, search_designs, and get_design_tokens.
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 gives an explicit when: "when the project is adopting a design system for real," and a clear when-not: "rather than answering one question about it." It stops short of naming the specific alternative tool for one-off questions, so the exclusion is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_providersList catalog providersA
Show which design catalogs are available, what each can do right now, and how to enable anything currently gated (for example a missing DESIGNMD_API_KEY).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It usefully reveals that the tool reports current availability, gating status, and remediation steps such as missing DESIGNMD_API_KEY. This goes beyond a simple 'list' and sets expectations that the output includes actionable status information.
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, well-structured sentence that front-loads the core purpose and then adds valuable detail about current capabilities and gated features. Every part 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?
For a no-parameter, no-output-schema listing tool, the description is complete: it explains what is shown, the nuance of 'right now', and how to act on gated items. No critical information is missing for an agent to invoke it correctly.
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 tool has zero parameters, so the schema provides no parameter semantics to clarify. The baseline for zero-parameter tools is 4, and the description does not need to add parameter-level detail.
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 uses a specific verb ('Show') with a clear resource ('design catalogs'), and goes further by explaining what it reveals: current capabilities and enablement steps. This distinguishes it from sibling tools that operate on individual designs or searches.
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 clearly implies when to use this tool: when you need to know which design catalogs are available and their current state. It does not explicitly name alternatives or exclusion conditions, but the context is strong enough for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_designsSearch design systemsA
Search every enabled catalog at once for a design system by brand, style, or mood (for example "stripe", "dark fintech dashboard", "warm editorial"). Returns compact metadata with a namespaced id for each hit. Results marked fetchable:false are real but gated; the response's gating map says why. Use this when starting new UI work and the project has no DESIGN.md yet.
| Name | Required | Description | Default |
|---|---|---|---|
| deep | No | Search inside document text, not just names. Use it for any style or mood query ("warm editorial", "dark fintech"), because getdesign.md indexes brand names only and its descriptions are boilerplate. Costs about a second on a cold cache, milliseconds afterwards - cheap enough to prefer whenever the query is not a brand name. | |
| tags | No | Tag filter; only designmd.ai uses these. | |
| limit | No | Max results per provider (default 10). | |
| query | Yes | Brand name, style, or mood. | |
| providers | No | Restrict to specific catalogs. Defaults to all enabled. | |
| fetchable_only | No | Drop gated results that cannot be downloaded. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden for behavioral disclosure. It explains the return type (compact metadata with a namespaced id), the meaning of fetchable:false results (real but gated), and mentions the response's gating map for further detail. It could also cover rate limits or authentication, but for a search operation this is reasonably transparent.
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 three sentences long and front-loaded with the core search behavior and examples. It then covers return format, gating semantics, and use case without any filler. Every sentence earns its place, and the structure flows naturally from what it does to how results behave to when to use it.
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 tool with 6 parameters and no output schema, the description covers the essential context: scope of search, query types, return format, gating behavior, and the intended use case. It does not fully describe the output structure or pagination, but the gating map mention gives agents enough to navigate results safely. This is complete enough for successful invocation in most workflows.
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 description coverage is 100%, so the baseline is 3. The description itself does not add much parameter-level detail beyond the schema, but the schema already provides rich guidance, especially for the 'deep' parameter. The tool description's examples ('stripe', 'dark fintech dashboard') reinforce query semantics without replacing schema documentation.
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 uses the specific verb 'Search' with a clear resource ('every enabled catalog at once for a design system') and clarifies the query types: brand, style, or mood, with concrete examples. It also notes the output shape (compact metadata with namespaced id), which helps distinguish this from sibling tools like get_design or get_design_sections.
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 explicitly states when to use this tool: 'when starting new UI work and the project has no DESIGN.md yet.' This is clear context, though it does not explicitly mention alternatives or when NOT to use it, relying on sibling tool names to cover that gap.
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. Dates show when Glama detected each change.
8 tool updates
v0.1.0- First observed
check_updates - First observed
get_design - First observed
get_design_sections - First observed
get_design_tokens - First observed
get_project_design - First observed
install_design - First observed
list_providers - First observed
search_designs
TDQS
Most tools have clearly distinct roles: search, install, project-state, and update-checking are well separated. The only soft spot is get_project_design vs get_design, since both involve DESIGN.md content, though one summarizes the local project file and the other fetches design documents/sections.
Every tool uses a consistent lowercase snake_case verb_noun pattern (get_*, list_*, search_*, install_*, check_*). The get_design_* family is predictable and makes related read operations easy to group.
Eight tools is a well-scoped size for a design-system MCP: enough to cover discovery, inspection, installation, and upkeep without redundancy or bloat.
The core lifecycle—search, inspect, install, check local state, and monitor updates—is covered. There is no explicit uninstall or apply-update operation, and local design access is summarized rather than returned in full, so agents may need workarounds for those edge cases.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Serves your design system and coding standards to coding agents, so they stop guessing.
A design-style library for AI agents: search real styles, fetch a ready-to-apply design spec.
Build and manage your design system with AI: tokens, themes, components, icons, Figma and code.
Access and maintain design system docs, tokens, components, skills, and contexts across any project.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI-powered access to authoritative design systems knowledge, including W3C standards, WCAG guidelines, and best practices from 188+ curated entries via semantic vector search.15203MIT
- AlicenseBqualityAmaintenanceEnables AI agents to access design system tokens and component contracts through MCP, reducing token usage and ensuring consistency.29MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to search, understand, and generate code for design system components by syncing and indexing a component library.-
- AlicenseAqualityBmaintenanceProvides deterministic, read-only design knowledge for AI coding agents to help them choose visual directions, plan UI states, and compose design tokens, all without network access.6294MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/sam-rubinstein/frontend-design-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server