ui-polish-mcp
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., "@ui-polish-mcpAudit my signup form JSX, check the contrast of #2563EB text on white, and refine the button copy"
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.
ui-polish-mcp
MCP server for AI agents to create UIs that don't look AI-generated.
Detects and fixes the most common fingerprints of generated UI: generic palettes, uniform spacing, contextless copy, excessive animations, and lack of accessibility.
Available Tools
Tool | What it does |
| Analyzes JSX and returns a 0-100 score + list of issues with fixes |
| Converts "Submit" / "Click here" into contextual copy |
| Generates real placeholders instead of "Enter your..." |
| Suggests a theme preset based on the app type |
| Returns complete tokens for a preset (colors, fonts, radii, shadows) |
| Lists the 5 available presets |
| Validates WCAG AA/AAA contrast between two hex colors |
| Audits multiple color pairs at once |
Related MCP server: v0-mcp-ts
Theme Presets
Preset | Purpose |
| SaaS, productivity, dev tools (Linear/Vercel aesthetic) |
| Blogs, portfolios, creative agencies (handcrafted editorial) |
| Dashboards, analytics, DevOps (dense dark mode) |
| CRMs, onboarding, B2B apps (conversational SaaS) |
| Disruptive landing pages, startups (neobrutalism) |
Installation
git clone https://github.com/Pedro21062014/ui-polish-mcp
cd ui-polish-mcp
npm install
npm run buildClaude Desktop Configuration
Add to claude_desktop_config.json:
{
"mcpServers": {
"ui-polish": {
"command": "node",
"args": ["/caminho/absoluto/ui-polish-mcp/dist/index.js"]
}
}
}macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
Cursor Configuration
Create .cursor/mcp.json in the project root:
{
"mcpServers": {
"ui-polish": {
"command": "node",
"args": ["/caminho/absoluto/ui-polish-mcp/dist/index.js"]
}
}
}Agent Usage (Recommended Flow)
1. suggest_theme(appType, industry, mood)
→ escolhe o preset certo
2. get_theme(preset)
→ pega os tokens e aplica no app
3. [agente cria os componentes]
4. audit_component(jsx)
→ verifica cada componente antes de entregar
5. refine_copy(text, { action, noun })
→ melhora todos os textos de botões/labels
6. audit_color_pairs(pairs)
→ valida acessibilidade da paleta inteiraExample Output — audit_component
## Audit Result
Score: 52/100 | Grade: D
Summary: Fraco — múltiplos padrões de IA detectados. Revisão necessária.
### Issues (4)
1. [HIGH] color
- Problema: Paleta genérica: text-blue-500, bg-gray-100, text-gray-600
- Fix: Substitua por tokens customizados. Ex: text-[#1A1917], bg-[#FAFAF9]
2. [MEDIUM] spacing
- Problema: p-4 repetido 6x — espaçamento monótono sem hierarquia
- Fix: Varie: p-3 em elementos menores, p-6 em seções, p-10 em containers.
3. [HIGH] copy
- Problema: Copy genérico: "Submit", placeholder genérico
- Fix: Use verbos contextuais. Ex: "Salvar projeto", placeholder="Ex: pedro@empresa.com"
4. [HIGH] accessibility
- Problema: Botão com ícone sem aria-label
- Fix: <button aria-label="Fechar modal">Dev
npm run dev # roda com tsx (sem build)
npm run build # compila para dist/Available Tools
8 toolsaudit_color_pairsA
Audita múltiplos pares de cor de uma vez. Útil para verificar toda a paleta do tema antes de entregar.
| Name | Required | Description | Default |
|---|---|---|---|
| pairs | Yes | Lista de pares fg/bg para auditar |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says the tool 'audits' color pairs, but does not state whether it is read-only, what criteria it uses, what the result format is, or any side effects.
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 two short, purposeful sentences with no filler or repetition. The batch behavior and high-level use case are front-loaded clearly.
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 output schema and no annotations, the description should explain what an 'audit' produces and by what criteria, but it does not. It is minimally adequate for selecting the tool, but lacks critical return-value and acceptance-criteria information.
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 schema already documents the nested fg, bg, and label properties clearly. The description adds the batch aspect ('múltiplos pares') but no additional parameter-level meaning beyond what the schema provides, so baseline 3 is appropriate.
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 action ('Audita múltiplos pares de cor') and clearly identifies the resource: multiple color pairs. It distinguishes itself from sibling tools like check_contrast by emphasizing batch/palette-level auditing.
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 concrete usage context: 'Útil para verificar toda a paleta do tema antes de entregar.' This implies when to use it but does not explicitly mention when not to use it or name alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_componentA
Analisa código JSX/TSX e detecta padrões que fazem o componente parecer gerado por IA. Retorna score de 0-100, grade (A-F), lista de issues com fixes e itens aprovados. Use antes de entregar qualquer componente React.
| Name | Required | Description | Default |
|---|---|---|---|
| jsx | Yes | Código JSX ou TSX do componente para analisar |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral load. It discloses the output (score, grade, issues with fixes, approved items), implying read-only analysis. However, it does not mention any side effects, authorization, or error handling, though it does provide main behavioral expectations.
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 concise, front-loaded sentences: purpose, output, and usage. Each sentence adds distinct value without unnecessary detail. The structure is clear and scannable.
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 comprehensively explains what the tool returns (score, grade, issues, fixes, approved items) and gives a usage context. Given no output schema, this adequately explains the output. It lacks details on edge cases, but for a simple audit tool it is sufficient.
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% ('Código JSX ou TSX do componente para analisar'), which is adequate. The tool description adds context by explaining what the analysis does with the input, but it does not introduce new parameter-level meaning beyond what's in 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?
The description clearly states it analyzes JSX/TSX code to detect AI-generated patterns, distinguishing it from siblings focused on themes and contrast. The verb 'Analisa' plus a specific resource makes the tool's purpose unambiguous.
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 explicitly instructs to use the tool 'antes de entregar qualquer componente React' (before delivering any React component), giving a clear when-to-use. It does not explicitly mention when not to use it, 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.
check_contrastA
Verifica se um par de cores tem contraste adequado (WCAG AA/AAA). Use sempre que definir cor de texto sobre fundo. Retorna ratio, nível WCAG e sugestão de correção se falhar.
| Name | Required | Description | Default |
|---|---|---|---|
| largeText | No | Se é texto grande (>18px ou >14px bold) — threshold menor | |
| background | Yes | Cor do fundo em hex: ex #FAFAF9 | |
| foreground | Yes | Cor do texto em hex: ex #1A1917 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral disclosure burden. It discloses the return values (ratio, WCAG level, correction suggestion) and conditional behavior when contrast fails, which is sufficient for a read-only check tool. However, it does not mention error handling or color-format validation.
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 concise and front-loaded: three short sentences each add value, with no fluff or repetition. It communicates purpose, usage context, and return behavior efficiently.
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 3-parameter tool with no output schema and no annotations, the description covers the essential context: purpose, use case, and return semantics. It does not explicitly describe the role of the optional largeText parameter, but the schema already explains it, so the description is largely 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 description coverage is 100%, so the input schema already documents all parameters. The description adds no additional meaning beyond what the schema provides, such as how largeText affects thresholds or format constraints, so the baseline score of 3 is appropriate.
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 a specific action ('Verifica se um par de cores tem contraste adequado') targeting a concrete resource (color pairs) with an explicit standard (WCAG AA/AAA). It also distinguishes itself through the text-on-background use case, separating it from sibling tools like audit_color_pairs.
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 provides explicit guidance on when to use the tool: 'Use sempre que definir cor de texto sobre fundo.' This gives clear context but does not mention when not to use it or name specific alternatives, so it falls 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_themeA
Retorna tokens completos de um preset específico. Presets disponíveis: studio | craft | data | flow | brutal
| Name | Required | Description | Default |
|---|---|---|---|
| preset | Yes | Nome do preset |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It implies a read-only retrieval via 'Retorna' and lists available presets, but it does not disclose output format, error behavior, or side effects. For a simple getter this is acceptable but not rich.
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 two short sentences with no filler. The first sentence states the core function, and the second lists the valid options. 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 single-parameter retrieval tool, the description is mostly complete: it explains the purpose and enumerates valid inputs. It lacks usage context and return structure, but the simplicity of the tool makes this a minor gap.
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 schema already fully documents the preset parameter with an enum and a description ('Nome do preset'). The description repeats the enum values, adding no new parameter-level meaning beyond the schema. Baseline 3 applies due to 100% schema 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 clearly states the tool's function: 'Retorna tokens completos de um preset específico' (returns complete tokens for a specific preset). It also lists the valid presets, which helps distinguish it from siblings like list_presets or suggest_theme.
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?
No guidance is given about when to use this tool versus alternatives such as list_presets or suggest_theme. The description only states what the tool does, not when it should be preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_presetsA
Lista todos os presets de tema disponíveis com suas descrições.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the transparency burden. The verb 'Lista' strongly implies a read-only operation, and 'com suas descrições' discloses the content of the return value. However, it does not mention output structure, ordering, or any potential limitations.
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 in Portuguese. Every word contributes meaningful information: the action ('Lista'), the scope ('todos os presets de tema'), and the output detail ('com suas descrições'). There is 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 zero-parameter listing tool with no output schema, the description is sufficiently complete: it states what is listed and what the descriptions include. It could add more about the return format or sorting, but this is a simple tool and the description covers the essential context.
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 input schema has nothing to document. Per the baseline for zero-parameter tools, a score of 4 is appropriate; the description does not need to explain parameter meanings that do not exist.
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 ('Lista') and a specific resource ('todos os presets de tema disponíveis'), and it adds what the output includes ('com suas descrições'). This clearly differentiates it from sibling tools like get_theme or suggest_theme, which perform different operations.
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?
There is no explicit guidance on when to use this tool versus alternatives such as get_theme or suggest_theme. The use case is only implicit from the action 'Lista', with no mention of when it should or should not be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
refine_copyA
Melhora textos genéricos de UI para soarem humanos e contextuais. Remove padrões como "Submit", "Click here", "Error occurred", "Lorem ipsum". Use em labels de botões, placeholders, mensagens de erro e empty states.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Idioma (padrão: pt) | |
| noun | No | Substantivo do contexto: projeto | post | usuário | relatório | mensagem | |
| text | Yes | Texto original para refinar | |
| tone | No | Tom da escrita | |
| action | No | Ação do contexto: save | publish | delete | send | create | update | confirm |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden and does disclose core behavior: it removes generic patterns and makes text sound human/contextual. It gives concrete examples of patterns removed, which helps set expectations, although it doesn't state output shape or edge-case 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?
Three short sentences front-load the main action, then give concrete examples and target UI contexts. Every sentence adds value and the structure is easy to scan.
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 text-refinement tool with 5 params and no output schema, the description covers purpose, target contexts, and expected transformations. It could mention the returned value or limitations (e.g., not for long-form copy), but the description is sufficient for basic selection and 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 description coverage is 100%, so the baseline is 3. The description adds broader context about intended inputs (generic UI text and examples), but does not add parameter-specific detail beyond what the schema already 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?
Description uses a specific verb ('Melhora'/improves) and identifiable resource ('textos genéricos de UI'), then explicitly names the transformation ('Remove padrões como...'). It clearly distinguishes refine_copy from sibling tools by focusing on improving existing UI text rather than suggesting or auditing.
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 provides concrete contexts: 'labels de botões, placeholders, mensagens de erro e empty states.' It does not mention exclusions or alternative sibling tools, but the stated use cases are clear enough for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_placeholderA
Sugere placeholder contextual para campos de formulário. Em vez de "Enter your email...", retorna "Ex: pedro@empresa.com". Use sempre que criar inputs, textareas ou selects.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Idioma (padrão: pt) | |
| fieldName | Yes | Nome do campo: email | name | phone | password | search | url | cpf | cep | title | description | message | company |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Não há anotações, então a descrição assume o ônus. Ela informa que retorna um placeholder contextualizado (exemplo), mas não detalha o comportamento de fallback para campos não listados na enum, nem o formato exato da resposta. Há menção de idioma padrão, mas isso também está no schema.
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 descrição é curta e direta, contém um exemplo e instrução de uso. Apenas duas frases, sem redundância, mas poderia ser mais clara sobre o retorno em caso de campo não suportado.
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?
Ferramenta simples com 2 parâmetros cobertos pelo schema, mas sem anotações e sem output schema. A descrição cobre o essencial, mas não discute casos limite (ex: campo inválido, comportamento multi-idioma). Suficiente para uso básico.
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?
Embora o schema cubra 100% dos parâmetros, a descrição contextualiza o uso do placeholder (exemplo concreto 'pedro@empresa.com' para email) e menciona o idioma padrão. Isso adiciona um pouco além do schema, que lista os valores possíveis de fieldName mas não o propósito prático.
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?
O description identifica claramente o propósito: sugerir placeholders contextuais para formulários, com um exemplo concreto. Distingue-se dos irmãos ao focar em 'inputs, textareas ou selects', mas não menciona explicitamente como difere de outras ferramentas de copy como refine_copy.
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?
A descrição instrui 'Use sempre que criar inputs, textareas ou selects', fornecendo um contexto claro de uso. No entanto, não menciona quando NÃO usar ou alternativas específicas, como refine_copy para copy mais ampla.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_themeA
Sugere um preset de tema visual baseado no tipo de app. Retorna tokens completos: cores, fontes, raios, sombras, espaçamentos. Inclui CSS variables e config do Tailwind prontos para usar.
| Name | Required | Description | Default |
|---|---|---|---|
| mood | No | Mood visual: minimal | bold | editorial | data-heavy | friendly | |
| appType | No | Tipo do app: dashboard | crm | blog | landing | saas | portfolio | ecommerce | |
| darkMode | No | Se o app tem dark mode como padrão | |
| industry | No | Indústria: tech | finance | health | education | creative | startup |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the output format: complete tokens, CSS variables, and Tailwind config, giving the agent a clear expectation of what will be returned. It does not explicitly state side-effect-free behavior, but the constructive nature of 'suggest' implies it, and the output details add valuable context.
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 two concise sentences that state the purpose and output format without unnecessary detail. It is front-loaded with the main action and delivers the essential information in a compact manner.
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 no output schema, the description adequately conveys what the agent will receive: tokens, CSS variables, and Tailwind config. It does not explain how parameters affect the output, but given all parameters are optional and the schema descriptions are clear, this is sufficient. A minor gap is not specifying default behavior when no parameters are provided, but this is not critical.
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 schema has descriptions for all four parameters (100% coverage), so the description does not need to repeat them. The description only mentions 'based on the type of app,' which aligns with the appType parameter but does not add relationships or usage details beyond the schema. Thus, it adds marginal value over 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?
The description clearly states the tool suggests a visual theme preset based on the app type, and specifies the output includes tokens (colors, fonts, radii, shadows, spacings) and CSS/Tailwind config. This distinguishes it from siblings like get_theme (retrieving a specific theme) and list_presets (listing existing presets), making the purpose unambiguous.
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 usage by mentioning 'based on the type of app,' giving context that this tool generates a suggestion when an app type is known. However, it does not explicitly mention when to use it over alternatives like get_theme or list_presets, nor does it provide any exclusions or alternative recommendations.
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
v1.0.0- First observed
audit_color_pairs - First observed
audit_component - First observed
check_contrast - First observed
get_theme - First observed
list_presets - First observed
refine_copy - First observed
suggest_placeholder - First observed
suggest_theme
TDQS
Scored across 8 tools
Most tools have distinct purposes (audit, theme, contrast, copy, placeholders). One slight overlap: audit_component focuses on JSX patterns while audit_color_pairs focuses on color pairs, but both are 'audit' tools; descriptions differentiate them well. suggest_theme and get_theme could be confused for a moment, but suggest_theme generates a new preset while get_theme retrieves an existing one, so the distinction is clear enough.
Most tools follow verb_noun pattern: audit_component, suggest_theme, get_theme, check_contrast, refine_copy, suggest_placeholder. list_presets is also verb_noun (list_presets). One deviation: audit_color_pairs is verb_adj_noun but is still descriptive and consistent in using verbs. The pattern is largely consistent.
8 tools is well within the appropriate 3-15 range. Each tool serves a distinct part of the UI polish workflow: auditing, theming, contrast checking, copy refinement, and placeholders. The scope is clearly defined and not overly broad.
The surface covers the stated purpose well: audit, theme selection, theme retrieval, contrast checking, copy improvement. Minor gaps: no explicit tool for applying or updating a theme beyond getting presets, and no tool for auditing accessibility beyond color contrast (e.g., font sizes). However, the main workflows are well covered.
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
MCP server for building and testing AI agents with multi-model experimentation and insights.
Official MCP server for Agentwork — delegate tasks to AI agents with human-in-the-loop
The Figma MCP server brings Figma design context directly into your AI workflow.
MCP server for visual regression testing: triage a PR's UI diffs from your coding agent.
Related MCP Servers
- AlicenseCqualityAmaintenanceA production-grade MCP server that turns natural language intent into fully-architected, accessible, production-ready UI code through a 7-step agentic pipeline.201Apache 2.0
- AlicenseNot gradedqualityCmaintenanceMCP server that bridges design and code by generating UI components, layouts, and themes from text prompts using v0.dev, with features like code refactoring and accessibility auditing.181MIT
- FlicenseAqualityDmaintenanceMCP server that gives AI coding agents the ability to design UIs through Google Stitch. It generates production-ready HTML and screenshots from natural language prompts.9-
- FlicenseAqualityNot gradedmaintenanceMCP server enabling AI agents to search, retrieve details, and compare UI components from 13 popular UI libraries.3-
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/Pedro21062014/ui-polish-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server