Skip to content

Desktop deeplink parser for streamable_http extensions: Install link doesn't work and ignores header parameters  #3438

@dianed-square

Description

@dianed-square

Please explain the motivation behind the feature request.

Recent testing indicates there might be more issues with install links for streamable_http extensions -- not just handling the header parameters as originally reported. For example, this link appears to add the extension to the config as expected:

goose://extension?url=https%3A%2F%2Fmcp.neon.tech%2Fmcp&transport=streamable_http&id=neon&name=Neon&description=Manage%20Neon%20Postgres%20databases%2C%20projects%2C%20and%20branches

The transport arg is required to register it as streamable_http but should we also accept type=streamable_http to be consistent with the config type field?

Also, Goose says the Desktop app's deeplink parser fails to properly parse and apply custom headers for streamable_http extensions. While the transport parameter works, header parameters in the install link are ignored, causing extensions that require headers (e.g. for authentication) to fail initialization. This forces users to manually configure these extensions.

Describe the solution you'd like

  • Deeplinks with type=streamable_http should register the extension as the http type (currently only works with transport and defaults to sse, see /ui/desktop/src/components/settings/extensions/deeplink.ts)
  • Deeplinks for http types with header=name%3Dvalue parameters should populate the headers object in the extension config (I think populating the specified value is a stretch considering env arg behavior)
  • Extensions should initialize successfully when required headers are provided via deeplink

Describe alternatives you've considered
Desktop users can add custom extension for streamable servers using manual configuration steps.

Additional context
Goose says:

Root Cause Analysis Needed

The deeplink parser in ui/desktop/src/components/settings/extensions/deeplink.ts correctly handles transport but fails to process header parameters. Investigation needed for:

  • How multiple header parameters are extracted from the URL
  • How header values are URL-decoded (e.g., %3D → =)
  • How headers are applied to the streamable_http extension config
  • Whether the getStreamableHttpConfig function properly accepts headers

Acceptance Criteria

  • Fix deeplink parsing to extract and apply header=name%3Dvalue parameters

  • Extensions created from deeplinks should have correct headers in config

  • Extensions requiring headers (like GitHub MCP) should initialize successfully

  • Add/improve tests for deeplink parsing with headers

  • I have verified this does not duplicate an existing feature request -- though this is related to issue MCP - SSE/Streamable HTTP - Add support for request headers #2423

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