/claim #1301

Summary

Integrate MCP-UI support into Archestra platform — when MCP servers return tool results containing UIResource, the Chat UI renders them as rich interactive HTML in sandboxed iframes instead of showing raw JSON.

Changes

Shared Types (shared/mcp-ui.ts)

  • McpUiResource, McpUiMeta, McpUiMimeType types
  • extractMcpUiResourceUri() — extracts _meta.ui.resourceUri from tool output
  • extractInlineMcpUiResource() — extracts inline UIResource from MCP content arrays
  • 12 unit tests covering JSON/object parsing and edge cases

Frontend — Chat UI

  • McpUiRenderer component: sandboxed iframe (allow-scripts only) with auto-resize via postMessage, supports text/html, text/uri-list, and remote-dom MIME types
  • MessageTool modified: detects UIResource in tool results and renders via McpUiRenderer instead of raw ToolOutput`

MCP Gateway

No changes needed — tool results already pass through as-is, preserving _meta and resource content.

Vendor MCP-UI Wrappers (for catalog)

  • GitHub wrapper: list_repos, view_pull_request, search_issues — dark-themed HTML tables with repo stats, PR diffs, and label rendering
  • Weather wrapper: get_weather, get_forecast — gradient weather cards with mock data fallback for demos

Verification

  • ✅ 12/12 unit tests pass
  • ✅ TypeScript type-check clean
  • ✅ Biome lint clean (0 errors)
  • ✅ Backward compatible — existing tool output renders identically when no UIResource is present

Closes #1301

Claim

Total prize pool $900
Total paid $0
Status Pending
Submitted February 09, 2026
Last updated February 09, 2026

Contributors

MC

McCoy Chang

@mccoychang

100%

Sponsors

AR

Archestra

@archestra-ai

$900