Client Core
БесплатноНе проверенRenderer-agnostic in-iframe runtime for MCP Apps: the only postMessage JSON-RPC peer.
Описание
Renderer-agnostic in-iframe runtime for MCP Apps: the only postMessage JSON-RPC peer.
README
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
zodtool 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).
Установить Client Core в Claude Desktop, Claude Code, Cursor
unyly install client-coreСтавит в Claude Desktop, Claude Code, Cursor и VS Code — сам разбирается с npx, uvx и сборкой из исходников.
Впервые? Поставь CLI: curl -fsSL https://unyly.org/install | sh
Или настроить вручную
Выполни в терминале:
claude mcp add client-core -- npx -y @mcpapps/client-coreFAQ
Client Core MCP бесплатный?
Да, Client Core MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для Client Core?
Нет, Client Core работает без API-ключей и переменных окружения.
Client Core — hosted или self-hosted?
Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.
Как установить Client Core в Claude Desktop, Claude Code или Cursor?
Открой Client Core на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
LibreOffice Tools
Enables AI agents to read, write, and edit Office documents via LibreOffice with token-efficient design. Supports multiple formats including DOCX, XLSX, PPTX, a
автор: passerbyflutterdannote/figma-use
Full Figma control: create shapes, text, components, set styles, auto-layout, variables, export. 80+ tools.
автор: dannoteLogo.dev
Search and retrieve company logos by brand or domain. Customize size, format, and theme to match your design needs. Accelerate design, prototyping, and content
автор: NOVA-3951PIX4Dmatic
Enables GUI automation for controlling PIX4Dmatic on Windows through MCP. Supports launching, focusing, capturing screenshots, sending hotkeys, clicking UI elem
автор: jangjo123Compare Client Core with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории design
