兄弟们,OpenAI 这次动作挺大的。

2025 年 10 月,他们悄悄上线了 GPT Apps,Booking.com、Canva、Spotify 是首批合作伙伴。2025 年 12 月,ChatGPT App Directory 正式对外开放提交。

说白了就一件事:你写的应用,现在可以直接嵌在 ChatGPT 的对话窗口里跑,用户不用跳页面。

用户问"帮我找个北京的酒店",Booking.com 的订房界面直接出现在对话里。问"帮我改一下这个 PPT",Canva 直接内嵌打开。

800M+ ChatGPT 用户,分发渠道是真的大。


一、为啥纯文字交互不够用?

这个问题其实很直白:有些事情文字根本做不好。

你可以用文字描述一家酒店,但你没法让用户在文字里筛选价格、对比房型、直接下单。

GPT Apps 解决的就是这个问题 - 让 AI Agent 从"说话的"变成"能干活的"。

而且不只 OpenAI 在搞,Anthropic 的 MCP Apps(2026 年 1 月)解决的是同一个问题,只是跑在 Claude、VS Code、Goose 上。两个都基于 MCP 协议,本质是同一个方向:Agent 正在变成 App 平台,不只是聊天界面。


二、GPT Apps 底层怎么跑的?

架构不复杂,四个关键点:

1. UI 资源预声明 Widget HTML 在 MCP server manifest 里提前注册,OpenAI 在发布前审核,同时做缓存。不是运行时动态注入的,安全模型设计得很扎实。

2. 双层 iframe 隔离 ChatGPT 先跑一个沙箱外层 iframe,再在里面加载你的 UI。第三方代码和 ChatGPT 本体完全隔离。

3. window.openai 通信 API OpenAI 提供了一套干净的全局 API:

window.openai.toolInput      // 工具的输入参数
window.openai.toolOutput     // 工具的返回结果
window.openai.sendFollowUpMessage({ prompt })  // 给模型发消息
window.openai.callTool(name, args)             // 从 UI 触发工具调用

4. 状态持久化 这是 GPT Apps 目前比 MCP Apps 领先的一点:跨工具调用的状态(window.openai.widgetState)和跨 session 的状态(window.openai.widgetSessionId)都有 API 支持。


三、用 LeanMCP 搭一个 GPT App

GPT Apps 基于 MCP,所以你需要一个 MCP server 作为后端。LeanMCP 帮你处理生产环境的那些脏活累活 - 认证、可观测性、多租户,你只管写业务逻辑。

第一步:建项目

npm install -g @leanmcp/cli
npx @leanmcp/cli create my-gpt-app
cd my-gpt-app
npm install

第二步:定义工具

// mcp/hotel/index.ts
import { Tool, SchemaConstraint } from "@leanmcp/core";

class HotelSearchInput {
  @SchemaConstraint({ description: "要搜索的城市", minLength: 1 })
  city!: string;
}

export class HotelService {
  @Tool({
    description: "搜索酒店并返回可交互界面",
    inputClass: HotelSearchInput
  })
  async searchHotels(args: HotelSearchInput) {
    const hotels = await fetchHotels(args.city);

    // 返回数据,UI 资源在 server manifest 里单独注册
    // ChatGPT 拿到数据后渲染你的 widget HTML
    return {
      city: args.city,
      hotels: hotels,
      totalCount: hotels.length
    };
  }
}

@SchemaConstraint 直接在 TypeScript 类上写校验规则,不用手搓 JSON Schema。

第三步:启动 Server

// main.ts
import { createHTTPServer } from "@leanmcp/core";

await createHTTPServer({
  name: "my-gpt-app",
  version: "1.0.0",
  port: 8080,
  cors: true,
  logging: true,       // 工具调用、延迟、报错,全记
  autoDiscover: true   // 自动扫描 ./mcp 目录,不用手动注册
});

跑起来 http://localhost:8080/mcp 就能用了。

第四步:加认证

生产环境裸奔不行,@Authenticated 一个装饰器搞定:

import { AuthProvider, Authenticated } from "@leanmcp/auth";

// 支持 Cognito、Auth0、Supabase、Firebase
const authProvider = new AuthProvider('cognito', {
  region: process.env.AWS_REGION,
  userPoolId: process.env.COGNITO_USER_POOL_ID,
  clientId: process.env.COGNITO_CLIENT_ID
});
await authProvider.init();

// 整个 service 受保护
// token 从 _meta.authorization.token 自动验证,失败直接拒
@Authenticated(authProvider)
export class HotelService {
  @Tool({
    description: "搜索酒店 - 仅限认证用户",
    inputClass: HotelSearchInput
  })
  async searchHotels(args: HotelSearchInput) {
    // 走到这里说明 token 已经验过了,直接写业务逻辑
    return { hotels: await fetchHotels(args.city) };
  }
}

第五步:快速加新服务

leanmcp add booking
# 自动建 mcp/booking/index.ts(带样板代码)
# 自动在 main.ts 注册
# 直接开写

四、GPT Apps vs MCP Apps,开发者怎么选?

很多人问我这两个有啥区别,放张表:

GPT Apps MCP Apps 用 LeanMCP
支持平台 仅 ChatGPT Claude、ChatGPT、VS Code、Goose 两个都支持,一个 server
标准 私有(OpenAI 控制) 开放(SEP-1865) 全兼容
状态持久化 支持 暂不支持 Runtime 层处理
认证 不含 不含 @Authenticated 装饰器
可观测性 不含 不含 logging: true 一行
多租户 自己搞 自己搞 内置
类型安全 手动 手动 @SchemaConstraint 自动校验

最关键的一点:同一个 LeanMCP server 同时支持 GPT Apps 和 MCP Apps,不用维护两套代码。

GPT Apps 背后是 800M+ 用户,分发优势是真实的。但平台锁定也是真实的,OpenAI 一个政策变动你就被动。

MCP Apps 是开放标准,今天写的代码,明天可以跑在任何支持它的客户端上。

两个都要?一个 LeanMCP server 搞定,不用选。


五、生产环境那个坑

SDK 文档写得挺好,OpenAI 还提供了 Developer Mode 方便本地测试,上手确实快。

但"能跑起来"和"能扛住真实流量"是两回事。

ChatGPT Apps SDK 给了你 UI 层,没给你这些:

  • 多租户认证 - 怎么对每个用户单独做身份验证?
  • 用量追踪 - 谁在消耗你的 API 预算?
  • 密钥注入 - 怎么安全地按请求注入 API Key?
  • 审计日志 - 合规场景下,谁做了什么操作?
  • 可观测性 - 凌晨两点出问题,你怎么发现?

LeanMCP 就是专门填这个坑的。协议是协议,Runtime 是 Runtime。

可观测性一行搞定:

await createHTTPServer({
  name: "my-gpt-app",
  version: "1.0.0",
  logging: true   // 工具调用、延迟、错误、用户维度,全有
});

六、真实案例长啥样

2025 年 10 月首批上线的合作伙伴:

  • Booking.com - 酒店搜索、筛选、对比、下单,全在对话里跑,不跳页面
  • Canva - PPT 编辑直接内嵌在 ChatGPT 里,告别切 Tab
  • Figma - 设计稿 review 和反馈在对话上下文里完成
  • Spotify - 音乐发现和歌单管理变成对话式 UI
  • Zillow - 房产搜索和房源浏览嵌在对话里
  • Shopify - 商品目录、尺码选择、购物车流程全在 agent 对话里

这些公司背后都需要同一套东西:认证、可观测性、扩缩容、密钥管理。这就是 LeanMCP 在干的事。


七、提交 App Directory 要准备啥

OpenAI 的审核要求:

  • MCP 连接信息
  • 给审核人员的测试说明
  • 目录元数据(名字、描述、分类)
  • 国家/地区可用性设置
  • 隐私政策 - 必须有
  • 符合 OpenAI 使用政策

人工 + 自动双重审核。现在提交还早,先发优势是真实的,Directory 已经开放了。


快速开始

npm install -g @leanmcp/cli
npx @leanmcp/cli create my-gpt-app
cd my-gpt-app && npm start
# -> http://localhost:8080/mcp

在 ChatGPT Developer Mode 里测试,没问题了再正式提交。

有在搭 GPT Apps 的吗?踩过啥坑欢迎评论区聊。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐