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

MCP App Studio Starter

MCP Server

MCP App Studio Starter 是一个用于构建AI助手交互式应用的模板,支持多平台部署,包括ChatGPT、Claude Desktop等MCP兼容的AI助手。

工具数

0

提示词数

0

GitHub Stars

6

资源数

0
多平台支持TypeScriptClaudeClaude DesktopClaude

安装说明

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

作者 / 组织

assistant-ui

提供方

assistant-ui

最后核验

2026/5/17 20:20

快速接入

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

详细介绍

MCP应用程序工作室入门

用于为AI助手构建交互式应用程序的入门模板 MCP应用程序工作室.

注: 运行时会自动下载此模板 npx mcp-app-studio。您不需要直接克隆此仓库。

支持的平台

一次构建,随处部署:

  • ChatGPT --作为MCP Apps主机(标准 ui/* 桥梁)
  • 克劳德桌面版 --作为MCP Apps主机
  • 任何MCP应用程序主机 --与任何支持MCP的AI助手兼容

快速开始

# npm (default)
npm install
npm run dev

打开http://localhost:3002--你在工作台上。

此项目也适用于pnpm/yarn/bun(使用等效的install+run命令)。

如果您切换包管理器(例如。 pnpmnpm),删除 node_modules/ 首先是为了避免混淆安装程序。

MCP服务器(当 server/ 存在)运行于 http://localhost:3001/mcp 默认情况下。如果3001已在使用中,它将选择下一个可用端口并将其写入 server/.mcp-port.

工作台在iframe中模拟MCP Apps主机。它还安装了 window.openai 垫片,这样你就可以锻炼了 仅支持ChatGPT的扩展 在...期间 开发(可选,非标准)。

代理工作流

使用 .agent/skills/mcp-app-development/SKILL.md 作为此仓库的默认编码代理工作流。它定义了80/20能力切片循环:

  • 在一个块中构建UI和真正的MCP工具
  • 使用TDD(red -> green)用于奇偶校验
  • 切勿将仅模仿的行为视为已完成

命令

命令描述
npm run dev启动工作台(Next.js+MCP服务器)
npm run build生产建设
npm run export生成用于部署的小部件包

项目结构

app/                        Next.js pages
components/
├── examples/               Example widgets (POI Map)
├── workbench/              Workbench UI components
└── ui/                     Shared UI components
lib/
├── sdk/                    SDK exports for production
├── workbench/              React hooks + dev environment
└── export/                 Production bundler
server/                     MCP server (if included)

构建您的小部件

1.创建组件

// components/my-widget/index.tsx
import {
  useToolInput,
  useCallTool,
  useTheme,
  useCapabilities,
  useUpdateModelContext,
  useWidgetState,
} from "@/lib/sdk";

export function MyWidget() {
  const input = useToolInput();
  const callTool = useCallTool();
  const theme = useTheme();
  const capabilities = useCapabilities();
  const updateModelContext = useUpdateModelContext();
  const [widgetState, setWidgetState] = useWidgetState();

  const handleSearch = async () => {
    const result = await callTool("search", { query: input.query });
    console.log(result.structuredContent);
  };

  return (
    

      
Query: {input.query}

      Search

      {/* Platform-specific features */}
      {capabilities.modelContext && (
        
            updateModelContext({ structuredContent: { query: input.query } })
          }
        >
          Update model context (host-dependent)
        
      )}
      {capabilities.widgetState && (
        
            setWidgetState({
              ...(widgetState ?? {}),
              savedAt: Date.now(),
            })
          }
        >
          Save widget state (ChatGPT extensions)
        
      )}
    

  );
}

2.在工作台上注册

将您的组件添加到 lib/workbench/component-registry.tsx.

3.添加模拟数据

在中配置模拟工具响应 lib/workbench/mock-config/.

React Hooks参考

完整文档: lib/workbench/README.md

通用挂钩(推荐)

这些挂钩在MCP主机(包括ChatGPT)上的工作方式相同:

挂钩描述
useToolInput()从工具调用中获取输入参数
useTheme()获取当前主题(“亮”或“暗”)
useCallTool()调用后端工具
useDisplayMode()获取/设置显示模式
useSendMessage()向对话发送消息

平台检测(需要时)

挂钩描述
useCapabilities()获取完整功能对象
useFeature(name)检查特定功能是否可用

主机依赖/扩展(高级)

这些挂钩仅在特定平台上工作。先检查可用性:

挂钩平台描述
useWidgetState()ChatGPT扩展可选OpenAI/ChatGPT主机管理状态
useUpdateModelContext()依赖主机动态更新模型可见上下文
useToolInputPartial()主机相关生成过程中的流式输入
useLog()依赖主机结构化日志记录到主机
openModal() helperChatGPT扩展(回退安全)在可用时使用主机模式,在本地回退

useWidgetState() 不是标准的MCP Apps持久性原语。 对于便携式MCP应用程序,使用应用程序管理的持久性,如localStorage或 服务器支持的工具。

工具结果元数据(_meta)可通过以下方式获得 readToolResponseMetadata() 当主机暴露时 window.openai.toolResponseMetadata.

平台特定功能

MCP App Studio是MCP第一:更喜欢MCP Apps桥接器(ui/*)和特征检测 可选的ChatGPT扩展(window.openai)必要时。

功能MCP应用程序标准ChatGPT扩展(可选)
工具输入(别名: window.openai.toolInput)
工具结果(别名: window.openai.toolOutput)
工具结果元数据(_meta)是(别名: window.openai.toolResponseMetadata)
调用工具(别名: window.openai.callTool)
发送消息依赖主机(别名: window.openai.sendFollowUpMessage)
更新模型上下文依赖于主机(扩展名: window.openai.setWidgetState)
主机管理模式是(window.openai.requestModal)
小部件状态持久性是(OpenAI/ChatGPT主机管理状态)
文件上传/下载
打开应用内链接是(window.openai.setOpenInAppUrl)
即时结账是(window.openai.requestCheckout) *(私人测试版)*

使用 useCapabilities()useFeature() 以有条件地启用功能。

模态制导

  • 为了跨主机兼容性,更喜欢本地/小部件内模式。
  • 使用 window.openai.requestModal() 仅当您特别需要ChatGPT托管的模式模板时。
  • 始终进行功能检测并提供回退:
if (typeof window !== "undefined" && window.openai?.requestModal) {
  await window.openai.requestModal({ title: "Details", params: { id } });
} else {
  // Fallback: local modal state or route navigation
}

结账指南(ChatGPT测试版扩展)

  • window.openai.requestCheckout(...) 目前是ChatGPT私有测试版扩展。
  • 将结账视为可选:功能检测并提供回退(例如,外部结账)。
  • 如果你在ChatGPT菜单中暴露了一个伴随的深度链接,请使用 window.openai.setOpenInAppUrl({ href }).
import { requestCheckout, setOpenInAppUrl } from "@/lib/sdk";

setOpenInAppUrl("https://your-app.com/orders/123");

const outcome = await requestCheckout(
  { id: "checkout_123", payment_mode: "test" },
  () => window.open("https://your-app.com/checkout/123", "_blank"),
);

if (outcome.mode === "fallback") {
  // Non-ChatGPT host or checkout beta unavailable.
}

出口用于生产

npm run export

默认值为 --entry--export-name 从以下内容读取 mcp-app-studio.config.json (在构建项目时由CLI编写)。您可以通过标志覆盖它们。

生成:

export/
├── widget/
│   └── index.html      Self-contained widget
├── manifest.json       App manifest
└── README.md           Deployment instructions

导出的小部件使用 mcp-app-studio SDK自动检测主机平台并使用适当的网桥。

MCP元数据默认值(导出)

  • ui.* 元数据在导出的服务器代码中是规范的。
  • 导出的MCP元数据不支持来自旧ChatGPT应用程序集成的旧元数据密钥。
  • 可见性默认为主机默认值(["model","app"])当没有设置可见性键时。
  • 小部件资源以MCP Apps MIME类型发出 text/html;profile=mcp-app.

小部件资源CSP必须使用MCP标准密钥:

ui: {
  csp: {
    connectDomains: ["https://api.example.com"],
    resourceDomains: ["https://cdn.example.com"],
    frameDomains: ["https://www.youtube.com"],
    baseUriDomains: ["https://cdn.example.com"],
  },
}

部署

小部件

部署 export/widget/ 对于任何静态主机:

# Vercel
cd export/widget && vercel deploy

# Netlify
netlify deploy --dir=export/widget

# Or any static host (S3, Cloudflare Pages, etc.)

MCP服务器

如果你有 server/ 目录:

cd server
npm run build
# Deploy to Vercel, Railway, Fly.io, etc.

在平台注册

对于ChatGPT:

  1. 更新 manifest.json 使用您部署的小部件URL
  2. 首选 ChatGPT应用仪表板
  3. 创建新应用程序并连接您的MCP服务器
  4. 在新的ChatGPT对话中进行测试

对于Claude Desktop:

  1. 在Claude Desktop设置中配置MCP服务器
  2. 当调用带有UI的工具时,小部件将呈现

配置

SDK指南(可选)

工作台包括一个AI驱动的SDK指南。要启用:

cp .env.example .env.local
# then set:
# OPENAI_API_KEY="your-key"

MCP服务器CORS

对于生产,将CORS限制在您的小部件域中:

cp server/.env.example server/.env
# then set:
# CORS_ORIGIN=https://your-widget-domain.com

深色模式

导出的小部件继承主机主题和令牌变量。遵循中的框架无关契约 lib/workbench/THEMING_CONTRACT.md.

至少,支持 data-theme / .dark 以及语义标记:

.my-element {
  background: var(--background);
  color: var(--foreground);
  border-color: var(--border);
}

了解更多

目录标签

目录标签

多平台支持TypeScriptClaudeAI助手本地部署应用开发MCP协议交互式应用

支持客户端

Claude DesktopClaude

接入字段

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

未说明

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

none

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

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

0

权限和风险

未说明none部署方式未说明

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

安装前确认

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

仍需确认:installCommand

来源信息

继续浏览同类 MCP