Skip to main content
Glama
YBMecho
by YBMecho

Uiverse MCP Tool

A FastMCP-based code extraction tool for Uiverse.io, supporting component code extraction from Uiverse website for various frontend frameworks.

Features

  • 🎨 Support for multiple frontend framework code extraction

  • 🚀 Built on FastMCP, supporting both stdio and SSE transport methods

  • 🔧 Easy integration with AI workflows

  • 📦 Uses Playwright for web content extraction

Related MCP server: design-copier

Supported Frameworks

  • HTML/CSS

  • React

  • Vue

  • Svelte

  • Lit

System Requirements

  • Python >= 3.12

  • uv package manager

Installation

1. Clone or download the project

git clone https://github.com/YBMecho/Uiverse_MCP.git
cd Uiverse_MPC

2. Install dependencies

Using uv to install dependencies:

uv sync

3. Install Playwright browsers

uv run playwright install

Configuration

This tool supports two MCP configuration methods: stdio and SSE. Please add one of the following configurations to your MCP configuration file (such as Cursor's mcp.json).

{
  "mcpServers": {
    "uiverse-MCP-tool-stdio": {
      "name": "Uiverse MCP Tool",
      "type": "stdio",
      "description": "Uiverse MCP Tool",
      "isActive": true,
      "command": "uv",
      "args": [
        "--directory",
        "D:\\YBMecho\\Desktop\\Uiverse_MPC",
        "run",
        "app.py"
      ]
    }
  }
}

Note: Please replace D:\\YBMecho\\Desktop\\Uiverse_MPC with your actual project path.

Method 2: SSE configuration

{
  "mcpServers": {
    "uiverse-MPC-tool-SSE": {
      "name": "Uiverse MCP Tool",
      "type": "sse",
      "description": "Uiverse MCP Tool",
      "isActive": true,
      "url": "http://127.0.0.1:8000/sse"
    }
  }
}

Note: An HTTP server must be started before using the SSE method.

Usage

Available Tools

1. parse_and_extract

Extract component code from Uiverse links.

Input format: <framework> <link>

Examples:

HTML https://uiverse.io/Na3ar-17/evil-dragon-24
React https://uiverse.io/username/component-name
Vue https://uiverse.io/username/component-name
Svelte https://uiverse.io/username/component-name
Lit https://uiverse.io/username/component-name

Usage rules:

  • Links must start with https://uiverse.io/

  • Links must contain a specific component path (not just the domain)

  • Framework names are case-insensitive

2. list_supported_frameworks

List all currently supported frameworks.

Returns: List of supported frameworks (Markdown format)

Using with AI Assistants

After configuration, you can use it directly in MCP-supporting AI assistants (like Cursor):

Please extract HTML code from https://uiverse.io/Na3ar-17/evil-dragon-24

or

Use React framework to extract code from https://uiverse.io/username/component-name

The AI assistant will automatically call the parse_and_extract tool to retrieve the code.

Project Structure

Uiverse_MPC/
├── app.py                  # FastMCP main application
├── browser.py              # HTML/CSS extractor
├── browser_React.py        # React extractor
├── browser_Vue.py          # Vue extractor
├── browser_Svelte.py       # Svelte extractor
├── browser_Lit.py          # Lit extractor
├── pyproject.toml          # Project configuration
├── build_exe.spec          # PyInstaller configuration
├── dist/                   # Executable output directory
│   └── UiverseExtractor.exe
└── README.md

Building Executable

The project includes PyInstaller configuration to build a standalone Windows executable:

pyinstaller build_exe.spec

The generated UiverseExtractor.exe will be located in the dist/ directory.

Dependencies

  • mcp[cli] >= 1.16.0 - MCP protocol support

  • fastmcp >= 2.0.0 - FastMCP framework

  • playwright >= 1.55.0 - Browser automation

Development Notes

Local Running

Run in stdio mode:

uv run app.py

Adding Support for New Frameworks

  1. Create a new browser_<Framework>.py file

  2. Implement the extract_<framework>_code(url: str) -> str async function

  3. Import and add it to the _dispatch_extract function in app.py

  4. Update the SUPPORTED_FRAMEWORKS list

License

Please add the appropriate license information according to your needs.

Contributions

Issues and Pull Requests are welcome!

Contact

For questions or suggestions, please provide feedback through Issues.

Available Tools

2 tools
list_supported_frameworksA

列出当前支持的框架名称列表(Markdown)。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It explicitly states the read-only nature ('list') and the Markdown output format, which are useful behavioral traits. However, it does not discuss any potential variability (e.g., sorting, emptiness) or constraints, but for a simple list tool this is acceptable.

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, front-loaded sentence that directly conveys the action and result. Every word earns its place with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's trivial complexity (no parameters) and the presence of an output schema, the description sufficiently covers what is returned (framework names in Markdown). It is complete for an AI agent to understand and invoke the tool.

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 zero parameters, so the baseline is 4. There is nothing for the description to explain beyond the schema, and no parameter ambiguity exists.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb '列出' (list) and a clear resource '当前支持的框架名称' (currently supported framework names), with the output format (Markdown) noted. It clearly distinguishes from the sibling tool parse_and_extract.

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, nor any context about typical use cases or prerequisites. It merely states what the tool does without explaining when to invoke it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

parse_and_extractA
规则:输入格式为 “框架+空格+链接”,例如:
HTML https://uiverse.io/Na3ar-17/evil-dragon-24

AI 调用信息:
如果用户输入的链接的开头是 “https://uiverse.io/”,那么先识别该前缀后面是否有内容:
- 没有内容:不使用 MCP(此处返回说明)
- 有内容:根据‘框架’选择对应的 MCP 实现提取代码
ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavior itself. It reveals the URL-prefix condition and that a framework-based MCP implementation is selected to extract code. It does not describe the actual extraction result, return format, or side effects, leaving the behavioral profile incomplete.

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 well-organized with a rule section, example, and bulleted AI-calling instructions. It is reasonably concise, though the conditional bullet points could be condensed without losing information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter tool with an existing output schema, the description covers the input format, the embedded conditional, and the case where the tool should not be used. It omits handling for non-matching URL prefixes and unsupported frameworks, but the main invocation path is clearly specified, 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.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides only a 'query' string with no description (0% coverage). The description compensates fully by specifying the required format 'framework + space + link', including an example and the conditional constraint that the link must begin with the uiverse.io prefix. This adds substantial meaning beyond the schema.

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 states that the tool extracts code from a uiverse.io link using a framework name, with the input format 'framework + space + link'. It is more specific than the generic name and implies a different role than the sibling list_supported_frameworks. However, the core action is embedded in conditional logic, making it slightly less direct.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says to use the MCP when the link starts with 'https://uiverse.io/' and has content after the prefix, and to NOT use MCP when there is no content. This gives clear when-to-use and a notable when-not-to-use, but it does not cover links that don't start with the prefix or unsupported frameworks.

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.

  1. 2 tool updatesv0.1.0
    • First observedlist_supported_frameworks
    • First observedparse_and_extract

TDQS

A4.2/5.0
Disambiguation5/5

The two tools serve clearly distinct purposes: one lists supported frameworks, and the other extracts code from a given link. There is no overlap or ambiguity between them.

Naming Consistency5/5

Both tool names follow the same verb_noun pattern in snake_case: 'parse_and_extract' and 'list_supported_frameworks'. This is consistent and predictable.

Tool Count3/5

With only two tools, the server feels minimal but not absurdly under-scoped. The tools cover the core extraction workflow, though the count is on the low end of what would be expected.

Completeness4/5

The tool set covers the essential lifecycle: knowing which frameworks are supported and then extracting code from a Uiverse link. A minor gap is the lack of any search or discovery tool for finding components, but the stated purpose is extraction, which is well covered.

Maintenance

ActivityInactive
ResponsivenessNo issues

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

Related MCP Servers

Latest Blog Posts

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/YBMecho/Uiverse_MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server