Ignite UI Theming MCP
The Ignite UI Theming MCP is a Model Context Protocol (MCP) server that enables AI assistants to generate production-ready theming code for Ignite UI applications. MCP is an open standard that lets AI assistants call specialized tools provided by external servers. Connect the Ignite UI Theming MCP to your editor or desktop AI client and describe what you want — the assistant does the rest.
Overview
Instead of writing Sass theming code by hand, you can describe your theming intent in plain language and let an AI assistant generate the correct code for you. The MCP server gives the AI the knowledge and tools it needs to produce accurate theming code — including palettes with proper shade generation, typography, elevations, component design token overrides, and more.
The server supports all four Ignite UI design systems — Material, Bootstrap, Fluent, and Indigo — in both light and dark variants. While this guide focuses on Angular, the MCP server also works with Ignite UI for Web Components, React, and Blazor. The detect_platform tool reads your package.json and selects the correct import paths and selectors automatically.
Most tools can produce either Sass or CSS output. Sass output is the default and integrates with the igniteui-theming Sass module. CSS output generates ready-to-use CSS custom properties and can be used without a local Sass toolchain — the server compiles it for you.
Example prompts to try once connected:
"Create a complete Material Design dark theme for my Angular app with primary #2563eb and coral secondary #f97316."
"What design tokens are available for the button component? Customize it with my brand purple #8b5cf6."
"My brand guidelines specify exact hex values for every primary shade — create a custom palette with those explicit values."
"Make the calendar component use smaller spacing."
Prerequisites
Before configuring the MCP server, make sure you have:
- Node.js (v18 or later) installed — this provides the
npxcommand used to launch the server. - A project with an Ignite UI package listed as a dependency in
package.json. For Angular, this isigniteui-angular(v15.0 or later). The server also supportsigniteui-webcomponents,igniteui-react, andigniteui-blazor. - An AI client with MCP support — for example, VS Code with GitHub Copilot, Cursor, Claude Desktop, Claude Code, or a JetBrains IDE with the AI Assistant plugin.
If you do not have igniteui-angular installed yet, run:
ng add igniteui-angular
Setup
The MCP server is bundled with the igniteui-theming package and launched via npx. No separate installation is needed beyond having an Ignite UI package already in your project.
The canonical launch command is:
npx -y igniteui-theming igniteui-theming-mcp
Note
The -y flag tells npx to auto-confirm the package download prompt so the server can start without manual intervention.
How version resolution works
Because igniteui-theming is a dependency of igniteui-angular, it is already present in your node_modules after npm install. When you run the launch command above, npx detects the locally installed copy and runs it directly — no network request is made. This means the MCP server version always stays in sync with the rest of your Ignite UI packages.
If you run the command outside a project (or before running npm install), npx -y downloads the latest version from npm into a temporary cache instead. The server will still start, but detect_platform will return generic since there is no package.json to inspect.
Choose your AI client below for the specific configuration steps.
VS Code
GitHub Copilot in VS Code supports MCP servers through a workspace-level configuration file. Create or edit .vscode/mcp.json in your project root:
{
"servers": {
"igniteui-theming": {
"command": "npx",
"args": ["-y", "igniteui-theming", "igniteui-theming-mcp"]
}
}
}
Once saved, open the GitHub Copilot chat panel, switch to Agent mode, and the Ignite UI Theming tools will be available.
Note
MCP support in VS Code requires GitHub Copilot and VS Code 1.99 or later.
Cursor
Cursor supports project-scoped MCP configuration. Create or edit .cursor/mcp.json in your project root:
{
"mcpServers": {
"igniteui-theming": {
"command": "npx",
"args": ["-y", "igniteui-theming", "igniteui-theming-mcp"]
}
}
}
The server will be picked up automatically when you open a new Cursor chat session.
Note
You can also configure MCP servers globally via Settings → MCP in Cursor.
Claude Desktop
Add the server to your Claude Desktop configuration file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"igniteui-theming": {
"command": "npx",
"args": ["-y", "igniteui-theming", "igniteui-theming-mcp"]
}
}
}
Restart Claude Desktop after saving. You will see an MCP server indicator (slider icon) in the chat input area, confirming that MCP tools are active.
Claude Code
Claude Code supports MCP servers through its CLI and a project-scoped .mcp.json file. To share the configuration with your team, create or edit .mcp.json in your project root:
{
"mcpServers": {
"igniteui-theming": {
"command": "npx",
"args": ["-y", "igniteui-theming", "igniteui-theming-mcp"]
}
}
}
Alternatively, you can add the server via the command line for your local environment only:
claude mcp add igniteui-theming -- npx -y igniteui-theming igniteui-theming-mcp
Use the /mcp command inside Claude Code to verify the server is connected.
JetBrains IDEs
JetBrains AI Assistant supports MCP servers through the IDE settings:
Open Settings (or Preferences on macOS).
Navigate to Tools → AI Assistant → Model Context Protocol (MCP).
Click + Add and choose As JSON or use the form fields.
Enter the following configuration:
{ "mcpServers": { "igniteui-theming": { "command": "npx", "args": ["-y", "igniteui-theming", "igniteui-theming-mcp"] } } }Click OK and restart the AI Assistant.
Note
MCP support requires the AI Assistant plugin to be installed and enabled in your JetBrains IDE.
Other MCP Clients
For any other MCP-compatible client, use the STDIO transport with the following command and arguments:
- Command:
npx - Arguments:
-y,igniteui-theming,igniteui-theming-mcp
Customizing AI Behavior with Project Rules
This section is optional. It is aimed at teams that want to fine-tune how the AI generates theming code to match their existing codebase conventions.
Editors like VS Code and Cursor let you provide project-level instruction files that shape how the AI behaves. The MCP server already teaches the AI which tools to call and in what order — you do not need to repeat that. Instead, use these instruction files to encode your project's design decisions, code conventions, and file organization so the AI produces code that fits your codebase on the first try.
VS Code (.github/copilot-instructions.md)
## Theming Conventions
### Sass Code Style
- Use `@use` / `@forward` — never `@import`.
- Extract repeated color values into Sass variables (e.g., `$brand-hover: #a78bfa`).
- Prefer setting primary design tokens over overriding many dependent tokens.
For example, setting `$foreground` on a flat button automatically derives
`$hover-background`, `$focus-background`, and `$active-background`.
- Keep component overrides scoped — use the component's default selector
(e.g., `.igx-button--flat`) unless a narrower scope is needed.
Cursor (.cursor/rules/theming.mdc)
---
description: Ignite UI for Angular theming conventions
globs: ["**/*.scss", "**/styles/**"]
---
## Project Theming Rules
### Code conventions
- `@use` / `@forward` only — no `@import`.
- Extract shared colors into variables; do not repeat hex literals.
- Prefer primary tokens — let dependent tokens derive automatically.
- One component override per file. Name the file after the component.
- Comment every override with the design rationale.
- Never hard-code gray shades for text — use palette grays so dark mode works.
- For dark mode, only the palette changes. Component overrides stay the same.
Note
Both files are committed to source control, so every team member gets the same AI behavior without manual setup. Adapt the brand colors, design system, and file paths to match your project.
Available Tools
The MCP server exposes a set of tools that the AI uses automatically based on your prompts. You never need to call them directly — just describe what you want.
To see the current full list of tools and their parameters at any time, ask your AI assistant:
"What tools does the Ignite UI Theming MCP provide?"
Here is a brief overview of each tool:
| Tool | Description |
|---|---|
detect_platform |
Reads package.json and identifies whether the project uses Ignite UI for Angular, Web Components, React, or Blazor. Selects the correct import paths and component selectors for all subsequent tools. |
create_palette |
Generates a color palette with automatic shade variants (50–900, A100–A700) from your base brand colors. Accepts an output parameter (sass or css) and a designSystem to select the schema. |
create_custom_palette |
Fine-grained palette creation — specify exact hex values for every shade when automatic generation is not suitable. |
create_typography |
Sets up a font family and type scale for a given design system. |
create_elevations |
Configures box-shadow elevation levels (0–24) for Material or Indigo design systems. |
create_theme |
One-shot complete theme: palette + typography + elevations, ready to include in your styles.scss. Accepts a designSystem (material, bootstrap, fluent, or indigo) and variant (light or dark). |
set_size |
Sets --ig-size globally or for a specific component (small, medium, or large). |
set_spacing |
Sets --ig-spacing (and optionally inline/block overrides) globally or per component. |
set_roundness |
Sets --ig-radius-factor (0 = square, 1 = fully round) globally or per component. |
get_component_design_tokens |
Returns all available design tokens for a component — always call this before create_component_theme. |
create_component_theme |
Generates Sass or CSS to customize a component's tokens (colors, borders, etc.). Accepts a variant (light or dark) to select the correct schema. |
get_color |
Returns a CSS variable reference for a palette color, e.g. var(--ig-primary-500). Supports optional contrast and opacity parameters. |
read_resource |
Reads built-in reference resources organized into four categories: platform configs (6), palette/typography/elevation presets (5), color guidance (7), and layout/spacing docs (8). |
Note
For compound components (e.g., combo, select, grid), get_component_design_tokens returns a list of related child themes instead of a flat token list. For example, querying grid may return child themes such as grid, grid-toolbar, grid-filtering, and paginator. The AI will generate a separate create_component_theme call for each child theme using the appropriate scoped selector.
Note
If your project uses the licensed @infragistics/igniteui-angular package, tell the AI so it can set the licensed parameter on palette, theme, and component tools. This adjusts the generated import paths accordingly.
Example Scenarios
The following scenarios show what you can ask the AI to do once the MCP server is connected.
New Project Theme
"I'm starting a new Angular project with Ignite UI. Create a complete Material Design light theme with primary #2563eb, secondary #f97316, and Roboto font."
The AI will call create_theme and return a ready-to-use styles.scss file. The generated output will look similar to this:
/* styles.scss */
@use 'igniteui-angular/theming' as *;
$my-palette: palette(
$primary: #2563eb,
$secondary: #f97316,
$surface: #fff,
$gray: #9e9e9e,
);
$my-typography: typography(
$font-family: 'Roboto, sans-serif',
);
@include core();
@include typography($my-typography);
@include theme($my-palette, $schema: $light-material-schema);
Dark Mode Variant
"I need a dark mode version of my existing theme. Keep the same primary blue but use a dark surface #121212."
Brand-Exact Color Shades
"Our design system specifies exact hex values for all 14 shades of our primary green. I'll paste the values — create a custom palette."
The AI will call create_custom_palette with mode: "explicit" for the primary color and auto-generate the rest. See Palettes for more detail on shade generation.
Component-Level Customization
"Style the flat button with a purple background #8b5cf6 and white text, with a lighter purple #a78bfa on hover."
The AI will call get_component_design_tokens first to discover valid token names, then call create_component_theme with the correct values.
Layout Adjustments
"The calendar feels bloated — reduce its spacing, and make all components slightly smaller."
The AI will call set_spacing scoped to the calendar component and set_size at the :root level.
Troubleshooting
Platform not detected
If detect_platform returns null or generic, make sure your package.json lists an Ignite UI package (e.g., igniteui-angular, igniteui-webcomponents) as a dependency. You can also tell the AI explicitly: "Use the Angular platform."
Luminance warning on colors
If the AI warns about color luminance, it means the chosen color is too light or too dark for automatic shade generation to work well. Either pick a mid-range color or ask the AI to use create_custom_palette with explicit shade values instead.
Surface color mismatch
For light themes use a light surface (e.g., #fafafa). For dark themes use a dark surface (e.g., #121212). Mismatched surface colors cause the AI to emit a warning.
Generated Sass does not compile
Ensure igniteui-angular and igniteui-theming are installed:
ng add igniteui-angular
Also confirm that core() is called before any other theming mixin in your styles.scss. See Theming with Sass for the correct file setup.
Additional Resources
Related topics:
Our community is active and always welcoming to new ideas.