Skip to content

console: redesign connect modal as MCP-first connect drawer - #38163

Closed
leedqin wants to merge 3 commits into
mainfrom
connect-modal-redesign
Closed

console: redesign connect modal as MCP-first connect drawer#38163
leedqin wants to merge 3 commits into
mainfrom
connect-modal-redesign

Conversation

@leedqin

@leedqin leedqin commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Motivation

Implements the Improved Connect Modal Linear project (CNS-124, with CNS-125, CNS-126, CNS-127, CNS-128, CNS-129): make it easier for customers to get connection instructions through the console. Follows the design prototype at https://connect-modal-eight.vercel.app/.

What changes

The connect modal becomes a right-side drawer ("Connect to Materialize") with three method tabs:

  • MCP Server (default): numbered steps to pick a server (Developer for troubleshooting and observability, Agent for querying data products), connect a client, and optionally install agent skills. The client dropdown covers Claude Code, Cursor, Claude Desktop, VS Code, Windsurf, Codex CLI, and a generic option, each generating the right config format (CLI command, mcpServers JSON with the config file path, or TOML for Codex). Cursor and VS Code additionally get one-click install buttons via their cursor:// and vscode:mcp/install URL handlers. OAuth is the default flow where the environment supports it (existing 26.30.0 gate), with a "Use a token instead" toggle that injects a Basic auth header into the snippets. Install links are only generated for the OAuth flow so tokens never end up in URLs.
  • External tools: copyable Host, Port, Database, and User rows plus an inline create-app-password flow (name it, create it, copy it once). The created password is substituted into the DBeaver, dbt, and .env snippets below.
  • Terminal: the psql one-liner, preserving the existing user encoding, sslmode, and cluster option behavior.

The three previous modal variants (cloud ConnectModal, OidcConnectModal, PasswordConnectModal) and the unreferenced McpConnectModal are deleted and replaced by one ConnectDrawer driven by appConfig.mode, OIDC availability, and the environment gate. Self-managed OIDC surfaces the ID token as the password. Pure snippet and deep link builders live in connectOptions.ts.

The App Passwords page per-row Connect button opens the same drawer pinned to the service account user, with password creation hidden.

Deviations from the design mock

  • Snippets derive SSL from the deployment (cloud requires it, self-managed follows environmentdScheme) instead of hardcoding require.
  • The cloud token flow keeps the existing base64 app-password command and service account guidance from the old MCP instructions.
  • Self-managed OIDC gets an ID token password row, which the mock did not model.
  • The old modal's intro sentence with docs and support links is dropped per the design. Shout if it should come back.

Testing

  • New unit tests for all snippet builders and deep links (connectOptions.test.ts) and for drawer behavior across tabs, client switching, server switching, and app password creation with MSW (ConnectDrawer.test.tsx).
  • The dormant e2e helper connectRegionPostgres keeps working: the connect-menu-button test id, the "External tools" button name, and the Host, Port, and Database aria-labels are all preserved.

🤖 Generated with Claude Code

@leedqin leedqin added the A-CONSOLE Area: Console label Aug 11, 2026
leedqin and others added 2 commits August 17, 2026 13:12
Replaces the connect modal with a side drawer implementing the new
connect designs (Linear: Improved Connect Modal, CNS-124).

The drawer has three method tabs: MCP Server (default), External
tools, and Terminal. The MCP tab walks through choosing the Developer
or Agent server, connecting a client (Claude Code, Cursor, Claude
Desktop, VS Code, Windsurf, Codex CLI, or other) with per-client
config snippets and one-click install deep links for Cursor and
VS Code, and installing agent skills. The External tools tab shows
copyable connection details with inline app password creation and
DBeaver, dbt, and .env snippets. The Terminal tab shows the psql
command.

The three previous modal variants (cloud, self-managed OIDC,
self-managed password) and the unused McpConnectModal are replaced by
one ConnectDrawer driven by appConfig.mode, OIDC availability, and the
existing 26.30.0 OAuth environment gate.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Restructures the MCP tab into one step per concern: choose server,
select client, acquire a credential (token flow only), then the
client-specific install step titled by where the config goes. The
generated app password is substituted into the command directly,
shown masked, instead of a separate copy box. Removes the service
account note and the agent access scoping note. The OAuth sign-in
hint is now client-specific, one sentence per client in the registry.

External tools: connection detail boxes no longer overflow the drawer
width, the create button reads Create new password, the name input
starts empty with a placeholder and helper text so it reads as naming
rather than entering a password, and created passwords render masked
in the tool snippets while copying the real value.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@leedqin
leedqin force-pushed the connect-modal-redesign branch from 68ac230 to 42a3abc Compare August 17, 2026 17:23
Verifies each client's remote MCP config schema against its docs and
fixes the generated snippets. VS Code roots at "servers" with an
explicit "type": "http", otherwise it treats the entry as a stdio
command. Windsurf uses "serverUrl". Claude Desktop's config file only
launches local stdio servers, so the OAuth flow now shows the server
URL to add as a custom connector under Settings > Connectors, and the
token flow proxies through mcp-remote. The Codex sign-in hint now
names the actual command, codex mcp login <server>.
@leedqin

leedqin commented Aug 17, 2026

Copy link
Copy Markdown
Contributor Author

Superseded by #38257 (same branch, moved to a fork head).

@leedqin leedqin closed this Aug 17, 2026
@leedqin
leedqin deleted the connect-modal-redesign branch August 17, 2026 18:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-CONSOLE Area: Console

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant