# io.github.mahmoudilyan/marmo-ui (remote · mcp.marmoui.com)

Live React design-system APIs, patterns, and code validation so AI agents build real UI, not slop.

- Trust score: 65/100 (medium)
- Change this week: +4
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `mcp.marmoui.com`: 65/100 (this document), [markdown](https://verifymcp.io/servers/mahmoudilyan-marmo-ui/mcp.md), [page](https://verifymcp.io/servers/mahmoudilyan-marmo-ui/mcp)

## Channel facts

- Endpoint: `https://mcp.marmoui.com/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.1.1`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 57/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 14 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 67/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 1747 tokens (~124/item across 14 items; 14 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 99/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 96% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http mahmoudilyan-marmo-ui https://mcp.marmoui.com/mcp
```

### Codex

```toml
[mcp_servers.mahmoudilyan-marmo-ui]
url = "https://mcp.marmoui.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "mahmoudilyan-marmo-ui": {
      "type": "remote",
      "url": "https://mcp.marmoui.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add mahmoudilyan-marmo-ui --url https://mcp.marmoui.com/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  mahmoudilyan-marmo-ui:
    url: "https://mcp.marmoui.com/mcp"
```

### Other

```json
{
  "mcpServers": {
    "mahmoudilyan-marmo-ui": {
      "type": "http",
      "url": "https://mcp.marmoui.com/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-02 (score 65, +1)

No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-31 (score 64, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 63, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-29 (score 63, +1)

No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-28 (score 62, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-27 (score 61, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 61)

First indexed and scored.

## MCP tools (14)

### `get_knowledge_version` (~83 tokens)

Returns the MCP knowledge version: gitSha, indexedAt, componentCount, patternCount, uptimeSeconds. Call this ONCE per session before generating UI code so you know how fresh the design-system data is. Cheap to call. If gitSha is "unknown" or indexedAt is far in the past, surface that to the user before relying on the data.

### `get_design_guidelines` (~250 tokens)

MANDATORY FIRST CALL before writing any @marmoui/ui code in this session. Returns a step-by-step generation checklist (which tools to call, in what order), critical rules (no namespace sub-components, PageSection is self-closing, no Sidebar export), component patterns, and ICON LIBRARY RULES. Pass iconLibrary (default "phosphor"; also "material" | "lucide" | "tabler" | "heroicons" | "feather") to get that library's import source, icon name map, and weight/style mapping — and pass the SAME value to review_generated_code so it enforces it. Ask the user which icon library they want before writing UI code. Call topic="patterns" to get the generation checklist specifically.

Input parameters:

- `iconLibrary` (string): Icon library the agent should import from. Default: "phosphor". Ask the user which library they want before writing UI code; if they have no preference, omit this and the default (Phosphor) applies.…
- `topic` (string): Specific guideline topic (default: "all")

### `list_components` (~93 tokens)

List all available @marmoui/ui components with names, descriptions, categories, and prop counts. Use to discover what exists. Prefer `search_components` when you already know the use case (form, table, dialog, etc.).

Input parameters:

- `category` (string): Filter by category (e.g., "Components", "Layout")
- `status` (string): Filter by status (e.g., "stable", "beta")

### `search_components` (~102 tokens)

Search @marmoui/ui by keyword (e.g. "form", "table", "dialog", "avatar"). Preferred discovery tool — returns the 5-8 most relevant components for a need. Call this before `get_component_info` when unsure which component to use.

Input parameters:

- `limit` (number): Maximum results to return (default: 10)
- `query` (string, required): Search query — matches against component names, descriptions, categories, and prop names

### `get_component_info` (~106 tokens)

Get exact props (with types and defaults), code examples, composition patterns, and common mistakes for a single @marmoui/ui component. REQUIRED before using any component for the first time in a session — prevents hallucinated props (e.g. variant="danger" on Badge, size="lg" on Text) that fail at build time.

Input parameters:

- `componentName` (string, required): Name of the component to get information about (e.g. "Button", "Card", "Input")

### `get_pattern` (~231 tokens)

Get a complete, validated composition example for a common UI pattern. Available: app-layouts (ASK USER which of 4 layout ids before any full page), app-shell, confirmation-dialog, dialogs-for-other-actions, data-table-with-filters, form-with-validation, posthog-tracking. Call app-layouts first for full pages — returns layout selection flow + AppLayout usage. Pass iconLibrary (default "phosphor") so the usage note tells you which icon import source to rewrite the pattern's icons to. Returns code + inline validation report. Call with no arguments to list all patterns.

Input parameters:

- `iconLibrary` (string): Icon library the caller is using. Default: "phosphor". The returned usage note tells the agent which icon import source to use, and the inline validation enforces it. Supported: phosphor, material, l…
- `patternId` (string): Pattern identifier, e.g. "app-shell", "data-table-with-filters", "confirmation-dialog", "dialogs-for-other-actions". Omit to list all available patterns.

### `review_generated_code` (~307 tokens)

⚠️  MANDATORY — call this on every piece of code you generate before returning it to the user. Validates TSX/JSX against real @marmoui/ui prop signatures and returns { valid, errors[], warnings[], suggestedFixes[], iconLibrary }. Catches: (1) unknown imports, (2) Tabs.List/Tabs.Trigger namespace misuse → auto-suggests TabsList/TabsTrigger fix, (3) PageSection used as wrapper (must be self-closing), (4) hallucinated props, (5) icons imported from the wrong icon library (pass iconLibrary — default "phosphor" — matching what you passed to get_design_guidelines; wrong-library icon imports are ERRORS). If valid=false, fix all errors and call this again. DO NOT return code with errors to the user.

Input parameters:

- `code` (string, required): The complete TSX/JSX code you just generated. Must import from @marmoui/ui.
- `context` (string): Optional: describe what the code is supposed to do (e.g. "settings page with tabs"). Helps produce more targeted feedback.
- `iconLibrary` (string): Icon library the code must import icons from. Default: "phosphor". Pass the SAME value you passed to get_design_guidelines. When set, imports from any other icon library are reported as ERRORS. Suppo…

### `validate_component_usage` (~154 tokens)

Validate a TSX/JSX snippet against real @marmoui/ui prop signatures. Returns `{valid, issues[]}`. Prefer `review_generated_code` for post-generation review (it also auto-fixes namespace patterns and suggests related patterns). Use this tool when validating user-provided or existing code rather than newly generated code.

Input parameters:

- `code` (string, required): TSX/JSX code snippet to validate against @marmoui/ui
- `iconLibrary` (string): Optional: icon library the code must import icons from. Default: "phosphor". When set, imports from any other icon library are reported as errors. Supported: phosphor, material, lucide, tabler, heroi…

### `get_tenant_theme` (~39 tokens)

Returns the authenticated tenant's customized theme tokens, CSS variables export, and component overrides. Call after auth to apply tenant-specific styling in generated code.

### `get_design_md` (~97 tokens)

Generate a portable DESIGN.md for the authenticated tenant — brand color, type, tokens, and component inventory — that any AI agent can read to generate on-brand UI. Pass format="markdown" (default) for the DESIGN.md string or format="json" for structured data. Output is deterministic for a given tenant.

Input parameters:

- `format` (string): Output format. "markdown" returns the DESIGN.md string; "json" returns structured data.

### `generate_component` (~101 tokens)

Validate and optionally save a custom component for the authenticated tenant. Runs review_generated_code validation before persisting. Use for AI-generated or customized components.

Input parameters:

- `code` (string, required): Generated TSX code using @marmoui/ui primitives
- `componentName` (string, required): PascalCase component name, e.g. CustomStatCard
- `description` (string, required): What the component should do
- `save` (boolean): Save as tenant component override if validation passes

### `get_agent_connect_config` (~57 tokens)

Returns ready-to-paste MCP configuration for Cursor, Claude Code, or Codex. Use on the Connect page or when setting up a new project.

Input parameters:

- `client` (string): Target agent client. Omit to get all configs.

### `deploy_prototype` (~70 tokens)

Register a prototype for sharing and get a share URL. Reviewers can leave inline comments via the Marmo overlay.

Input parameters:

- `deployUrl` (string): Deployed URL if already live
- `prototypeId` (string, required): Unique prototype identifier (slug)
- `title` (string): Human-readable prototype title

### `get_prototype_feedback` (~57 tokens)

Fetch inline comments from a shared prototype as structured data and Markdown. Pull into Cursor/Claude to iterate on feedback.

Input parameters:

- `includeResolved` (boolean)
- `prototypeId` (string, required): Prototype ID/slug to fetch feedback for

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/mahmoudilyan-marmo-ui/mcp#diagnostics

## Score history

- 2026-08-03: 65
- 2026-08-02: 65
- 2026-08-01: 64
- 2026-07-31: 64
- 2026-07-30: 63
- 2026-07-29: 63
- 2026-07-28: 62
- 2026-07-27: 61
- 2026-07-26: 61

## Links

- Remote endpoint: https://mcp.marmoui.com/mcp
- Repository: https://github.com/mahmoudilyan/marmoui
- Website: https://www.marmoui.com/
- Changelog RSS feed: https://verifymcp.io/servers/mahmoudilyan-marmo-ui/mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/mahmoudilyan-marmo-ui/mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/mahmoudilyan-marmo-ui/mcp
