把互联网装进智能体:FastMCP 作者用 Python 造 UI 的古怪实验
关联
这一集讲的是智能体时代一个很新的玩法:让用户直接和工具的界面打交道,而这一切界面居然可以完全用 Python 写出来。演讲者是 FastMCP 的作者——FastMCP 是目前最流行的构建 MCP 服务器的 Python 框架之一,他所在的公司是 Prefect。他自称要分享的是「我写过的最古怪的软件之一」。
【背景】演讲者为 Jeremiah Lowin,Prefect 创始人兼 CEO、FastMCP 框架作者。此身份信息来自世界知识,转写稿中未出现其姓名。
先搞懂 MCP Apps:绕过智能体的直连界面
要理解他做的东西,得先知道 MCP Apps 是什么。MCP(智能体调用外部工具的协议)里,典型流程是:用户向智能体提请求,智能体调用托管在 MCP 服务器上的某个工具,结果返回智能体的上下文窗口,再由智能体组织一段回复给用户。也就是说,用户和 MCP 服务器之间从来没有直接连接,一切都要「经过智能体的大脑」。
MCP Apps 是今年一月推出的协议扩展,改变的就是这一点:智能体调用工具后,工具返回的不再是一段发给智能体的文本,而是一套完整的 HTML、CSS、JavaScript——一个真正的 UI,直接呈现给用户。用户可以在界面上订餐厅、换机票座位、浏览会议日程,智能体促成了这一切,但交互是人与界面直接完成的。用演讲者的话说,这相当于「把互联网装进你的智能体」。
痛点:Python 工程师不会写前端
MCP Apps 出现后,作为 FastMCP 作者,他的第一反应是:怎么把这个能力交付给用户?麻烦在于,FastMCP 用户主要是 Python 工程师,而且多在企业里工作。要给他们交付前端和 UI,总不能「假装我们要用 Python 发布 React——那是行不通的」。
他认真想了这些用户到底需要什么,答案改变了整个方案的性质:他们不需要完全品牌化的消费级自定义 UI,他们的职责是在组织内共享和收集信息——做表格、收表单、分享图表。这个约束反而成了突破口。
于是有了开源项目 Prefab:一个「限定范围的 UI 构建框架」,专门用于通过智能体交付上述这类界面。它的核心思路是:不是从零构建前端,而是用一堆世界级的、设计精良的组件组合出前端——护栏就来自这里,用户不是在做任意的事情,而是把一个结构良好的前端交到他人面前。
Prefab 怎么用 Python 写 UI
具体做法上,Prefab 主要靠 Python 的上下文管理器(一种用缩进块组织代码的语法结构):把组件作为上下文管理器层层嵌套,UI 的结构就在代码里自然呈现出来。他做了一个有趣的类比:FastMCP 的核心创新可以简化为「用一个装饰器构建了整个 MCP 服务器」,那么对 Prefab 就可以说「用一个上下文管理器构建了整个 UI」。每个 UI 组件是一个可实例化、可参数化的类,渲染出来就是漂亮的现代风格组件;再配合响应式变量(Rx 类),可以在代码任意位置引用数据并在组件间绑定,自动编译成对应的 JavaScript 实现——客户端交互性全程不用手写一行 JS。
底层管道是:Python DSL 构建 UI 的声明式表示 → 序列化为 JSON 协议 → 由一个 React 应用渲染为真正的 MCP 应用。关键在中间那个 JSON:因为 UI 有了可序列化的表示,它可以由智能体生成、发给智能体、由人生成再让智能体修改——这一中间表示解锁了一切。Python DSL 反而是事后自然长出来的产物。
一个能说明成熟度的细节:Prefab 发布了约 130 到 140 个组件,而它的文档 100% 用 Prefab 自己渲染——文档里每个示例的 Python 代码都在被实时渲染,点击就能进 playground 改代码、实时看到 UI 更新。
在 MCP 服务器里的三种用法(由浅入深)
第一种:交互式工具。 通常 MCP 工具返回的结果只给智能体,用户完全摸不着。
用 Prefab 只需改一行:工具函数结尾不返回 Python 字典,而是返回一个 Prefab 组件(比如数据表)。FastMCP 会自动检测到、自动推断你要返回 MCP 应用,把 HTML/CSS/渲染器全套备好。
用户问「给我看看团队名录」,弹出的就是一个支持搜索、筛选、排序、分页的完整交互表格。旁边想再加个饼图?导入网格和饼图、用上下文管理器组合进去即可——「一行代码,一个显著的大变化」,复杂性保持增量式。
第二种:带后端的完整应用。 写一个类作为 FastMCP 应用,用 app.ui 装饰入口函数返回基础 UI,再用 app.tools 装饰后端方法——UI 里就能直接引用它们,比如一个按钮把表单数据写进数据库。
他特别点名了上传场景:因为只有智能体有权访问 MCP 服务器,很多人在服务器上建了上传工具,却忘了必须由智能体实际调用,结果干的活是「世界上最昂贵的复制粘贴」——你给智能体一兆字节的文本,它一个字符一个字符地重新打字进 MCP。MCP 应用让文件绕过智能体直接进服务器,Prefab 把它做成了一行代码的上传组件。
第三种:完全生成式 UI。 他向 Claude 说「开始流式输出你能想到的最有趣的 UI」,智能体把 UI 的协议表示流式传过来,系统实时修复、渲染已到达的部分——你甚至不需要自己定义 UI,只要把官方提供的能力共享给智能体,它就能给你造任何东西。
意外发现:流 Python 比流 JSON 省 70%
生成式 UI 跑起来后,他们发现原方案(智能体流式传 JSON)可以优化:UI 的 Python 表示比 JSON 表示小约 70%。于是现在改为直接把 Python 代码流式传输,在沙箱中执行、在服务器端转成 JSON 再渲染——在 token 效率、成本和延迟上都带来巨大收益。
Prefab 已完全内置进 FastMCP:装上可选组件、导入、返回,当天下午就能在自己的服务器上玩起来。文档在 prefab.prefect.io,完整库开源于 GitHub。
本集带走
- MCP Apps 改变了交互模型:工具结果不再进智能体上下文,而是以完整 HTML/CSS/JS 的形式直达用户,用户直接与界面交互;七月版协议还会让智能体也能操作这个界面(比如和它下棋)。
- 约束越窄,方案越美:不做通用前端框架、不做品牌化消费级 UI,只做表格/表单/图表这类组织内信息工具,Python 写 UI 才变得可行——「组合前端」而非「构建前端」。
- 可序列化的 UI 表示是一切的钥匙:UI 有了 JSON 中间表示,人和智能体就能互相生成、修改界面;生成式 UI 由此而来。
- 让智能体搬文件是最贵的复制粘贴:大文件上传应走 MCP 应用直连,别让智能体逐字符转述。
- 一个反直觉的工程发现:流式传输 Python 代码、在沙箱执行再转 JSON,比直接流 JSON 小约 70%,省 token 也降延迟。
我们不是在试图从零开始构建一个前端。我们是在试图用一堆世界级的、设计精良的组件来组合出一个前端。
We are not trying to build a frontend from scratch. We are trying to compose a frontend from a bunch of world-class, well-designed components.
—— Jeremiah Lowin · [06:10]
当我们约束这个问题,并记住我们是在组合一个 UI 而不是构建一个 UI 时,它就合理多了。
It makes a lot more sense when we constrain the problem and remember that we’re composing a UI rather than building it.
—— Jeremiah Lowin · [09:20]
这遵循了我们 Prefect 的很多软件都努力坚持的一个原则,那就是一行代码,一个显著的大变化。
So this follows a principle that we really try to hold in a lot of our software at Prefect, which is one line of code, one big noticeable change.
—— Jeremiah Lowin · [11:49]
却忘了智能体必须实际调用它,而最终你做的事情就是世界上最昂贵的复制粘贴操作。
Forget that the agent has to actually call it, and what you end up doing is the world’s most expensive copy-paste operation.
—— Jeremiah Lowin · [13:57]
我们最终发现,UI 的 Python 表示比 JSON 表示小大约 70%。
What we ended up discovering is that the Python representation of a UI is about 70% smaller than the JSON representation.
—— Jeremiah Lowin · [16:12]
顺着「智能体」挖下去
- Cloudflare 三人聊:让模型直接写代码,别再堆工具了同概念:MCP、智能体 (agent)、沙箱 (sandbox)
- Merge的”二次创业”:从SaaS集成到AI连接基础设施同概念:MCP、智能体 (agent)、沙箱 (sandbox)
- 三位 AI 智能体公司 CEO 圆桌:从 Copilot 到智能体,还要几年?同概念:MCP、智能体 (agent)、沙箱 (sandbox)
换个口味
- 一封邮件睡出一万七千美金:Every 的 Builder Pack 内幕同公司:Claude · 同概念:MCP、智能体 (agent)
- 黄仁勋:AI毁灭论是胡说八道,自由贸易让美国必赢同概念:智能体 (agent)、沙箱 (sandbox)
- AI失控了别慌,先盯紧漏洞数量爆炸同概念:智能体 (agent)、沙箱 (sandbox)
