Skip to content

Side Panels For Interactive Documents #412

@hodeware

Description

@hodeware

I'm building an MCP App server for Jspreadsheet that allows users to create and interact with spreadsheets within
Claude conversations. The workflow is:

  1. User asks Claude to create a spreadsheet
  2. User manually edits data in the rendered spreadsheet
  3. Spreadsheet sends updated state to Claude via updateModelContext
  4. User asks Claude to analyze the data ("what's the total?", "find trends", etc.)

The problem: When the spreadsheet renders inline in the conversation, it scrolls out of view as the chat continues.
Users lose sight of their data while reading Claude's analysis, making it impossible to cross-reference or verify
results. This significantly hurts usability for any interactive data tool.

Support for the pip (picture-in-picture) display mode defined in the MCP Apps specification (SEP-1865). This would allow MCP Apps to float in a side panel - similar to Claude's built-in artifacts - keeping them visible while users continue chatting.

My app already declares pip support in capabilities and requests it on initialization:
const mcpApp = new App(
{ name: "Jspreadsheet Pro", version: "1.0.0" },
{ availableDisplayModes: ["inline", "pip"] }
);

// After connect:
await mcpApp.requestDisplayMode({ mode: 'pip' });

But Claude.ai currently only supports inline mode (availableDisplayModes: ["inline"]).

We considered:

  • Re-rendering the spreadsheet: Have Claude call createSpreadsheet again when users ask to see it, but this creates duplicate UIs in the conversation

None of these provide a good user experience for interactive data tools.

Additional context

This limitation affects any MCP App that users need to reference while chatting - spreadsheets, charts, data
visualizations, interactive diagrams, etc. The pip mode in the spec was designed for exactly this use case.

Alternatively, allowing MCP Apps to use the same floating side panel as Claude's built-in artifacts would solve this
equally well.

Image

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions