MUI MCP Server
Dynamically fetches and provides real-time information for Material-UI components from official documentation, including component props, usage examples, code generation, and search across 42+ MUI components for inputs, data display, feedback, surfaces, navigation, layout, and utilities.
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., "@MUI MCP Servershow me how to use a MUI Button with different variants"
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.
MUI MCP Server
A Model Context Protocol (MCP) server that dynamically fetches and provides real-time information for Material-UI (MUI) components from official documentation.
Features
π Search MUI Components: Find components by keywords
π Component Information: Get detailed props, examples, and usage from live MUI docs
π¨ Code Generation: Generate MUI components with custom props
π Component Listing: Browse all 42+ available MUI components
β‘ Dynamic Fetching: Always up-to-date with official MUI documentation
π₯ Health Check: Monitor fetch latency and component availability
Related MCP server: material-web-mcp
Installation
This project uses uv for Python package management.
Prerequisites
Python 3.10 or higher
uv package manager
Setup
Install uv if you haven't already:
pip install uvInstall dependencies:
uv syncAvailable Tools
The MCP server provides the following tools:
1. get_mui_component
Get detailed information about a specific MUI component.
Parameters:
component_name(string): Name of the MUI component (e.g., Button, TextField, Card)
Example:
{
"component_name": "Button"
}2. search_mui_components
Search for MUI components by keyword.
Parameters:
query(string): Search query (e.g., 'input', 'button', 'layout')
Example:
{
"query": "input"
}3. list_all_components
List all available MUI components (fetched dynamically from MUI docs).
Parameters: None
4. mui_health
Health check that fetches components live and reports count and latency.
Parameters: None
5. generate_mui_component
Generate a complete MUI component with specified props.
Parameters:
component_name(string): The MUI component to generateprops(object, optional): Props to apply to the componentchildren(string, optional): Content/children for the component
Example:
{
"component_name": "Button",
"props": {
"variant": "contained",
"color": "primary"
},
"children": "Click Me"
}Available Components
The server dynamically fetches information for 42+ MUI components including:
Inputs: Button, TextField, Checkbox, Radio, Switch, Slider, Select, Autocomplete
Data Display: Typography, Avatar, Badge, Chip, List, Table, Tooltip
Feedback: Alert, Dialog, Snackbar, Progress (Circular/Linear), Skeleton
Surfaces: Card, Paper, Accordion, AppBar
Navigation: Drawer, Menu, Breadcrumbs, Link, Tabs, Pagination, Stepper
Layout: Box, Container, Grid, Stack, ImageList
Utils: Popover, Backdrop, SpeedDial, ToggleButton, Rating
All components are fetched live from mui.com with latest props, examples, and documentation.
Usage with Claude Desktop
To use this MCP server with Claude Desktop, add it to your Claude configuration:
Windows
Edit %APPDATA%\Claude\claude_desktop_config.json:
{
"mcpServers": {
"mui-mcp-server": {
"command": "uv",
"args": [
"--directory",
"C:\\Users\\TejasBorate\\Desktop\\MUI-MCP-SERVER",
"run",
"mui-mcp-server"
]
}
}
}macOS
Edit ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"mui-mcp-server": {
"command": "uv",
"args": [
"--directory",
"/path/to/MUI-MCP-SERVER",
"run",
"mui-mcp-server"
]
}
}
}Running the Server
Standalone
uv run mui-mcp-serverFor Development
cd src/mui_mcp_server
uv run python server.pyExample Queries
Once connected to Claude, you can ask:
"Show me how to use a MUI Button component"
"Generate a TextField component with email validation"
"List all available MUI components"
"Search for layout components in MUI"
"Create a Card component with a header and actions"
Project Structure
MUI-MCP-SERVER/
βββ src/
β βββ mui_mcp_server/
β βββ __init__.py
β βββ server.py # Main MCP server implementation
β βββ mui_fetcher.py # Dynamic MUI docs scraper
βββ pyproject.toml # Project dependencies
βββ README.md # This file
βββ QUICKSTART.md # Quick setup guideHow It Works
This server uses dynamic fetching to scrape component information directly from MUI's official documentation:
On each request, it fetches the latest component data from mui.com
Parses descriptions, props, and code examples from the docs
Returns formatted, ready-to-use component information
No static data or cache - always current with MUI releases
To add more components, edit COMPONENT_URLS in src/mui_mcp_server/mui_fetcher.py:
COMPONENT_URLS = {
"YourComponent": "/material-ui/react-your-component/",
}License
MIT
Contributing
Feel free to add more MUI components or improve the existing tool functionality!
Available Tools
5 toolsgenerate_mui_componentC
Generate a complete MUI component with specified props and customization
| Name | Required | Description | Default |
|---|---|---|---|
| component_name | Yes | The MUI component to generate (e.g., Button, TextField) | |
| props | No | Props to apply to the component as key-value pairs | |
| children | No | Content/children for the component |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden but only states it generates a component without detailing behavioral traits. It doesn't disclose if this creates new files, requires authentication, has rate limits, or what the output format is (e.g., code snippet). This leaves significant gaps for a tool that likely involves code generation.
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, efficient sentence that front-loads the core purpose without unnecessary words. Every part earns its place by concisely conveying the tool's function.
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?
Given the complexity of generating code components, no annotations, and no output schema, the description is incomplete. It lacks details on output format, error handling, dependencies, or how it interacts with siblings, making it inadequate for effective tool selection and use.
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 all three parameters. The description adds minimal value by implying props and customization but doesn't provide additional syntax, examples, or constraints beyond what the schema specifies, such as valid component names or prop formats.
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 action ('Generate') and resource ('complete MUI component'), specifying it includes props and customization. However, it doesn't differentiate from sibling tools like 'get_mui_component' or 'search_mui_components', which likely retrieve rather than create components.
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 provided on when to use this tool versus alternatives. It doesn't mention prerequisites, such as needing a specific MUI version or context, or clarify its role relative to siblings like 'list_all_components' for browsing components.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_mui_componentC
Get detailed information about a specific MUI component including props, examples, and usage
| Name | Required | Description | Default |
|---|---|---|---|
| component_name | Yes | The name of the MUI component (e.g., Button, TextField, Card) |
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 states the tool retrieves information, implying a read-only operation, but does not specify any behavioral traits such as error handling (e.g., what happens if the component name is invalid), performance characteristics, or data sources. The description is minimal and lacks context on how the tool behaves beyond its basic purpose.
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, clear sentence that efficiently conveys the tool's purpose without unnecessary words. It is front-loaded with the main action ('Get detailed information') and specifies key details ('props, examples, and usage'). However, it could be slightly more structured by explicitly separating usage guidelines or behavioral notes, but it earns high marks for brevity and clarity.
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?
Given the tool's low complexity (one parameter, no output schema, no annotations), the description is adequate but has gaps. It covers the basic purpose and what information is retrieved, but lacks guidance on usage relative to siblings and behavioral transparency. For a simple read tool, this is minimally viable, but improvements in guidelines and transparency would enhance completeness.
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 100% description coverage, with the single parameter 'component_name' documented as 'The name of the MUI component (e.g., Button, TextField, Card)'. The description adds no additional meaning beyond this, such as format constraints or examples of valid inputs. With high schema coverage, the baseline score of 3 is appropriate, as the schema does the heavy lifting.
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 purpose with a specific verb ('Get') and resource ('MUI component'), specifying what information is retrieved ('detailed information including props, examples, and usage'). However, it does not explicitly differentiate from sibling tools like 'search_mui_components' or 'list_all_components', which might also retrieve component information but with different scopes or formats.
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 no guidance on when to use this tool versus alternatives. It does not mention sibling tools like 'search_mui_components' (which might handle broader queries) or 'list_all_components' (which might list components without details), leaving the agent to infer usage based on tool names alone. There are no explicit when-to-use or when-not-to-use instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_all_componentsB
List all available MUI components in the database
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('List all available MUI components') but doesn't describe key traits like whether this is a read-only operation, potential rate limits, authentication needs, or what the output format looks like (e.g., list structure, pagination). This is a significant gap for a tool with zero annotation coverage.
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, efficient sentence that directly states the tool's purpose without any wasted words. It is appropriately sized and front-loaded, making it easy for an agent to parse quickly and understand the core functionality.
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?
Given the lack of annotations and output schema, the description is incomplete for effective tool use. It doesn't explain behavioral aspects (e.g., safety, performance) or output details, which are critical for an agent to invoke the tool correctly. While the purpose is clear, the overall context is insufficient for a tool that likely returns a list of components.
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 0 parameters, and the schema description coverage is 100% (as there are no parameters to describe). The description doesn't need to add parameter details beyond what the schema provides, so it meets the baseline expectation for a parameterless tool without introducing confusion or redundancy.
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 verb ('List') and resource ('all available MUI components in the database'), making the purpose unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'search_mui_components' or 'get_mui_component', which likely have overlapping functionality but different scopes or filtering capabilities.
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 no guidance on when to use this tool versus alternatives like 'search_mui_components' or 'get_mui_component'. It lacks context about prerequisites, such as whether authentication is required, or any exclusions (e.g., not for filtered searches). This leaves the agent without clear direction for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mui_healthB
Health check: fetch components live and report count + latency
| 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 full burden of behavioral disclosure. It states the tool fetches live components and reports count and latency, which implies a read-only operation with performance metrics. However, it lacks details on potential side effects, error handling, rate limits, or authentication needs, leaving gaps in understanding its 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?
The description is highly concise and front-loaded: 'Health check: fetch components live and report count + latency'. It uses a single, efficient sentence that clearly communicates the core functionality without any wasted words, making it easy to parse and understand quickly.
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?
Given the tool's simplicity (0 parameters, no output schema, no annotations), the description is adequate but has gaps. It explains what the tool does but doesn't cover behavioral aspects like error conditions or output format details. For a health check tool, more context on expected outputs or failure modes would enhance completeness, though it's minimally viable.
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 0 parameters, and schema description coverage is 100%, so there are no parameters to document. The description appropriately doesn't discuss parameters, focusing instead on the tool's action and outputs. This meets the baseline for tools with no parameters, as it avoids unnecessary 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 clearly states the tool's purpose: 'Health check: fetch components live and report count + latency'. It specifies the verb ('fetch'), resource ('components live'), and outputs ('count + latency'), making it distinct from sibling tools like 'get_mui_component' or 'list_all_components'. However, it doesn't explicitly differentiate itself from siblings beyond implying a health-focused operation.
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 no guidance on when to use this tool versus alternatives. It doesn't mention any specific contexts, prerequisites, or exclusions, nor does it refer to sibling tools like 'generate_mui_component' or 'search_mui_components' for comparison. Usage is implied as a health monitoring tool, but this is not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_mui_componentsB
Search for MUI components by keyword or category
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query (e.g., 'input', 'button', 'layout', 'navigation') |
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 states the tool searches by keyword or category but doesn't explain how results are returned (e.g., format, pagination), what happens on no matches, or any performance constraints (e.g., rate limits). For a search tool with zero annotation coverage, this leaves significant gaps in understanding its 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?
The description is a single, efficient sentence: 'Search for MUI components by keyword or category'. It's front-loaded with the core action and resource, with zero wasted words. Every part of the sentence contributes directly to understanding the tool's purpose.
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?
Given the tool's moderate complexity (search operation), no annotations, no output schema, and 100% schema coverage, the description is minimally adequate. It covers the basic purpose but lacks details on behavioral traits, usage context, and result handling. For a search tool, it should ideally explain more about the search mechanism or output format to be 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?
The description adds minimal meaning beyond the input schema. It mentions searching 'by keyword or category', which aligns with the schema's 'query' parameter description ('Search query (e.g., 'input', 'button', 'layout', 'navigation')'). With 100% schema description coverage, the baseline is 3, as the schema already documents the parameter adequately, and the description doesn't provide additional syntax or format details.
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 purpose: 'Search for MUI components by keyword or category'. It specifies the verb ('Search') and resource ('MUI components'), distinguishing it from siblings like 'generate_mui_component' (creation) and 'get_mui_component' (retrieval). However, it doesn't explicitly differentiate from 'list_all_components' (which might list without search) or 'mui_health' (status check), keeping it from a perfect score.
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 no guidance on when to use this tool versus alternatives. It doesn't mention when to prefer 'search_mui_components' over 'list_all_components' for filtered results, or when to use 'get_mui_component' for direct retrieval instead. Without any context on exclusions or alternatives, it offers minimal usage direction.
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
generate_mui_component - First observed
get_mui_component - First observed
list_all_components - First observed
mui_health - First observed
search_mui_components
TDQS
Scored across 5 tools
Each tool has a clearly distinct purpose with no overlap: generate creates new components, get retrieves details, list enumerates all components, health performs monitoring, and search filters components. An agent can easily distinguish between these operations.
Four tools follow a consistent verb_noun pattern (generate_mui_component, get_mui_component, list_all_components, search_mui_components), but 'mui_health' deviates by placing the noun first. This minor inconsistency slightly reduces predictability.
With 5 tools, this server is well-scoped for its MUI component management domain. Each tool earns its place by covering key operations: generation, retrieval, listing, health checks, and searching, without being overly sparse or bloated.
The tool surface covers core CRUD-like operations for MUI components (generate, get, list, search) and includes a health check, but lacks update or delete functionality. This minor gap is workable for agents focused on component discovery and creation.
Maintenance
Related MCP Connectors
Find UI components and themes, retrieve code, and generate with hosted 21st AI when enabled.
Live React design-system APIs, patterns, and code validation so AI agents build real UI, not slop.
Get up-to-date, version-specific documentation and code examples from official sources directly inβ¦
@latest documentation and code examples to 9000+ libraries for LLMs and AI code editors in a singlβ¦
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceProvides AI assistants with comprehensive access to Material UI documentation, component details, and setup guides for building React applications. It enables searching through 50+ components and provides structured information on imports, customization, and best practices.2-
- AlicenseAqualityCmaintenanceProvides programmatic access to Material Web documentation and components for AI agents, enabling documentation search, template generation, and HTML validation.711 npm1MIT
- AlicenseAqualityDmaintenanceProvides access to Aceternity UI component library documentation, enabling AI assistants to browse, search, and retrieve detailed information about components.310 npmMIT
- FlicenseNot gradedqualityCmaintenanceProvides AI assistants with access to HeroUI component library documentation, enabling them to list components, retrieve detailed API references, and explore customization options for building React applications.2-