MCP Hub
Back to servers

mup

Requires Setup

MCP server that turns HTML MUP panels into interactive UI tools for LLMs.

Registry
Stars
3
Updated
Mar 21, 2026
Validated
Mar 23, 2026

Quick Install

npx -y mup-mcp-server

MUP — Model UI Protocol

GitHub Stars License: MIT

繁體中文

Bring interactive UI into LLM chat — so anyone can experience agentic AI, not just developers.

Demos


What is MUP?

A MUP is an interactive UI component that lives inside an LLM chat interface.

It bundles a visual interface with callable functions. The user operates it by clicking buttons; the LLM operates it through function calls. Both sides see each other's actions in real time.

The simplest MUP is a single .html file — no build step, no framework, no SDK.

Why?

Agentic AI is powerful, but today it's trapped behind text commands and developer tools. Most people never get to experience it.

MUP changes this. It puts clickable, visual UI right inside the chat — so anyone can use agentic capabilities without writing a single prompt.

Traditional ChatWith MUP
User interactionType text commandsClick buttons, drag sliders, see live visuals
Tool resultsHidden from user, only the LLM sees themVisible and interactive for both sides
Who can use itPower users who know the right promptsAnyone

Key Ideas

  • Shared functions. A function can be called by the LLM (as a tool) or triggered by the user (via UI). Both sides operate on the same state through the same code.
  • LLM as orchestrator. MUPs don't talk to each other. The LLM reads outputs and decides what to do next.
  • Just HTML. Write a manifest, register your functions, done. Ship a single file.

Docs

  • Spec — Protocol definition: manifest, functions, lifecycle, error handling
  • Design Philosophy — Why MUP is designed this way, and what we intentionally left out
  • Examples — Example MUPs with walkthroughs

Install

npm (recommended)

npm install -g mup-mcp-server

Or run directly:

npx mup-mcp-server --mups-dir ./my-mups

Also available on the MCP Server Registry.

From source

git clone https://github.com/Ricky610329/mup.git
cd mup/mup-mcp-server
npm install && npm run build

Getting Started

With Claude Code (recommended)

claude mcp add --transport stdio --scope user mup -- npx mup-mcp-server --mups-dir /path/to/mup/examples

Restart Claude Code. MUP panels are now available as tools — just ask Claude to use them. A browser window opens at http://localhost:3200 showing the MUP panel grid.

Try it:

  • "Draw a smiley face with pixel art"
  • "Create a presentation about MUP"
  • "Let's play chess"

With Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "mup": {
      "command": "npx",
      "args": ["mup-mcp-server", "--mups-dir", "/path/to/mup/examples"]
    }
  }
}

Standalone (with built-in chat)

For use without Claude — includes its own chat interface and supports multiple LLM providers.

cd mup/mup-agent
npm install
echo "ANTHROPIC_API_KEY=sk-ant-..." > .env
npm start

Supports Anthropic, OpenAI, Google, Groq, xAI. Opens at http://localhost:3100.

Built-in Examples

20 ready-to-use MUPs in examples/:

CategoryMUPDescription
basicCounterClick +/−, LLM sets value
basicDiceRoll with animation, history
basicTimerCountdown with progress ring
basicChessPlay chess against the LLM
creativePixel Art16×16 pixel canvas
creativeSlidesPresentation builder
dataChartBar, line, pie, doughnut, radar, scatter
mediaCameraLive camera + snapshot
mediaVoiceSpeech-to-text + text-to-speech
mediaDrum Machine4-track step sequencer
musicKeysPiano roll step sequencer (2 octaves, polyphonic)
musicBassBass step sequencer (C2–B2, monophonic)
musicChordsChord progression sequencer (8 slots, strumming)
musicStringsString pad sequencer (lush detuned oscillators)
musicSynthLead synth sequencer (waveform, filter, ADSR)
musicMixerMulti-track mixing console (volume, mute, solo)
musicArrangerSong structure arranger (sections, full arrangement)
productivitySticky NotesDraggable notes board
productivityKanbanTask board with drag-and-drop
productivityMarkdownLive Markdown editor with preview

Quick Example

<script type="application/mup-manifest">
{
  "name": "Counter",
  "description": "A counter. User clicks +/-, LLM can set or read the value.",
  "functions": [
    {
      "name": "setCount",
      "description": "Set the counter to a specific value",
      "inputSchema": {
        "type": "object",
        "properties": { "value": { "type": "number" } },
        "required": ["value"]
      }
    }
  ]
}
</script>

Drop this into a MUP-compatible host, and it works.

Architecture

┌──────────────────────────────────────────┐
│             MUP (.html file)             │
│        manifest + UI + functions         │
└──────────────────┬───────────────────────┘
                   │ loaded by
        ┌──────────┴──────────┐
        ▼                     ▼
┌──────────────┐    ┌──────────────────┐
│  MCP Server  │    │   mup-agent      │
│ (Claude Code │    │ (standalone with │
│  / Desktop)  │    │  built-in chat)  │
└──────┬───────┘    └────────┬─────────┘
       │ WebSocket           │ WebSocket
       ▼                     ▼
┌─────────────────────────────────────┐
│          Browser Panel              │
│  (MUP grid + workspace manager)    │
└─────────────────────────────────────┘

Star History

Star History Chart

License

MIT

Reviews

No reviews yet

Sign in to write a review