Token导航 LogoToken导航

MCP Server · 运维云端

MCP Ui Template

一个集成UIResource的MCP服务器,用于简化小部件管理和提供MCP-UI兼容性。

未说明官方级别未说明来源级核验工具 0
TypeScript云端部署Docker

快速开始

公开资料没有提供安装命令,按仓库或官方文档接入。
作者 / 组织
pietrozullo
提供方
pietrozullo

工具数量

0

来源目录标注

资源数量

0

来源目录标注

提示词数量

0

来源目录标注

GitHub Star

0

仓库热度

收录来源

1 个

MCP World

选型结论

MCP Ui Template 属于运维云端类 MCP Server,公开资料标注 0 个工具,通过传输方式未标注接入,客户端适配情况以官方文档为准,没有现成的安装命令;接入前先确认权限范围。

分类

运维云端

传输方式

未说明

认证方式

无需认证

部署方式

公开资料未说明

安装与配置

公开目录没有给出安装命令,需要按仓库 README安装;下面按同类条目的通用流程说明。

公开命令不是通用的启动方式,拼不出可靠配置示例;请在客户端 MCP 配置里按官方文档填写 command 和 args。

上手步骤

  1. 1

    先确认运行方式

    公开资料没有标注传输方式,先看仓库 README,确认是本地进程还是远程地址。

  2. 2

    获取服务

    公开目录没有给出安装命令,按仓库 README里的步骤安装或获取服务。

  3. 3

    写入客户端配置

    在客户端的 MCP 配置里填启动命令和参数,保存后完全退出客户端再打开,让新配置生效。

  4. 4

    验证是否可用

    连接成功后客户端会列出 0 个工具,随便调一个只读工具确认能返回结果。

接入前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

公开资料仍需确认:安装命令

详细介绍

UI资源 MCP 服务器

一个集成了新UIResource的MCP服务器,用于简化小部件管理并确保MCP与UI的兼容性。

特点/特性

  • 🚀 UIResource 方法一种同时注册工具和资源的单一方法
  • 🎨 React 小部件使用React构建的交互式用户界面组件
  • 🔄 自动注册自动创建的工具和资源
  • 📦 感谢参数(或“参数的功劳”)小部件属性自动成为工具参数
  • 🌐 兼容MCP-UI与MCP-UI客户端完全兼容
  • 🛠️ TypeScript 支持完全的类型安全和IntelliSense(智能感知)功能

新特性:UIResource

这个(或:该) uiResource 该方法是一个强大的新功能,简化了小部件的注册过程:

// Old way: Manual registration of tool and resource
server.tool({
  /* tool config */
})
server.resource({
  /* resource config */
})

// New way: Single method does both!
server.uiResource({
  name: 'kanban-board',
  widget: 'kanban-board',
  title: 'Kanban Board',
  props: {
    initialTasks: { type: 'array', required: false },
    theme: { type: 'string', default: 'light' },
  },
})

这会自动创建:

  • 工具: kanban-board - 接受参数并返回UIResource
  • 资源: ui://widget/kanban-board - 使用默认值的静态访问

入门指南

发展

# Install dependencies
npm install

# Start development server with hot reloading
npm run dev

这将开始:

  • 端口3000上的MCP服务器
  • 小部件服务在 /mcp-use/widgets/*
  • 检查器用户界面(Inspector UI)在 /inspector

生产

# Build the server and widgets
npm run build

# Run the built server
npm start

基本用法

简单的小部件注册

import { createMCPServer } from 'mcp-use/server'

const server = createMCPServer('my-server', {
  version: '1.0.0',
  description: 'Server with UIResource widgets',
})

// Register a widget - creates both tool and resource
server.uiResource({
  name: 'my-widget',
  widget: 'my-widget',
  title: 'My Widget',
  description: 'An interactive widget',
})

server.listen(3000)

带有属性的小部件

server.uiResource({
  name: 'data-chart',
  widget: 'chart',
  title: 'Data Chart',
  description: 'Interactive data visualization',
  props: {
    data: {
      type: 'array',
      description: 'Data points to display',
      required: true,
    },
    chartType: {
      type: 'string',
      description: 'Type of chart (line/bar/pie)',
      default: 'line',
    },
    theme: {
      type: 'string',
      description: 'Visual theme',
      default: 'light',
    },
  },
  size: ['800px', '400px'], // Preferred iframe size
  annotations: {
    audience: ['user', 'assistant'],
    priority: 0.8,
  },
})

小部件开发

1. 创建您的小部件组件

// resources/my-widget.tsx
import React, { useState, useEffect } from 'react'
import { createRoot } from 'react-dom/client'

interface MyWidgetProps {
  initialData?: any
  theme?: 'light' | 'dark'
}

const MyWidget: React.FC = ({
  initialData = [],
  theme = 'light',
}) => {
  const [data, setData] = useState(initialData)

  // Load props from URL query parameters
  useEffect(() => {
    const params = new URLSearchParams(window.location.search)

    const dataParam = params.get('initialData')
    if (dataParam) {
      try {
        setData(JSON.parse(dataParam))
      } catch (e) {
        console.error('Error parsing data:', e)
      }
    }

    const themeParam = params.get('theme')
    if (themeParam) {
      // Apply theme
    }
  }, [])

  return 
{/* Your widget UI */}

}

// Mount the widget
const container = document.getElementById('widget-root')
if (container) {
  createRoot(container).render()
}

2. 向UIResource注册

// src/server.ts
server.uiResource({
  name: 'my-widget',
  widget: 'my-widget',
  title: 'My Custom Widget',
  description: 'A custom interactive widget',
  props: {
    initialData: {
      type: 'array',
      description: 'Initial data for the widget',
      required: false,
    },
    theme: {
      type: 'string',
      description: 'Widget theme',
      default: 'light',
    },
  },
  size: ['600px', '400px'],
})

其工作原理

工具注册

当你打电话时 uiResource,它会自动创建一个工具:

  • 名字: [widget-name]
  • 接受所有属性作为参数
  • 返回文本描述和UIResource对象

资源注册

同时创建一个资源:

  • URI(统一资源标识符): ui://widget/[widget-name]
  • 返回具有默认属性值的 UIResource
  • 可被MCP客户端发现

参数传递

工具参数自动:

  1. 转换为URL查询参数
  2. 复杂对象被转换为JSON字符串
  3. 通过iframe URL传递给小部件

高级示例

多个小部件

const widgets = [
  {
    name: 'todo-list',
    widget: 'todo-list',
    title: 'Todo List',
    props: {
      items: { type: 'array', default: [] },
    },
  },
  {
    name: 'calendar',
    widget: 'calendar',
    title: 'Calendar',
    props: {
      date: { type: 'string', required: false },
    },
  },
]

// Register all widgets
widgets.forEach((widget) => server.uiResource(widget))

混合注册

// UIResource for widgets
server.uiResource({
  name: 'dashboard',
  widget: 'dashboard',
  title: 'Analytics Dashboard',
})

// Traditional tool for actions
server.tool({
  name: 'calculate',
  description: 'Perform calculations',
  cb: async (params) => {
    /* ... */
  },
})

// Traditional resource for data
server.resource({
  name: 'config',
  uri: 'config://app',
  mimeType: 'application/json',
  readCallback: async () => {
    /* ... */
  },
})

API 参考文档

server.uiResource(definition)

参数
  • definition: UIResourceDefinition

- name: string - 资源标识符 - widget: string - 小部件目录名称 - title?: string - 人类可读的标题 - description?: string - 小部件描述 - props?: WidgetProps - 小部件属性配置 - size?: [string, string] - 推荐的iframe尺寸 - annotations?: ResourceAnnotations - 发现提示

WidgetProps(可译为“小部件属性”)

每个道具可以具有:

  • type: 'string' | 'number' | 'boolean' | 'object' | 'array'
  • required?: boolean - 是否需要道具
  • default?: any - 未提供时的默认值
  • description?: string - 属性描述

测试您的小工具

通过检查器用户界面

  1. 启动服务器: npm run dev
  2. 开放: http://localhost:3000/inspector
  3. 测试工具和资源

直接浏览器访问

访问: http://localhost:3000/mcp-use/widgets/[widget-name]

通过MCP客户端

// Call as tool
const result = await client.callTool('kanban-board', {
  initialTasks: [...],
  theme: 'dark'
})

// Access as resource
const resource = await client.readResource('ui://widget/kanban-board')

UIResource的优势

✅ 简化版API - 用一种方法代替两种 ✅ 自动布线 - 道具自动成为工具输入 ✅ 类型安全 - 完全支持TypeScript ✅ MCP-UI 兼容 - 与所有MCP-UI客户端兼容 ✅(勾选标记,通常表示正确、确认或已完成) DRY原则 - 不要重复创建UIResource ✅ 可发现的 - 工具和资源均已列出

故障排除

小部件未加载

  • 确保小部件存在 dist/resources/mcp-use/widgets/
  • 检查服务器控制台中的错误
  • 验证小部件是否已注册 uiResource()

未传递属性

  • 在浏览器开发者工具中检查URL参数
  • 确保属性名完全匹配
  • 复杂对象必须被转换为JSON字符串

类型错误

  • 导入类型: import type { UIResourceDefinition } from 'mcp-use/server'
  • 确保mcp-use已更新至最新版本

从旧模式向新模式的转变

如果你已有使用单独工具/资源的现有代码:

// Old pattern
server.tool({ name: 'show-widget' /* ... */ })
server.resource({ uri: 'ui://widget' /* ... */ })

// New pattern - replace both with:
server.uiResource({
  name: 'widget',
  widget: 'widget',
  // ... consolidated configuration
})

未来的改进/增强

即将推出:

  • 从文件系统中自动发现小部件
  • 小部件清单(widget.json)
  • 从TypeScript接口中提取属性
  • 构建时优化

了解更多

祝你小部件构建愉快! 🚀

工具与能力

工具数量

0

资源数量

0

提示词数量

0

能力标签

UI资源管理TypeScript本地部署React组件自动化注册MCP-UI兼容TypeScript支持

数量来自来源目录的标注,具体工具清单以官方文档为准。

典型使用场景

看服务状态

查询容器、日志和监控指标,定位异常。

执行部署变更

在权限范围内触发发布、回滚和环境切换。

核对资源用量

汇总用量,找出闲置和超额的部分。

选择建议

值得选的地方

  • 只提供 0 个工具,职责集中,接入后不容易误操作。
  • 公开说明写得比较完整,接入前能看清能力边界。

先想清楚的地方

  • 公开资料没有可直接复制的安装命令,第一次接入要自己找入口。
  • 公开摘要偏短,具体能力和限制要回到仓库确认。
  • 第三方目录整理,版本更新和行为细节以官方仓库为准。

更适合

  • 需要在运维云端场景里让模型直接调用外部能力的人。
  • 愿意照着官方文档一步步配环境的人。

不太适合

  • 希望一条命令就装好、不想看文档的人。
  • 需要厂商级 SLA 和技术支持的生产环境。

同类对比

5 个同类
MCP Server工具数传输方式安装命令收录来源最后核验
MCP Ui Template

MCP World · 本页

0未说明未标注1 个2026-05-17
Ui Tars Desktop 8a825770

MCP World

0stdio有1 个2026-05-17
Elie222 MCP

MCP World

0未说明未标注1 个2026-05-17
Arizeai Phoenix MCP

MCP World

0stdio有3 个2026-05-17
Unity MCP 87ee506e

MCP World

42HTTP有2 个2026-05-17

按同分类和工具数量挑出最接近的几条,字段以各自详情页为准。

常见问题

5 条

MCP Ui Template 怎么安装?

公开目录没有给出可以直接复制的安装命令,需要按仓库 README里的步骤安装;装好后写进客户端的 MCP 配置再重启。

MCP Ui Template 怎么在 Claude Desktop、Cursor 里配置?

它是传输方式未标注,客户端配置里要写启动命令和参数,运行环境是 未标注;保存后完全退出客户端再打开,配置才会生效。

MCP Ui Template 收费吗?

本站只整理公开资料,不代收费用,也没有标注具体价格。是否收费取决于服务本身和背后的接口额度,正式使用前按官方说明确认。

MCP Ui Template 需要 API Key 吗?

公开资料标注为无需认证,装好就能连;如果实际调用时报鉴权错误,按官方文档补上凭据。

MCP Ui Template 支持哪些客户端?

公开资料没有标注具体客户端;能配置本地 MCP 命令的客户端都能接,配置方式参照官方文档。

来源信息

继续浏览同类 MCP