Phase 2 of #1633 (Extensions capability UI + MCP Apps alignment). Depends on Phase 1's registry + client option. See #1633 for full analysis.
Goal
Add the advertised-extensions toggle — the core debugging knob of #1633. Users choose which extensions the Inspector advertises, and a server legitimately changes its tool registration in response.
Scope
- Add
advertisedExtensions? to InspectorServerSettings (core/mcp/types.ts:~614) — a Record<string, boolean> (or enabled-key string[]). Persist like paginatedLists / protocolEra: omit-when-default to keep the on-disk file diff minimal. Round-trip through the settings persist path.
- Render the toggles in
ServerSettingsForm.tsx — a group of Switches driven by the Phase-1 registry (each row: label + enabled state). A capability change needs a reconnect to take effect; surface that the same way the Protocol Era selector does.
- Wire the setting into the client option added in Phase 1 so a toggled extension actually reaches
capabilities.extensions.
- Test-server support: add or extend a
test-servers/ config whose tools/list changes based on a client-declared extension, so the acceptance criterion is exercised by a test rather than asserted. Add a test-servers/configs/*.json and note it in README/AGENTS if new.
Acceptance
- Toggling an advertised extension in Server Settings, then reconnecting, demonstrably changes the server's tool registration (proven against the test server).
- Setting persists and round-trips (omit-when-default).
- Unit tests:
ServerSettingsForm toggle rows, settings persist/round-trip, and the option→capabilities wiring. This PR must hold the ≥90% per-file gate on its own.
npm run format → npm run ci green.
Phase 2 of #1633 (Extensions capability UI + MCP Apps alignment). Depends on Phase 1's registry + client option. See #1633 for full analysis.
Goal
Add the advertised-extensions toggle — the core debugging knob of #1633. Users choose which extensions the Inspector advertises, and a server legitimately changes its tool registration in response.
Scope
advertisedExtensions?toInspectorServerSettings(core/mcp/types.ts:~614) — aRecord<string, boolean>(or enabled-keystring[]). Persist likepaginatedLists/protocolEra: omit-when-default to keep the on-disk file diff minimal. Round-trip through the settings persist path.ServerSettingsForm.tsx— a group ofSwitches driven by the Phase-1 registry (each row: label + enabled state). A capability change needs a reconnect to take effect; surface that the same way the Protocol Era selector does.capabilities.extensions.test-servers/config whosetools/listchanges based on a client-declared extension, so the acceptance criterion is exercised by a test rather than asserted. Add atest-servers/configs/*.jsonand note it in README/AGENTS if new.Acceptance
ServerSettingsFormtoggle rows, settings persist/round-trip, and the option→capabilities wiring. This PR must hold the ≥90% per-file gate on its own.npm run format→npm run cigreen.