Skip to content

[v1.0][catalog-mcp] catalogs/mcp/v1/catalog.json omits 'height' property on McpApp despite SandboxedFrameElement reading frameHeightFromProp #3433

Closed

Description

@josemontespg

Summary

In catalogs/mcp/v1/catalog.json, the McpApp component schema sets "unevaluatedProperties": false and defines resourceUri, htmlContent, serverConfig, title, allowedTools, allowedFunctions, and data (lines 23–87), but omits height.

Meanwhile, SandboxedFrameElement in typescript/catalogs/shared/sandbox/sandboxed_frame_element.ts (line 29, frameHeightFromProp) and the Lit/Angular McpApp implementations expect an optional height property on the component to set the initial iframe height before dynamic ui/notifications/size-changed notifications arrive.

Affected Component / Files

  • Repository commit: e9dbcc3 (main)
  • File path(s):
    • catalogs/mcp/v1/catalog.json (lines 17–95)
    • typescript/catalogs/shared/sandbox/sandboxed_frame_element.ts (lines 28–34, 71–77)

Steps to Reproduce / Evidence

  1. Inspect catalogs/mcp/v1/catalog.json (components.McpApp):
    • "unevaluatedProperties": false is set on line 88.
    • properties only lists component, resourceUri, htmlContent, serverConfig, title, allowedTools, allowedFunctions, and data.
  2. Validate an McpApp component containing "height": 360:
    {
      "id": "kitchen_converter_app",
      "component": "McpApp",
      "title": "Kitchen Converter",
      "height": 360,
      "htmlContent": "<div>...</div>"
    }
    Strict JSON Schema validation against catalogs/mcp/v1/catalog.json fails because height is an unevaluated property.

Expected Behavior

catalogs/mcp/v1/catalog.json should declare an optional height property (number or string) on McpApp.properties matching SandboxedFrameElement.frameHeightFromProp.

Actual Behavior

height is rejected by catalogs/mcp/v1/catalog.json due to "unevaluatedProperties": false.

Suggested Fix

Add "height" ({ "type": ["number", "string"], "description": "Optional initial height of the sandboxed iframe in pixels." }) to components.McpApp.properties in catalogs/mcp/v1/catalog.json.

Activity

  1. added
    status: needs-triageauto-managed: https://github.com/a2ui-project/a2ui/blob/main/scripts/triage.mjs
    on Oct 22, 2026
  2. josemontespg commented on Oct 23, 2026

    @josemontespg
    CollaboratorAuthor

    Closing as by design: SandboxedFrameElement is shared between @a2ui/catalog-iframe (WebAppFrameSrcdoc / WebAppFrameUrl, which accept a height property and use frameHeightFromProp) and @a2ui/catalog-mcp (McpApp). Per the MCP Apps specification and catalogs/mcp/v1/mcp_app_specification.md, McpApp intentionally has no height property because MCP apps dynamically negotiate their dimensions via ui/notifications/size-changed (with the initial default height controlled by the --a2ui-sandboxed-frame-height CSS custom property, as documented in PR #2799 and PR #2803).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    status: needs-triageauto-managed: https://github.com/a2ui-project/a2ui/blob/main/scripts/triage.mjsv1-bug-bash

    Type

    No type

    Projects

    • Status
      Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions