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

MCP Widget

MCP Server

mcp-widget

一个CLI工具,用于快速启动支持ChatGPT小部件的MCP(Model Context Protocol)服务器,并提供完整的开发环境。

工具数

1

提示词数

0

GitHub Stars

1

资源数

0
命令行工具ChatGPT集成TypeScriptJavaScript

安装说明

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

作者 / 组织

perixtar

提供方

perixtar

最后核验

2026/5/17 20:22

运行时

Node.js

快速接入

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

命令预览

npx mcp-widget create my-app

详细介绍

MCP 小部件

🚀 命令行工具,用于初始化支持ChatGPT小部件的MCP(模型上下文协议)服务器。

](https://www.npmjs.com/package/mcp-widget) ![License: MIT](https://opensource.org/licenses/MIT)

在几秒钟内快速搭建一个带有小部件和完整开发环境的MCP服务器。

✨ 特点/功能

  • 🎯(目标、瞄准、决心等意,具体根据上下文而定) 交互式命令行界面 (CLI) - 指导项目设置并进行验证
  • ⚡ 闪电符号(在中文语境中,该符号通常直接以“⚡”表示,无需翻译,但若需解释,可称为“闪电符号”或“电光符号”) 多个框架 - 在Next.js和Vite之间选择
  • 🔧(扳手或工具的象征) 预配置的MCP服务器 - 现成可用的MCP协议实现
  • 🎨 表示绘画或艺术创作的符号。 小部件系统 - 基于React的小部件,支持热重载
  • 📦 翻译为中文是:📦(这个符号本身没有直接的中文翻译,它通常代表“包裹”或“箱子”的意思,在网络或日常交流中用作表情符号或简化的表示)。如果需要一个更具体的描述,可以是“包裹”或“箱子”。 完整的开发环境 - 开始构建所需的一切
  • 🧪 试管/实验器材(符号,常用于表示化学实验或科学实验) 准备测试 - 包含MCP Inspector集成
  • 🌐(这个符号本身没有直接对应的中文翻译,它通常代表“互联网”或“全球网络”的意象,可以简单理解为“网络”或“万维网”的象征。) ChatGPT集成 - 通过ngrok连接到ChatGPT进行端到端(E2E)测试
  • 📝(笔记或待办事项的符号) TypeScript 支持 - 对Next.js和Vite模板提供完整的TypeScript支持

🚀 快速入门

# Using npx (recommended)
npx mcp-widget create my-app

# Or install globally
npm install -g mcp-widget
mcp-widget create my-app

# Or use specific package manager
pnpm dlx mcp-widget create my-app
yarn dlx mcp-widget create my-app

📖 使用方法

交互模式

只需运行该命令并按照提示操作:

npx mcp-widget create my-app

你会被问到:

  1. 项目名称 - 必须为小写,仅包含字母数字和连字符
  2. 框架 - 在以下选项中选择:

- 快点 - TypeScript + React,具备快速热更新(HMR)功能 - Next.js - 使用TypeScript和App Router的全栈开发

非交互模式

对于脚本和自动化操作,您可以通过命令行参数指定所有选项:

# Create with specific template
npx mcp-widget create my-app --template vite
npx mcp-widget create my-app --template nextjs

# Use short flags
npx mcp-widget create my-app -t vite

# Skip all prompts with --yes flag (uses defaults)
npx mcp-widget create my-app --yes

# Combine options
npx mcp-widget create my-app -t nextjs -y

可用选项:

  • --template-t - 要使用的模板(vite 或者 nextjs)
  • --yes-y - 跳过交互式提示,使用默认值

示例:

# Interactive mode
npx mcp-widget create

# Mixed mode - name provided, prompt for template
npx mcp-widget create my-app

# Full non-interactive mode
npx mcp-widget create my-app -t nextjs

创造了什么?

您的新项目包括:

my-chatgpt-app/
├── src/
│   ├── server/
│   │   └── server.ts          # MCP server implementation
│   └── widgets/
│       └── hello-world/
│           └── index.tsx       # Example widget
├── scripts/
│   └── dev.js                  # Development server
├── package.json
├── tsconfig.json              # TypeScript configuration
├── tsconfig.node.json         # TypeScript config for Node.js
├── tsconfig.server.json       # TypeScript config for server
├── vite.config.js             # Widget build configuration
└── README.md                   # Project-specific documentation

🏗️ 项目模板

Vite 模板

非常适合快速原型制作和以小部件为中心的开发,全面支持TypeScript。

建筑:

  • 小部件开发服务器 (端口4450) - 使用Vite和HMR进行小部件开发
  • MCP 服务器 (端口 8000) - SSE(服务器发送事件)端点位于 /mcp
  • 预览服务器 (端口 5173) - 本地小部件预览用户界面

开始开发:

cd my-app
npm run dev

终点(或:结局指标):

  • 小部件预览:
  • MCP终端:
  • 小部件资源:

Next.js 模板

使用TypeScript和API路由构建的全栈应用程序。

建筑:

  • Next.js 应用 (端口3000) - 完整应用程序,包含API路由
  • MCP SSE 路线 - /api/mcp 用于MCP协议
  • MCP消息路由 - /api/mcp/messages 用于工具调用

开始开发:

cd my-app
npm run dev

终点(或:试验终点):

  • 应用:
  • MCP端点:

🛠️ 开发工作流程

1. 创建您的项目

npx mcp-widget create my-app
# Follow the prompts

2. 开始开发

cd your-project-name
npm install  # If dependencies weren't auto-installed
npm run dev

3. 使用MCP Inspector进行测试

# In a new terminal
npx @modelcontextprotocol/inspector http://localhost:8000/mcp

或者对于 Next.js:

npx @modelcontextprotocol/inspector http://localhost:3000/api/mcp

4. 连接至ChatGPT(可选)

使用 ngrok 通过 ChatGPT 测试您的 MCP 服务器:

# Install ngrok
brew install ngrok/ngrok/ngrok

# Start tunnel (while your app is running)
ngrok http 8000  # or 3000 for Next.js

# Use the HTTPS URL to create a Custom GPT in ChatGPT

完整指南:docs/CHATGPT_INTEGRATION.md

5. 为生产环境构建(或:准备生产版本)

npm run build

📚 MCP 协议

生成的项目实现了 模型上下文协议 与;带着;用;凭借

支持的功能

  • 工具 - 执行具有结构化输入/输出的功能
  • 资源 - 以正确的MIME类型提供HTML小部件
  • 资源模板 - 用于动态加载的小部件模板
  • ✅ 翻译成中文是:勾选/确认/正确 结构化内容 - 配备元数据的丰富响应

示例工具

“hello-world”工具展示了完整流程:

// Call the tool
{
  "name": "hello-world",
  "arguments": {
    "message": "Hello from ChatGPT!"
  }
}

// Returns
{
  "content": [
    { "type": "text", "text": "Hello World Tool called..." }
  ],
  "structuredContent": [
    {
      "type": "message",
      "message": "Hello from ChatGPT!",
      "timestamp": "2025-10-19T..."
    }
  ],
  "_meta": {
    "outputTemplate": "ui://widget/hello-world.html"
  }
}

🎨 小部件开发

小部件(Widgets)是React组件,它们可以:

  • 访问 window.openai.toolOutput 用于数据
  • 检测 window.openai.displayMode (明亮/黑暗)
  • 在开发过程中进行热重载
  • 构建为独立的HTML+JS文件

创建一个新的小部件

  1. 创建目录: src/widgets/my-widget/
  2. 添加 index.tsx
import React, { useState, useEffect } from "react";
import { createRoot } from "react-dom/client";

// Define types for tool output
interface ToolOutput {
  message?: string;
  [key: string]: any;
}

// Extend window interface
declare global {
  interface Window {
    openai?: {
      toolOutput?: ToolOutput;
      displayMode?: string;
    };
  }
}

function MyWidget() {
  const [data, setData] = useState(null);

  useEffect(() => {
    const output = window.openai?.toolOutput;
    if (output) {
      setData(output);
    }
  }, []);

  return 
My Custom Widget: {data?.message}
;
}

const root = createRoot(document.getElementById("root")!);
root.render();
  1. 在 MCP 服务器上注册(由 Vite 配置自动检测)
  2. 通过……访问 ui://widget/my-widget.html

🧪 测试

运行测试

npm test

手动测试

TESTING.md 翻译为中文是:“测试说明文件.md” 或 “测试指南.md”(具体翻译可能根据上下文有所调整,但“md”通常表示Markdown格式的文件,所以这里没有直接翻译“md”) 作为全面测试指南。

MCP 检查器

检查器是您测试时的最佳伙伴:

npx @modelcontextprotocol/inspector http://localhost:8000/mcp

验证:

  • ✅ 连接成功
  • ✅ 工具已列出
  • ✅ 资源可访问
  • ✅ 工具调用返回预期数据

📋 要求

  • Node.js 18+(推荐长期支持版)
  • npm 7+ / pnpm(一个包管理器,全称为Performance Packaged npm,意为高性能打包的npm) 8+ / 纱线 1.22+

🤝 贡献

欢迎贡献!请随时提交拉取请求。

  1. 为仓库创建分支
  2. 创建你的特性分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add amazing feature')
  4. 推送至分支(git push origin feature/amazing-feature)
  5. 提交一个拉取请求

📝 许可证

麻省理工学院 © \[您的姓名\]

🔗 链接

💡 示例

查看一下 examples/ 目录用于:

  • 自定义小部件示例
  • 高级MCP服务器模式
  • 与外部API的集成
  • 多小部件应用程序

🎯 路线图

  • \[ \] React Native 模板
  • \[ \] 支持Svelte/Vue小部件
  • \[ \] GraphQL 集成示例
  • \[ \] Docker 部署模板
  • \[ \] 单仓库模板
  • \[ \] 测试实用工具包

❓ 常见问题解答 (FAQ)

为什么选择SSE而不是其他传输方式?

当前模板使用SSE(服务器发送事件)进行MCP通信。虽然MCP SDK正在向StreamableHttp方向发展,但SSE简单且在开发中运行可靠。

我可以使用JavaScript而不是TypeScript吗?

现在,两个模板都默认使用TypeScript,通过类型安全性和IntelliSense提供更好的开发者体验。不过,您也可以轻松地通过重命名来使用JavaScript .ts/.tsx 文件至 .js/.jsx 并移除类型注解。

我如何添加身份验证?

参见以下认证示例 examples/auth/ (即将推出)。

我可以将这个部署到生产环境吗?

是的!请参阅部署指南中的 docs/DEPLOYMENT.md (即将推出)。

🙏 致谢

  • Anthropic的模型上下文协议
  • React 18 的 React 团队
  • Vite 团队,打造了令人惊叹的构建工具
  • Next.js 框架团队

______________________________________________________________________

快乐的建筑!(或根据语境可译为“幸福大厦!”)! 🚀(火箭或快速上升的箭头)

如果你觉得这个工具很有用,请给这个仓库⭐点赞!

  • Node.js 18及以上版本
  • pnpm(推荐)或 npm

许可证

麻省理工学院(MIT)

目录标签

目录标签

命令行工具ChatGPT集成TypeScriptJavaScriptCLI工具本地部署MCP协议React组件

接入字段

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

stdio

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

none

运行时(runtime,运行环境)

Node.js

来源包(packageName,安装包名)

mcp-widget

工具数量(toolCount,工具数)

1

资源数量(resourceCount,资源数)

0

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

0

权限和风险

stdionone部署方式未说明

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

安装前确认

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

来源信息

继续浏览同类 MCP