Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions documentation/docs/getting-started/using-extensions.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ goose operates autonomously by default. Combined with the Developer extension's

Platform extensions are built-in extensions that provide global features like conversation search, task tracking, and extension management. These extensions are always available and can be toggled on or off as needed.

- [Apps](/docs/mcp/apps-mcp): Create, manage, and launch custom HTML apps in standalone windows
- [Chat Recall](/docs/mcp/chatrecall-mcp): Search conversation content across all your session history
- [Code Execution](/docs/mcp/code-execution-mcp): Execute JavaScript code for tool discovery and tool calling
- [Extension Manager](/docs/mcp/extension-manager-mcp): Discover, enable, and disable extensions dynamically during sessions (enabled by default)
Expand Down
14 changes: 13 additions & 1 deletion documentation/docs/guides/interactive-chat/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ import VideoCarousel from '@site/src/components/VideoCarousel';
link="/docs/tutorials/building-mcp-apps"
/>
<Card
title="MCP-UI Extensions"
title="Using MCP Apps and MCP-UI"
description="goose transforms text-based responses into engaging graphical and interactive user experiences."
link="/docs/guides/interactive-chat/mcp-ui"
/>
Expand All @@ -48,6 +48,11 @@ import VideoCarousel from '@site/src/components/VideoCarousel';
<div className={styles.categorySection}>
<h2 className={styles.categoryTitle}>📝 Featured Blog Posts</h2>
<div className={styles.cardGrid}>
<Card
title="From MCP-UI to MCP Apps: Evolving Interactive Agent UIs"
description="A practical migration guide to MCP Apps: the 4 key changes, what broke, and why this shift matters."
link="/blog/2026/01/22/mcp-ui-to-mcp-apps"
/>
<Card
title="goose Lands MCP Apps"
description="goose ships early support for the draft MCP Apps specification, aligning with the emerging standard for interactive UIs."
Expand Down Expand Up @@ -87,6 +92,13 @@ import VideoCarousel from '@site/src/components/VideoCarousel';
<VideoCarousel
id="more-videos"
videos={[
{
type: 'iframe',
src: 'https://youtube.com/embed/QcojQ3Fwqsw',
title: 'What are MCP Apps?',
description: 'Why MCP Apps are different from MCP-UI and what makes them portable, secure, and standardized',
duration: '1:53'
},
{
type: 'iframe',
src: 'https://youtube.com/embed/Kxj-vFBO_9U',
Expand Down
48 changes: 45 additions & 3 deletions documentation/docs/guides/interactive-chat/mcp-ui.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,49 @@ import { PanelLeft } from 'lucide-react';

# Using MCP Apps and MCP-UI

Extensions built with MCP Apps or MCP-UI allow goose Desktop to provide interactive and engaging user experiences. Imagine using a graphical, clickable UI instead of reading text responses and typing all your prompts. These extensions return content that goose can render as embedded UI elements for rich, dynamic, and streamlined interactions.
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](/docs/tutorials/building-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

MCP Apps bring interactive interfaces to goose through the official [MCP Apps specification](https://github.com/modelcontextprotocol/ext-apps). 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.

1. Click the <PanelLeft className="inline" size={16} /> button in the top-left to open the sidebar
2. Click `Apps` in the sidebar
3. Browse your available MCP Apps
4. Click `Launch` to launch an app in a new window

:::info Apps Extension
To see the `Apps` page in the sidebar, the [Apps extension](/docs/mcp/apps-mcp) 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.

1. Click the <PanelLeft className="inline" size={16} /> button in the top-left to open the sidebar
2. Click `Apps` in the sidebar
3. Click `Import App`, browse to the app's `.html` file on your file system, and click `Open`

### 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.

<div style={{ width: '100%', maxWidth: '800px', margin: '0 auto' }}>
<video
controls
Expand All @@ -34,7 +71,11 @@ Extensions built with MCP Apps or MCP-UI allow goose Desktop to provide interact
</video>
</div>

## Try It Out
## 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](https://mcp-aharvard.netlify.app/) provided by Andrew Harvard.

Expand Down Expand Up @@ -78,4 +119,5 @@ Try out other demos:
Add interactivity to your own extensions:

- [Building MCP Apps](/docs/tutorials/building-mcp-apps) - Step-by-step tutorial (recommended)
- [MCP-UI Documentation](https://mcpui.dev/guide/introduction) - MCP-UI specification
- [MCP Apps SDK and Specification](https://modelcontextprotocol.github.io/ext-apps/api/)
- [MCP Apps SDK Guide](https://mcpui.dev/guide/introduction)
Comment thread
dianed-square marked this conversation as resolved.
2 changes: 1 addition & 1 deletion documentation/docs/guides/subagents.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -348,7 +348,7 @@ import agentCoordination from '@site/blog/2025-08-14-agent-coordination-patterns
title: 'Tutorial: Using Subagents',
description: 'Spin up a team of subagents to build a fully functional app',
thumbnailUrl: 'https://block.github.io/goose/assets/images/tutorial-using-subagents-ef265627024db73e73d80e5799ed0c1a.png',
linkUrl: '/docs/tutorials/subagents',
linkUrl: '/goose/docs/tutorials/subagents',
Comment thread
dianed-square marked this conversation as resolved.
date: '2026-01-27',
duration: '1 hour'
},
Expand Down
99 changes: 99 additions & 0 deletions documentation/docs/mcp/apps-mcp.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
---
title: Apps Extension
description: Create, manage, and launch custom HTML apps in standalone windows
---

import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import { PlatformExtensionNote } from '@site/src/components/PlatformExtensionNote';
import GooseBuiltinInstaller from '@site/src/components/GooseBuiltinInstaller';

The Apps extension lets you create, manage, and launch simple custom apps through chat. This feature is ideal for:
- Quick utilities and tools like calculators and converters
- Data visualizations like graphs and dashboards
- Simple games and interactive widgets

Custom apps are single-file HTML applications with JavaScript, CSS, and HTML (no external dependencies or npm packages). They're exposed as [MCP App resources](/docs/guides/interactive-chat/mcp-ui) that run in standalone, sandboxed windows that you can launch from the `Apps` page or by asking goose in chat.

You can create, modify, and delete apps through chat without needing to edit files directly. Behind the scenes, the Apps extension stores each app as an HTML file in:

- **macOS/Linux:** `~/.local/share/goose/apps/`
- **Windows:** `%APPDATA%\Block\goose\data\apps\`

## Configuration

<PlatformExtensionNote/>

<Tabs groupId="interface">
<TabItem value="ui" label="goose Desktop" default>
<GooseBuiltinInstaller
extensionName="Apps"
description="Create and manage custom goose apps through chat. Apps are HTML/CSS/JavaScript and run in sandboxed windows."
/>
</TabItem>
<TabItem value="cli" label="goose CLI">

1. Run the `configure` command:
```sh
goose configure
```

2. Choose to `Toggle Extensions`
```sh
┌ goose-configure
◇ What would you like to configure?
│ Toggle Extensions
◆ Enable extensions: (use "space" to toggle and "enter" to submit)
// highlight-start
│ ● apps
// highlight-end
└ Extension settings updated successfully
```
</TabItem>
</Tabs>

## Example Usage

Let's ask goose to create a utility app.

:::info LLM
Anthropic's Claude Sonnet 4.5 was used for this example.
:::

### goose Prompt

> _Create a JSON formatter app_

### goose Output

:::note Desktop
I'll create a JSON formatter app for you. This will be a useful tool for formatting, validating, and beautifying JSON data.

Perfect! I've created a JSON formatter app called "json-beautifier" that should have opened in a new window.

The app includes:

✅ **Input & Output Areas**: Split view with input on the left and formatted output on the right
✅ **Format Button**: Prettifies JSON with proper indentation
✅ **Minify Button**: Compresses JSON to a single line
✅ **Validate Button**: Checks JSON validity and shows errors
✅ **Copy Button**: Copies the formatted JSON to clipboard
✅ **Clear Button**: Resets everything
✅ **Syntax Highlighting**: Color-coded keys, strings, numbers, and booleans
✅ **Indentation Options**: Choose between 2 or 4 spaces
✅ **Error Display**: Clear error messages in red
✅ **Character/Line Count**: Shows statistics about your JSON
✅ **Dark Theme**: Modern, easy-on-the-eyes design

You can paste JSON into the left panel and use the buttons to format, minify, validate, or copy it. The app should be ready to use right away!
:::

### Results

Here's what the JSON formatter looks like:

[![JSON Formatter App](/img/apps-extension-results.png)](/img/apps-extension-results.png)

The first iteration of my app looks and works great, but you can just ask goose to add features, change the styling, and more!
2 changes: 1 addition & 1 deletion documentation/src/components/PlatformExtensionNote.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import Admonition from '@theme/Admonition';
export const PlatformExtensionNote = ({ defaultEnabled = true }) => {
return (
<Admonition type="info" title="Platform Extension">
<p>This is a <a href="/goose/docs/getting-started/using-extensions#built-in-platform-extensions">built-in platform extension</a>{defaultEnabled && " that's enabled by default"}. Platform extensions provide core functionality and are used within goose just like MCP server extensions.</p>
<p>This is a <a href="/goose/docs/getting-started/using-extensions#built-in-platform-extensions">built-in platform extension</a>{defaultEnabled && " that's enabled by default for new users"}. Platform extensions provide core functionality and are used within goose just like external MCP server extensions.</p>
Comment thread
dianed-square marked this conversation as resolved.
</Admonition>
);
};
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading