mcp by vercel-labs/json-render
npx skills add https://github.com/vercel-labs/json-render --skill mcp一个 MCP 应用集成,用于在 Claude、ChatGPT、Cursor、VS Code 及其他支持 MCP 的客户端内,将 json-render UI 作为交互式 MCP 应用提供。
import { createMcpApp } from "@json-render/mcp";
import { defineCatalog } from "@json-render/core";
import { schema } from "@json-render/react/schema";
import { shadcnComponentDefinitions } from "@json-render/shadcn/catalog";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import fs from "node:fs";
const catalog = defineCatalog(schema, {
components: { ...shadcnComponentDefinitions },
actions: {},
});
const server = createMcpApp({
name: "My App",
version: "1.0.0",
catalog,
html: fs.readFileSync("dist/index.html", "utf-8"),
});
await server.connect(new StdioServerTransport());
import { useJsonRenderApp } from "@json-render/mcp/app";
import { JSONUIProvider, Renderer } from "@json-render/react";
function McpAppView({ registry }) {
const { spec, loading, error } = useJsonRenderApp();
if (error) return <div>Error: {error.message}</div>;
if (!spec) return <div>Waiting...</div>;
return (
<JSONUIProvider registry={registry} initialState={spec.state ?? {}}>
<Renderer spec={spec} registry={registry} loading={loading} />
</JSONUIProvider>
);
}
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
createMcpApp() 创建一个 McpServer,该服务器注册一个 render-ui 工具和一个 ui:// HTML 资源。useJsonRenderApp() 通过 postMessage 连接到宿主并渲染规范。createMcpApp(options) - 主要入口点,创建一个完整的 MCP 服务器。registerJsonRenderTool(server, options) - 在现有服务器上注册一个 json-render 工具。registerJsonRenderResource(server, options) - 注册 UI 资源。@json-render/mcp/app)useJsonRenderApp(options?) - React 钩子,返回 { spec, loading, connected, error, callServerTool }。buildAppHtml(options) - 从打包的 JS/CSS 生成 HTML。使用 Vite + vite-plugin-singlefile 将 React 应用打包成一个独立的单 HTML 文件:
// vite.config.ts
import { defineConfig } from "vite";
import react from "@vitejs/plugin-react";
import { viteSingleFile } from "vite-plugin-singlefile";
export default defineConfig({
plugins: [react(), viteSingleFile()],
build: { outDir: "dist" },
});
.cursor/mcp.json){
"mcpServers": {
"my-app": {
"command": "npx",
"args": ["tsx", "server.ts", "--stdio"]
}
}
}
{
"mcpServers": {
"my-app": {
"command": "npx",
"args": ["tsx", "/path/to/server.ts", "--stdio"]
}
}
}
# 服务器端
npm install @json-render/mcp @json-render/core @modelcontextprotocol/sdk
# 客户端 (iframe)
npm install @json-render/react @json-render/shadcn react react-dom
# 构建工具
npm install -D vite @vitejs/plugin-react vite-plugin-singlefile
每周安装量
235
代码仓库
GitHub 星标数
13.3K
首次出现
2026年3月7日
安全审计
安装于
codex231
cursor230
gemini-cli228
kimi-cli228
github-copilot228
amp228
MCP Apps integration that serves json-render UIs as interactive MCP Apps inside Claude, ChatGPT, Cursor, VS Code, and other MCP-capable clients.
import { createMcpApp } from "@json-render/mcp";
import { defineCatalog } from "@json-render/core";
import { schema } from "@json-render/react/schema";
import { shadcnComponentDefinitions } from "@json-render/shadcn/catalog";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import fs from "node:fs";
const catalog = defineCatalog(schema, {
components: { ...shadcnComponentDefinitions },
actions: {},
});
const server = createMcpApp({
name: "My App",
version: "1.0.0",
catalog,
html: fs.readFileSync("dist/index.html", "utf-8"),
});
await server.connect(new StdioServerTransport());
import { useJsonRenderApp } from "@json-render/mcp/app";
import { JSONUIProvider, Renderer } from "@json-render/react";
function McpAppView({ registry }) {
const { spec, loading, error } = useJsonRenderApp();
if (error) return <div>Error: {error.message}</div>;
if (!spec) return <div>Waiting...</div>;
return (
<JSONUIProvider registry={registry} initialState={spec.state ?? {}}>
<Renderer spec={spec} registry={registry} loading={loading} />
</JSONUIProvider>
);
}
createMcpApp() creates an McpServer that registers a render-ui tool and a ui:// HTML resourceuseJsonRenderApp() connects to the host via postMessage and renders specscreateMcpApp(options) - main entry, creates a full MCP serverregisterJsonRenderTool(server, options) - register a json-render tool on an existing serverregisterJsonRenderResource(server, options) - register the UI resource@json-render/mcp/app)useJsonRenderApp(options?) - React hook, returns { spec, loading, connected, error, callServerTool }buildAppHtml(options) - generate HTML from bundled JS/CSSBundle the React app into a single self-contained HTML file using Vite + vite-plugin-singlefile:
// vite.config.ts
import { defineConfig } from "vite";
import react from "@vitejs/plugin-react";
import { viteSingleFile } from "vite-plugin-singlefile";
export default defineConfig({
plugins: [react(), viteSingleFile()],
build: { outDir: "dist" },
});
.cursor/mcp.json){
"mcpServers": {
"my-app": {
"command": "npx",
"args": ["tsx", "server.ts", "--stdio"]
}
}
}
{
"mcpServers": {
"my-app": {
"command": "npx",
"args": ["tsx", "/path/to/server.ts", "--stdio"]
}
}
}
# Server
npm install @json-render/mcp @json-render/core @modelcontextprotocol/sdk
# Client (iframe)
npm install @json-render/react @json-render/shadcn react react-dom
# Build tools
npm install -D vite @vitejs/plugin-react vite-plugin-singlefile
Weekly Installs
235
Repository
GitHub Stars
13.3K
First Seen
Mar 7, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykPass
Installed on
codex231
cursor230
gemini-cli228
kimi-cli228
github-copilot228
amp228
React 组合模式指南:Vercel 组件架构最佳实践,提升代码可维护性
106,200 周安装