@mcpapps/vite-plugin-vue

Compile a Vue SFC into a self-contained ui:// HTML resource for an MCP App.
1,405
Install
npm install @mcpapps/vite-plugin-vue
Latest Version:0.1.4
License:MIT
Last Updated:Jul 8, 2026
Links: GitHub  ·  npm
Maintainer: rubenspeculis

@mcpapps

A less-opinionated, multi-renderer framework for building MCP Apps — interactive UIs returned from Model Context Protocol tools and rendered inside hosts like Claude, ChatGPT and VS Code.

It implements the MCP Apps / mcp-ui contract (a tool binds a ui:// HTML resource rendered in a sandboxed iframe, talking back over JSON-RPC postMessage), but unlike Skybridge it is deliberately unopinionated:

  • Server on Hono — runs on Node and Cloudflare Workers, not Express.
  • Pluggable renderer, chosen per app — author components in Vue or Flutter, both first-class.
  • End-to-end type safety from zod tool schemas: inferred typed hooks in Vue, generated typed Dart models for Flutter.
  • Full local dev — a host emulator, hot reload, and a public tunnel.

Documentation

Full documentation lives in docs/ — a Nuxt/Docus site deployed to Cloudflare Workers.

pnpm docs:dev      # run the docs site locally (http://localhost:7001)
pnpm docs:deploy   # build (SSG) + wrangler deploy

Packages

Package Responsibility
@mcpapps/protocol Pure types + constants for the MCP Apps / mcp-ui contract. Single source of truth.
@mcpapps/client-core The renderer-agnostic in-iframe runtime: the only postMessage JSON-RPC peer.
@mcpapps/server Hono-mountable MCP server: defineApp/defineTool, ui:// resource serving.
@mcpapps/vue Vue hooks (useToolResult/useCallTool/useTheme) + renderer adapter.
@mcpapps/vite-plugin-vue Compiles a .vue component into a self-contained ui:// HTML resource.
@mcpapps/flutter Compiles a Flutter Web app into a ui:// component (loader HTML + cached assets).
mcpapps_bridge (Dart) Dart↔host bridge (runMcpApp, McpApp.of(context)) over client-core via js_interop.
@mcpapps/dev Local host emulator + Cloudflare tunnel.
@mcpapps/cli @mcpapps/create scaffolder + the mcpapps CLI.
@mcpapps/typegen Generate typed Dart models from zod schemas (zod → JSON Schema → Dart).

The mcpapps CLI

Inside a project (with an mcpapps.config.ts):

mcpapps dev       # host emulator with live-reload (edit a component → it re-renders)
mcpapps serve     # MCP server over HTTP (add --stdio for the stdio transport)
mcpapps build     # compile components
mcpapps deploy    # compile + wrangler deploy

Live-reload re-renders the component on save and replays the last tool result, so edits appear instantly without losing state.

Renderers

Each app picks one renderer. Vue components are self-contained (tens of KB) and ideal for lightweight cards. Flutter components are richer but multi-megabyte (CanvasKit): the emulator can serve their asset bundle via iframe src, while deployed hosts usually receive one inlined HTML document (often rendered with srcdoc). Flutter is best for stateful/graphical UIs, and should use McpAutoSize for tall content plus callTool/McpAppHttpClient for backend calls from opaque-origin iframes. Both renderers consume the same host bridge, so the server, emulator, and protocol are identical across them.

Create a new app

pnpm create @mcpapps my-app                 # Vue (default)
pnpm create @mcpapps my-app --renderer flutter
cd my-app && pnpm install && pnpm dev

(or npm create @mcpapps@latest my-app). The scaffolder generates a complete project — a tool with zod schemas, a component, the Hono server, a Workers entry, and the dev emulator — wired and ready to run.

Quick start (this repo)

pnpm setup        # install + codegen
pnpm dev          # runs the Vue example emulator -> http://localhost:5179
pnpm check        # biome ci + typecheck + test (the CI gate)

To run the Flutter example (needs Flutter — auto-detected via FLUTTER_BIN, your PATH, or fvm) on http://localhost:5189:

pnpm dev:flutter   # alias for: pnpm --filter @mcpapps/example-weather-flutter start
pnpm dev:vue       # the Vue example explicitly (same as pnpm dev)

Status

Under active development. See docs / the plan for the milestone roadmap (M1 Vue vertical slice first, then real-host hardening, then the Flutter renderer).

Related Packages

@mcpapps/vue

Vue renderer for MCP Apps: useToolResult/useCallTool/useTheme hooks + renderer a...

1,274 0
vue-harvest-mcp

MCP server for AI-assisted Vue component extraction and design system analysis

1,114 0
@copilotkit/mcp-apps-renderer

Framework-agnostic MCP Apps host for CopilotKit - the app<->host protocol (ext-a...

531,951 38,219
@vizejs/musea-mcp-server

MCP server for building Vue.js design systems - component analysis, documentatio...

78,243 908
@primevue/mcp

Model Context Protocol (MCP) server for PrimeVue component library

76,898

Version History

Version Released License
0.1.4 MIT
0.1.3 MIT
0.1.2 MIT
0.1.1 MIT
0.1.0 MIT