Skip to content

feat(mcp): granular feature selection with plugin/MCP decoupling#442

Open
skoob13 wants to merge 5 commits into
mainfrom
fix/granular-mcp-feature-selection
Open

feat(mcp): granular feature selection with plugin/MCP decoupling#442
skoob13 wants to merge 5 commits into
mainfrom
fix/granular-mcp-feature-selection

Conversation

@skoob13
Copy link
Copy Markdown

@skoob13 skoob13 commented May 7, 2026

Problem

Pain points in the MCP install flow:

  1. Feature selection was too invasive. Every install pushed users through a 35-checkbox screen with everything pre-selected, so it was effectively pure friction — most users hit enter through it. The pre-selected default also created a footgun: pressing space on a feature you wanted toggled it off (since it was already on).
  2. Plugin install ignored feature choice. Claude Code and Codex went through plugin install paths only, which bundle their own MCP server with all features. So selecting "MCP without LLM analytics" silently installed the full plugin MCP anyway.
  3. The wizard's feature list had drifted from the MCP server's tool registry — prompts was gone server-side, and 6 newer features (web_analytics, signals, tracing, sdk_doctor, batch_exports, customer_analytics) weren't surfaced.
  4. The wizard was not installing the MCP server with selected scopes due to a bug in the code.

Recommended installation

Screenshot 2026-05-07 at 12 59 38 Screenshot 2026-05-07 at 12 59 36

Configurable installation

Screenshot 2026-05-07 at 12 59 44 Screenshot 2026-05-07 at 13 16 12

Changes

  • Tri-state confirmation replaces the yes/no prompt: Install with all features (recommended) / Customize features / No thanks. CLI --features flag still bypasses to the legacy yes/no path.
  • Customize picker now starts empty — toggling features on means actually selecting them, not deselecting from a pre-checked all-set.
  • Plugin and MCP install decoupled for Claude Code and Codex. addServer now calls claude mcp add --transport http … / codex mcp add … --url … --bearer-token-env-var … directly. Routing:
    • All features → plugin-capable clients get plugin (which bundles MCP); others get direct MCP config write.
    • Customize → every selected client gets MCP-only with the chosen features. Plugin install is skipped so the user's choice is actually respected.
  • Editor-pick screen adapts: when all features is chosen, message becomes Select editor to install and each editor shows whether it'll be installed as (plugin) or (MCP).
  • Done screen splits results into Plugin installed for: and MCP server installed for: sections so users see exactly what landed.
  • Claude Desktop registered in getSupportedClients. It's the only client still using the mcp-remote stdio wrapper since Claude Desktop has no native HTTP MCP support.
  • Feature list synced with the MCP server's tool-definitions*.json registry. Removed prompts; added web_analytics, customer_analytics, signals (Data & Analytics), sdk_doctor, visual_review, tracing (Development Tools), batch_exports (Data Management). 41 features total. Skipped feedback since the server marks it always_available.
  • Analyticsmcp complete event now carries mcp_features_selected: 'all' | string[] so we can see which features users actually opt into.
  • Refactor: extracted isAllFeaturesSelected helper from inside buildMCPUrl. URLs with all features selected omit the ?features= param entirely.

How did you test this code?

  • Full Jest suite: 586 passing, 3 skipped (pre-existing). New tests cover the analytics field, the new addServer / isServerInstalled paths for Codex, and the existing Claude Code plugin methods are unaffected.
  • Manual TUI walkthrough of pnpm try mcp add for the all, customize, and no thanks branches still owed before merge — including verification that claude mcp list / codex mcp list show the expected entry per mode.

Publish to changelog?

no

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 7, 2026

🧙 Wizard CI

Run the Wizard CI and test your changes against wizard-workbench example apps by replying with a GitHub comment using one of the following commands:

Test all apps:

  • /wizard-ci all

Test all apps in a directory:

  • /wizard-ci basic-integration
  • /wizard-ci misc
  • /wizard-ci revenue

Test an individual app:

  • /wizard-ci basic-integration/android
  • /wizard-ci basic-integration/angular
  • /wizard-ci basic-integration/astro
Show more apps
  • /wizard-ci basic-integration/django
  • /wizard-ci basic-integration/fastapi
  • /wizard-ci basic-integration/flask
  • /wizard-ci basic-integration/javascript-node
  • /wizard-ci basic-integration/javascript-web
  • /wizard-ci basic-integration/laravel
  • /wizard-ci basic-integration/next-js
  • /wizard-ci basic-integration/nuxt
  • /wizard-ci basic-integration/python
  • /wizard-ci basic-integration/rails
  • /wizard-ci basic-integration/react-native
  • /wizard-ci basic-integration/react-router
  • /wizard-ci basic-integration/sveltekit
  • /wizard-ci basic-integration/swift
  • /wizard-ci basic-integration/tanstack-router
  • /wizard-ci basic-integration/tanstack-start
  • /wizard-ci basic-integration/vue
  • /wizard-ci misc/quack-quack
  • /wizard-ci revenue/stripe

Results will be posted here when complete.

@skoob13 skoob13 requested a review from a team May 7, 2026 11:17
Copy link
Copy Markdown
Member

@VojtechBartos VojtechBartos left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for fixing the features passing 🤟

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants