documentation/docs/guides/interactive-chat/mcp-ui.md
import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; import GooseDesktopInstaller from '@site/src/components/GooseDesktopInstaller'; import CLIExtensionInstructions from '@site/src/components/CLIExtensionInstructions'; import { PanelLeft } from 'lucide-react';
Extensions built with MCP Apps or MCP-UI allow goose Desktop to provide interactive and engaging user experiences. Instead of reading text responses and typing prompts, you can interact with a graphical and clickable UI.
:::info MCP Apps is the official specification MCP Apps is now the official MCP specification for interactive UIs. MCP-UI extensions still work in goose, but MCP Apps is the recommended path for new extensions. :::
:::warning Experimental Features The features described in this topic are experimental and in active development. Behavior and support may change in future releases. :::
MCP Apps bring interactive interfaces to goose through the official MCP Apps specification. Depending on the extension, apps can be launched in standalone, sandboxed windows or embedded in your chat window.
Some MCP Apps can be launched in their own windows, allowing you to jump straight to the interface without sending messages to goose.
Apps in the sidebarLaunch to launch an app in a new window:::info Apps Extension
To see the Apps page in the sidebar, the Apps extension must be enabled from the Extensions page. You can also use it to create custom standalone apps.
:::
The Apps page displays custom HTML apps you created using the Apps extension, imported HTML apps, and apps from your enabled MCP Apps extensions. The app interface lets you click buttons, fill forms, or use other controls. Apps can call tools and read resources through MCP (if enabled through CORS), but cannot communicate with goose (e.g. via chat).
Import apps that were created with the Apps extension and shared with you.
Apps in the sidebarImport App, browse to the app's .html file on your file system, and click OpenSome MCP Apps render directly in your conversation when goose calls a tool that returns UI. The interactive interface appears inline with the chat, letting you make selections, fill forms, or trigger actions without leaving the conversation flow.
If needed, you can just ask goose whether the UI can be loaded in the chat window.
<div style={{ width: '100%', maxWidth: '800px', margin: '0 auto' }}> <video controls playsInline style={{ width: '100%', aspectRatio: '2876/2160', borderRadius: '8px' }} > <source src={require('@site/static/videos/plan-trip-demo.mp4').default} type="video/mp4" /> Your browser does not support the video tag. </video> </div>MCP-UI is an earlier specification for interactive UIs that renders content embedded in your chat. While MCP Apps is now the recommended approach, MCP-UI extensions continue to work in goose.
See how interactive responses work in goose. For this exercise, we'll add an extension that connects to MCP-UI Demos provided by Andrew Harvard.
<Tabs groupId="interface"> <TabItem value="ui" label="goose Desktop" default> <GooseDesktopInstaller extensionId="richdemo" extensionName="Rich Demo" description="Demo interactive extension" type="http" url="https://mcp-aharvard.netlify.app/mcp" /> </TabItem> <TabItem value="cli" label="goose CLI"> <CLIExtensionInstructions name="rich_demo" description="Demo interactive extension" type="http" url="https://mcp-aharvard.netlify.app/mcp" timeout={300} /> </TabItem> </Tabs>In goose Desktop, ask:
Help me select seats for my flightInstead of just text, you'll see an interactive response with:
Try out other demos:
Plan my next trip based on my moodWhat's the weather in Philadelphia?Add interactivity to your own extensions: