Skip to main content
Glama

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

  1. Install uv if you haven't already:

pip install uv
  1. Install dependencies:

uv sync

Available 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 generate

  • props (object, optional): Props to apply to the component

  • children (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-server

For Development

cd src/mui_mcp_server
uv run python server.py

Example 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 guide

How It Works

This server uses dynamic fetching to scrape component information directly from MUI's official documentation:

  1. On each request, it fetches the latest component data from mui.com

  2. Parses descriptions, props, and code examples from the docs

  3. Returns formatted, ready-to-use component information

  4. 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 tools
generate_mui_componentC

Generate a complete MUI component with specified props and customization

ParametersJSON Schema
NameRequiredDescriptionDefault
component_nameYesThe MUI component to generate (e.g., Button, TextField)
propsNoProps to apply to the component as key-value pairs
childrenNoContent/children for the component

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
component_nameYesThe name of the MUI component (e.g., Button, TextField, Card)

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query (e.g., 'input', 'button', 'layout', 'navigation')

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

  1. 5 tool updatesv0.1.0
    • First observedgenerate_mui_component
    • First observedget_mui_component
    • First observedlist_all_components
    • First observedmui_health
    • First observedsearch_mui_components

TDQS

B3.4/5.0

Scored across 5 tools

Disambiguation5/5

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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    Provides 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
    -
  • A
    license
    A
    quality
    C
    maintenance
    Provides programmatic access to Material Web documentation and components for AI agents, enabling documentation search, template generation, and HTML validation.
    7
    11 npm
    1
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Provides 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
    -