Skip to content

OLS-2568: Mcp app interactive views#1468

Draft
onmete wants to merge 4 commits intoopenshift:mainfrom
onmete:mcp-app-interactive-views
Draft

OLS-2568: Mcp app interactive views#1468
onmete wants to merge 4 commits intoopenshift:mainfrom
onmete:mcp-app-interactive-views

Conversation

@onmete
Copy link
Contributor

@onmete onmete commented Feb 12, 2026

PR 2: MCPAppFrame component -- interactive iframe views for MCP tools

Depends on #1467

Note: Fallback HTML generators have already been removed. The component only supports the ext-apps SDK path.

Files:

  • [src/components/MCPAppFrame.tsx](src/components/MCPAppFrame.tsx) (new) -- ext-apps host:
    • JSON-RPC protocol (ui/initialize, ui/notifications/tool-input, ui/notifications/tool-result, tools/call, tools/list, notifications/size-changed)
    • Refresh, expand/collapse, minimize, close
    • Auto-resize (clamped 60-960px)
    • Theme support (dark/light)
  • [src/components/mcp-app-card.css](src/components/mcp-app-card.css) (new) -- card, expanded, minimized, iframe styles
  • [src/components/ResponseTools.tsx](src/components/ResponseTools.tsx) -- add MCPAppTool component + render MCPAppFrame for tools with uiResourceUri
  • [locales/en/plugin__lightspeed-console-plugin.json](locales/en/plugin__lightspeed-console-plugin.json) -- strings: Failed to load MCP App: ..., Failed to refresh data: ..., Interactive view from ..., Loading MCP App..., MCP App Error, MCP App: ..., Refresh, Restore

onmete and others added 4 commits February 12, 2026 10:10
Extend the Tool type with a 'truncated' status and optional MCP app
metadata fields (uiResourceUri, serverName, structuredContent). Wire
the streaming parser in Prompt.tsx to extract these fields from
tool_result events and dispatch them into the Redux store.

Co-authored-by: Cursor <cursoragent@cursor.com>
Tool labels in the chat are now color-coded: red for errors,
yellow for truncated output, blue for tools with an MCP App UI,
and grey (default) for standard tools.

Co-authored-by: Cursor <cursoragent@cursor.com>
Show all MCP tool fields in the tool detail modal: a metadata section
with color-coded status label, MCP server name, and UI resource URI,
plus a dedicated structured content section with formatted, copyable
JSON.

Co-authored-by: Cursor <cursoragent@cursor.com>
Render interactive MCP App iframes in the chat for tools that provide
a UI resource. The MCPAppFrame component acts as an ext-apps SDK host,
handling JSON-RPC over postMessage for initialization, tool calls,
tool results, and auto-resize. Supports refresh, expand/collapse,
minimize, close, and dark/light theme.

Co-authored-by: Cursor <cursoragent@cursor.com>
@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Feb 12, 2026
@openshift-ci-robot
Copy link

openshift-ci-robot commented Feb 12, 2026

@onmete: This pull request references OLS-2568 which is a valid jira issue.

Details

In response to this:

PR 2: MCPAppFrame component -- interactive iframe views for MCP tools

Depends on #1467

Note: Fallback HTML generators have already been removed. The component only supports the ext-apps SDK path.

Files:

  • [src/components/MCPAppFrame.tsx](src/components/MCPAppFrame.tsx) (new) -- ext-apps host:
  • JSON-RPC protocol (ui/initialize, ui/notifications/tool-input, ui/notifications/tool-result, tools/call, tools/list, notifications/size-changed)
  • Refresh, expand/collapse, minimize, close
  • Auto-resize (clamped 60-960px)
  • Theme support (dark/light)
  • [src/components/mcp-app-card.css](src/components/mcp-app-card.css) (new) -- card, expanded, minimized, iframe styles
  • [src/components/ResponseTools.tsx](src/components/ResponseTools.tsx) -- add MCPAppTool component + render MCPAppFrame for tools with uiResourceUri
  • [locales/en/plugin__lightspeed-console-plugin.json](locales/en/plugin__lightspeed-console-plugin.json) -- strings: Failed to load MCP App: ..., Failed to refresh data: ..., Interactive view from ..., Loading MCP App..., MCP App Error, MCP App: ..., Refresh, Restore

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@openshift-ci openshift-ci bot requested review from kyoto and syedriko February 12, 2026 09:19
@openshift-ci
Copy link

openshift-ci bot commented Feb 12, 2026

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign syedriko for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@openshift-ci
Copy link

openshift-ci bot commented Feb 12, 2026

@onmete: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/prow/security 5d8d8de link false /test security

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

@onmete onmete marked this pull request as draft February 12, 2026 10:00
@openshift-ci openshift-ci bot added the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Feb 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. jira/valid-reference Indicates that this PR references a valid Jira ticket of any type.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants