所有節目›AI Engineer Europe 2026World's Fair 2026World's Fair 線上軌AI in HealthcareSoftware Factories
Building Interactive UIs in VS Code with MCP Apps在 YouTube 看這一場

AI Engineer Europe 2026 · 演講 · 2026-06-06 · 16 分

讓 MCP 工具在聊天室裡長出介面

Building Interactive UIs in VS Code with MCP Apps · Marlene Mhangami、Liam Hampton,GitHub

Marlene 與 Liam 先說明 MCP 與 MCP apps 的差別,再現場示範:用一個火焰圖 MCP app,在 VS Code 的聊天視窗裡直接看程式效能。

聊天框之外看原片 ↗

概要

  • MCP apps 解的是純文字回應Marlene 說早期 MCP 多半只回傳文字,所以大家才會用 ASCII art 和一堆 emoji 湊數。MCP apps 讓 server 的工具直接回傳可互動的元件,顯示在聊天裡。
  • 運作流程使用者送出 prompt,LLM 挑工具,server 回傳工具結果與一個 UI 資源的參照。Marlene 強調,去抓那份 HTML 的是 host(VS Code),不是 client(GitHub Copilot),然後 host 把它放進沙盒化的 iframe 裡渲染。
  • 適用情境Marlene 舉了資料探索(點 UI 比一直打字問更省力)和電商(讓使用者在聊天裡完成結帳,不必跳去瀏覽器),並提到 Shopify、Excalidraw、Figma 都在用。
  • 一個 MCP app 有三塊Liam 說明是工具、打包好的 HTML UI 資源,以及讓 host 與 server 認得「這筆資料有對應介面」的連結。前端用 React、Vue、Svelte 或純 JS 都可以。
  • 示範:火焰圖Liam 用 MCP server 對一支 Go 程式剖析五秒,結果以 React 寫的火焰圖顯示在 Copilot 的聊天視窗內,省掉反覆問模型「哪裡慢」的來回。
  • 為什麼用 iframeLiam 的說法是把應用關在聊天視窗裡,不讓它碰 VS Code 設定、API 或任何外部的東西。

原話

  • “MCP, of course, is an open protocol that standardizes how applications provide context to LLM.”

    Marlene:MCP 是一個開放協議,統一應用程式向 LLM 提供脈絡的方式

    ▶ 01:05
  • “server tools return rich interactive components that render directly in the chat”

    Marlene:讓 server 的工具回傳可互動的元件,直接顯示在聊天裡

    ▶ 04:19
  • “What we want is to keep the user inside the chat and then have them interact and have that experience there.”

    Marlene:我們要的是讓使用者留在聊天裡,在那裡完成互動

    ▶ 07:54
  • “The reason we're doing this in an iframe, or why the iframe, is the same reason that you put a hamster in a cage.”

    Liam:我們用 iframe 的理由,就跟把倉鼠關在籠子裡一樣

    ▶ 14:34
  • “You don't want this application to interact with your VS Code settings, any APIs, anything external, all of that kind of stuff.”

    Liam:你不想讓這個應用去碰 VS Code 設定、API 或任何外部的東西

    ▶ 14:49

延伸

  • Liam 提到 skill 中有「工具可見度」的設定:只給模型呼叫、模型與 app 都能呼叫,或只有 app 能呼叫,也就是決定誰能觸發這個工具。
  • Marlene 說電商結帳在 VS Code 裡不那麼適用,更像是其他聊天介面(例如 OpenAI)的情境。

章節

點時碼直接跳到原片的那一段。

  1. 開場與議程Marlene 與 Liam 自我介紹,兩人都在 Microsoft 與 GitHub 做開發者推廣,Liam 偏 VS Code 這邊。議程是 MCP、為什麼需要 MCP apps,最後是現場示範。
  2. MCP 是什麼Marlene 簡述 MCP 是讓應用程式把脈絡提供給 LLM 的開放協議,脈絡包括工具、prompt 與資源。
  3. Host、client、server三種角色:host 如 VS Code,client 與 server 維持一對一連線,server 是對外提供能力的輕量程式。這場的 client 用 GitHub Copilot。
  4. 挑 server 的安全提醒建議優先用 VS Code 或 GitHub 裡列出的 server,網路上隨便挑一個可能夾帶惡意內容。
  5. 純文字的限制早期 MCP 只回文字,要它畫 MCP 的示意圖只拿得到 ASCII art,README 才會滿是 emoji。
  6. MCP apps 登場server 的工具可回傳直接顯示在聊天裡的互動元件。Marlene 拿 Excalidraw 的 MCP server 對比:同一個問題,這次得到能拖動、能改文字的圖。
  7. 運作流程prompt、選工具、回傳 UI 資源參照、host 抓 HTML 放進沙盒 iframe,之後 app 還能反覆呼叫 server 更新資料。
  8. 使用情境資料探索時點圖表比一直打字提問輕鬆;電商則希望在聊天裡走完結帳,而不是拿到連結再跳去瀏覽器。
  9. 誰在用Marlene 提到 Shopify 重視在聊天裡維持品牌體驗,以及 Excalidraw 與 Figma 的用法。
  10. Liam 的做法與三個部分Liam 改寫 MCP 儲存庫上的一份 skill,用 GitHub Copilot CLI 產出多個 MCP app,並說明工具、資源、連結三塊。
  11. 火焰圖 server 與程式被剖析的是含 bubble sort 與 Fibonacci 的 Go 程式,MCP server 用 TypeScript 寫,負責跑程式、剖析五秒並把資料交給 React 前端。
  12. 在 Copilot 現場跑請 Copilot 剖析程式,它自己判斷要呼叫那個工具,火焰圖就出現在聊天視窗的 iframe 裡,並附上函式摘要。
  13. 流程回顧與 iframe以手繪圖重述流程,並說明用 iframe 是為了把 app 隔離在聊天視窗內。

名詞

MCP apps
讓 MCP server 的工具回傳可互動 UI,顯示在聊天裡,而非只回文字
MCP host
要向 MCP server 取資料的程式,這場是 VS Code
MCP client
與 server 維持一對一連線的一方,這場用的是 GitHub Copilot
MCP server
對外提供工具、prompt、資源等能力的輕量程式
UI resource
server 回傳的參照,指向它產生的 HTML,由 host 抓取並渲染
iframe
host 用來渲染 MCP app 的沙盒容器,與聊天視窗其餘部分隔離
Excalidraw
Marlene 舉的例子:它的 MCP server 用 MCP app 產生可拖動、可改文字的圖,常拿來畫架構圖(字幕拼成 Excalibur)
Shopify
Marlene 提到正在做 MCP apps 的公司,重點是維持品牌體驗與在聊天內結帳
flame graph
Liam 示範的圖,用來看程式的時間花在哪些函式
Go pprof
Go 內建的剖析工具,Liam 的 MCP server 以它取得資料
GitHub Copilot CLI
Liam 用來依 skill 產生多個 MCP app 的工具

相關影片 同屬「聊天框之外」