-
Notifications
You must be signed in to change notification settings - Fork 139
Description
I'm building an MCP App server for Jspreadsheet that allows users to create and interact with spreadsheets within
Claude conversations. The workflow is:
- User asks Claude to create a spreadsheet
- User manually edits data in the rendered spreadsheet
- Spreadsheet sends updated state to Claude via updateModelContext
- 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.
