Using MCP Apps and MCP-UI
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.
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.
The features described in this topic are experimental and in active development. Behavior and support may change in future releases.
MCP Apps
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.
Launching Apps in Standalone Windows
Some MCP Apps can be launched in their own windows, allowing you to jump straight to the interface without sending messages to goose.
- Click the button in the top-left to open the sidebar
- Click
Appsin the sidebar - Browse your available MCP Apps
- Click
Launchto launch an app in a new window
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 an HTML App
Import apps that were created with the Apps extension and shared with you.
- Click the button in the top-left to open the sidebar
- Click
Appsin the sidebar - Click
Import App, browse to the app's.htmlfile on your file system, and clickOpen
Using Apps in Chat Windows
Some 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.
MCP-UI
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.
Try It Out
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.
- goose Desktop
- goose CLI
- Launch the installer
- Click
Yesto confirm the installation - Click the button in the top-left to open the sidebar
- Navigate to the chat
- Run the
configurecommand:
goose configure
- Choose to add a
Remote Extension (Streamable HTTP).
┌ goose-configure
│
◇ What would you like to configure?
│ Add Extension
│
◆ What type of extension would you like to add?
│ ○ Built-in Extension
│ ○ Command-line Extension
│ ● Remote Extension (Streamable HTTP) (Connect to a remote extension via MCP Streamable HTTP)
└
- Give your extension a name.
┌ goose-configure
│
◇ What would you like to configure?
│ Add Extension
│
◇ What type of extension would you like to add?
│ Remote Extension (Streamable HTTP)
│
◆ What would you like to call this extension?
│ rich_demo
└
- Enter the Streamable HTTP endpoint URI.
┌ goose-configure
│
◇ What would you like to configure?
│ Add Extension
│
◇ What type of extension would you like to add?
│ Remote Extension (Streamable HTTP)
│
◇ What would you like to call this extension?
│ rich_demo
│
◆ What is the Streamable HTTP endpoint URI?
│ https://mcp-aharvard.netlify.app/mcp
└
- Enter the number of seconds goose should wait for actions to complete before timing out. Default is
300seconds.
┌ goose-configure
│
◇ What would you like to configure?
│ Add Extension
│
◇ What type of extension would you like to add?
│ Remote Extension (Streamable HTTP)
│
◇ What would you like to call this extension?
│ rich_demo
│
◇ What is the Streamable HTTP endpoint URI?
│ https://mcp-aharvard.netlify.app/mcp
│
◆ Please set the timeout for this tool (in secs):
│ 300
└
- Enter a description for this extension.
┌ goose-configure
│
◇ What would you like to configure?
│ Add Extension
│
◇ What type of extension would you like to add?
│ Remote Extension (Streamable HTTP)
│
◇ What would you like to call this extension?
│ rich_demo
│
◇ What is the Streamable HTTP endpoint URI?
│ https://mcp-aharvard.netlify.app/mcp
│
◇ Please set the timeout for this tool (in secs):
│ 300
│
◆ Enter a description for this extension:
│ Demo interactive extension
└
- Choose
Nowhen asked to add custom headers.
┌ goose-configure
│
◇ What would you like to configure?
│ Add Extension
│
◇ What type of extension would you like to add?
│ Remote Extension (Streamable HTTP)
│
◇ What would you like to call this extension?
│ rich_demo
│
◇ What is the Streamable HTTP endpoint URI?
│ https://mcp-aharvard.netlify.app/mcp
│
◇ Please set the timeout for this tool (in secs):
│ 300
│
◇ Enter a description for this extension:
│ Demo interactive extension
│
◆ Would you like to add custom headers?
│ No
│
└ Added rich_demo extension
In goose Desktop, ask:
Help me select seats for my flight
Instead of just text, you'll see an interactive response with:
- A visual seat map with available and occupied seats
- Real-time, clickable selection capabilities
- A booking confirmation with flight details
Try out other demos:
Plan my next trip based on my moodWhat's the weather in Philadelphia?
For Extension Developers
Add interactivity to your own extensions:
- Building MCP Apps - Step-by-step tutorial (recommended)
- MCP Apps SDK and Specification
- MCP Apps SDK Guide