Token导航 LogoToken导航TokenDH.com
Cloudflare Remix Vite MCP logo
AI代理未说明官方级别未说明来源级核验

Cloudflare Remix Vite MCP

MCP Server

该项目展示了如何在Cloudflare Workers上构建交互式MCP(Model Context Protocol)小工具,并嵌入到如ChatGPT等AI聊天界面中,结合现代Web技术创建丰富的状态化AI对话体验。

工具数

1

提示词数

0

GitHub Stars

45

资源数

0
Cloudflare WorkersTypeScriptAI代理

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

kentcdodds

提供方

kentcdodds

最后核验

2026/5/17 20:21

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

混音3 MCP演示

本项目演示了如何构建交互式MCP(模型上下文协议) 在Cloudflare Workers上运行并可嵌入AI聊天界面的小部件 比如ChatGPT。它展示了MCP与现代网络相结合的力量 在人工智能对话中创建丰富、有状态体验的技术。

演示视频

查看ChatGPT中的计算器小部件,包括隐藏的TRON 复活节彩蛋:

https://github.com/user-attachments/assets/5df110d8-f40b-4c6a-8820-c2dbf3ff79c8

在X/Twitter上观看演示

演示如何工作

架构概述

此演示实现了 计算器小部件 作为可调用的MCP工具 AI助手。该架构由几个关键组件组成:

  1. MCP服务器 -实现模型的Cloudflare持久对象

上下文协议

  1. 小部件系统 -使用Remix 3构建的交互式UI组件可以

嵌入AI聊天

  1. 双向通信 -小部件都可以从

人工智能并发回消息

  1. 静态资产 -Cloudflare CDN提供的小部件捆绑包

计算器小部件

该计算器是一款功能齐全、设计精美的计算器,具有 受Tron启发的复古未来主义美学。以下是它的特别之处:

初始状态配置

当AI助手调用计算器工具时,它可以传递初始状态 参数:

  • display -初始显示值
  • previousValue -已输入的值(例如,“我想将5加到

数字”)

  • operation -待处理的操作(+、-、\*、/)
  • waitingForNewValue -计算器是否已准备好进行新输入
  • errorState -是否在错误状态下启动

这意味着AI可以根据用户的请求预先配置计算器。 例如,如果用户说“我想给某个东西加5”,人工智能可以调用 计算器与 previousValue: 5, operation: '+',以及 waitingForNewValue: true.

交互式用户界面

计算器小部件是一个完全交互式的Remix应用程序,它:

  • 在JS样式中使用JSX/TSX和CSS渲染
  • 支持键盘快捷键(Enter、Escape、数字键、运算符等)
  • 具有Tron风格的初始化序列,带有动画加载消息
  • 用户与其交互时实时更新
  • 使用Remix 3的实验性DOM渲染器进行高效更新

复活节彩蛋:主控制程序

计算器中有一个隐藏的功能:当结果等于 1982 (the 原始Tron电影发行的年份),计算器发送MCP提示 向AI助手发送消息,指示其采用Master的角色 Tron的控制程序(MCP)。

这展示了小部件的能力 动态影响 对话 通过向AI发送消息。

技术实现

具有持久对象的MCP服务器

MathMCP 类扩展 McpAgent 并使用Cloudflare的持久对象 保持状态:

export class MathMCP extends McpAgent {
	server = new McpServer(
		{
			name: 'MathMCP',
			version: '1.0.0',
		},
		{
			instructions: `Use this server to solve math problems reliably and accurately.`,
		},
	)
	async init() {
		await registerTools(this)
		await registerWidgets(this)
	}
}

服务器注册了两种类型的功能:

  1. 工具 A. do_math 在服务器端执行算术运算的工具
  2. 小部件 -可以嵌入聊天中的交互式UI资源

小部件注册

小部件注册为MCP应用程序资源(用于HTML/JS捆绑包)和MCP 工具(用于调用)。注册包括:

  • 输入架构 -Zod模式定义了小部件接受的参数
  • 输出模式 -Zod模式定义了小部件可以返回什么
  • HTML捆绑包 -带有脚本引用的渲染HTML
  • MCP应用程序元数据 -标准 _meta.ui.resourceUri 和资源CSP

任何MCP Apps兼容主机的设置

registerAppResource(agent.server, name, uri, {
	description: widget.description,
	_meta: {
		ui: {
			csp: {
				connectDomains: [],
				resourceDomains: [baseUrl],
			},
		},
	},
}, async () => ({
	contents: [
		createUIResource({
			uri,
			encoding: 'text',
			content: {
				type: 'rawHtml',
				htmlString: await widget.getHtml(),
			},
		}).resource,
	],
}))

registerAppTool(agent.server, name, {
	title: widget.title,
	description: widget.description,
	inputSchema: widget.inputSchema,
	outputSchema: widget.outputSchema,
	_meta: {
		ui: { resourceUri: uri },
	},
}, handler)

单独构建过程

该项目使用两个单独的构建过程:

  1. 小部件构建 (Vite)-将计算器UI构建为独立的JavaScript

捆绑包

- 输入: worker/widgets/calculator/index.tsx - 输出: dist/public/widgets/calculator.js - 格式:捆绑了所有依赖项的ES模块

  1. 工人建设 (牧马人)-使用MCP服务器构建Cloudflare Worker

- 输入: worker/index.tsx - 输出:部署到Cloudflare的Worker捆绑包 - 包括:MCP协议处理程序、工具注册、小部件服务

通信协议

小部件使用 MCP应用程序JSON-RPC桥(ui/* 方法)通过 App 类别:

  • 初始化 -小部件调用 ui/initializeApp.connect()
  • 工具输入 -主机发送 ui/notifications/tool-input
  • 工具调用 -小部件调用 tools/call 通过 app.callServerTool()
  • 消息 -小部件发送 ui/message 通过 app.sendMessage()
  • 链接 -小部件请求 ui/open-link 通过 app.openLink()
const app = new App({ name: 'calculator-widget', version: '1.0.0' })
app.ontoolinput = ({ arguments: toolInput }) => {
	console.log('toolInput', toolInput)
}
await app.connect()

// Widget sends a prompt to the AI
await app.sendMessage({
	role: 'user',
	content: [{ type: 'text', text: MCP_PROMPT }],
})

用户体验

以下是用户在ChatGPT中与此MCP服务器交互时发生的情况:

  1. 用户问:“我能得到一个计算器吗?”
  2. ChatGPT调用 calculator 通过MCP工具
  3. 工具元数据通过以下方式链接到UI资源 _meta.ui.resourceUri
  4. ChatGPT获取 ui:// 资源,在iframe中呈现小部件,以及

通过发送工具输入 ui/notifications/tool-input

  1. 小部件加载后,显示Tron风格的初始化序列,然后显示

计算器

  1. 用户与计算器交互(点击按钮或使用键盘)
  2. 如果结果为1982,则小部件会向ChatGPT发送一个提示
  3. ChatGPT采用MCP角色并相应地做出响应

自己跑步

先决条件

  • Node.js(v18或更高版本)
  • npm或纱线
  • Cloudflare帐户(用于部署)

本地开发

  1. 克隆并安装
   npm install
  1. 启动开发服务器
   npm run dev

这同时运行两个进程:

- 手表模式下的小部件构建(Vite) - 拿着当地耐用物品的工人(牧马人)

  1. 测试计算器小部件

访问 http://localhost:8787/__dev/widgets 在中查看计算器小部件 隔离。

  1. 连接到MCP检查器

使用MCP检查器测试MCP服务器:

   npm run inspect

然后连接到 http://localhost:8787/mcp 在检查员。

部署

  1. 为生产而建
   npm run build
  1. 部署到Cloudflare
   npm run deploy
  1. 与ChatGPT一起使用

部署后,您可以通过提供以下内容将此MCP服务器添加到ChatGPT 部署URL+ /mcp 终点。

项目结构

├── worker/
│   ├── index.tsx              # Main worker entry point
│   ├── tools.ts               # MCP tool definitions (do_math)
│   ├── widgets.tsx            # Widget registration system
│   ├── utils.ts               # CORS and utility functions
│   └── widgets/
│       ├── utils.ts           # Widget communication utilities
│       └── calculator/
│           ├── index.tsx      # Calculator UI component
│           ├── calculator.ts  # Calculator business logic
│           └── mcp-prompt.ts  # The MCP easter egg prompt
├── dist/
│   └── public/
│       └── widgets/
│           └── calculator.js  # Built calculator bundle
├── vite.config.widgets.ts     # Vite config for widget builds
└── wrangler.jsonc             # Cloudflare Workers config

关键技术

平台

有状态的协调原语

人工智能服务通信

渲染器)

  • 维特 -小部件包的快速构建工具
  • 黄道带 -TypeScript第一模式验证

环境和配置

wrangler.jsonc 配置:

  • 持久对象绑定(MATH_MCP_OBJECT)
  • 服务小部件捆绑包的资产绑定
  • MCP SDK的Node.js兼容性
  • 生产监控的可观察性

开发技巧

  • 小工具开发:小部件代码的更改将自动热重新加载
  • 员工变动:Wrangler将在文件更改时重新启动worker
  • 类型安全:运行 npm run typecheck 验证TypeScript
  • 代码检查:运行 npm run lint 检查代码样式

学分

此演示展示了尖端的网络技术,包括实验性的Remix 3 功能、MCP小部件和Cloudflare的边缘计算平台。计算器 该设计以其独特的橙色光芒向Tron的美学致敬 复古未来主义风格。

目录标签

目录标签

Cloudflare WorkersTypeScriptAI代理AI聊天集成本地部署交互式小工具CloudflareWorkersMCP协议状态管理

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

none

部署方式(deploymentType,部署类型)

remote-capable

工具数量(toolCount,工具数)

1

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明noneremote-capable

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

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

仍需确认:installCommand

来源信息

继续浏览同类 MCP