Repository navigation
[FEATURE]: MCP manager - a schema-aware MCP config editor surface #58654
Description
- I have verified this feature I'm about to request hasn't been suggested before.
Describe the enhancement you want to request
There is no surface that can view, edit, validate or manage MCP entries: the CLI offers
mcp list/add/auth/logout, /mcps toggles connection state, and everything else is raw
JSON(C) editing in one of several config locations.
Request: an MCP config editor (TUI panel and/or desktop/web) that can add, remove and edit
entries with the right shape per type -
-
local:
command,args,env,cwd,timeout,protocol -
remote:
url,headers,oauth,disabled -
validating against the official schema (the current
mcp.servers.<name>shape; the
deprecated flatmcp.<name>still accepted), and writing through the placeholder-prompt +
credential-store flow requested in the sibling issue. Showing which config document each
server came from (global vs project) is part of the ask.
Why is this needed?
Measured friction from one week on this machine (v2.1.4, Windows 11):
- validating a hand edit to the JSONC global config meant stripping comments in a throwaway script and re-parsing it;
- the deprecated-flat vs current
mcp.serverssplit was discoverable only by reading the ~2.6k-line official schema; - a mistyped Authorization header surfaced only at connect time as
HTTP 400 Authorization header is badly formatted; - there is no place to see the merged result of the global config plus a project config, which is exactly what the Windows-service confusion in mcp: Windows service registers zero MCP servers from global config #50710 is about;
- and the v2 web/desktop permission prompt still shows only
*for the asked tool (v2 web/desktop: MCP permission prompt shows only*, not the tool name #51519), so least-privilege grants cannot even be expressed in the UI.
Related issues
- [FEATURE]: MCP manager UX - per-server output links (web panel URLs), placeholder prompts with secure secret storage, a full config editor, and richer ask/mention inputs #58243 (parent feature request)
- v2 web/desktop: MCP permission prompt shows only
*, not the tool name #51519 (MCP permission prompt shows only*) - mcp: Windows service registers zero MCP servers from global config #50710 (global-config servers not registered by the Windows service)
- feat(cli): add MCP server removal #56086 (CLI support for removing MCP servers)
Additional context
- opencode v2.1.4, Windows 11, PowerShell; official schema and MCP reference re-read 2026-10-24.
- Split out of [FEATURE]: MCP manager UX - per-server output links (web panel URLs), placeholder prompts with secure secret storage, a full config editor, and richer ask/mention inputs #58243 (item 3) following the triage bot's mapping.
Activity
opencode-agent commentedon Oct 24, 2026
Thanks for splitting this out of #58243! In short, you're asking for an MCP config editor in the TUI and/or desktop/web. It would add, remove and edit local and remote servers with the right fields for each type and validate them against the official schema, accepting both
mcp.serversand the deprecated flat form. It would show which config file each server comes from (global or project) and the merged result, and write secrets through the placeholder/credential flow. Maintainers will consider it.Related issues you may want to follow:
*, not the tool name #51519: the MCP permission prompt shows only*Dante-dan commentedon Oct 24, 2026
For a first phase, I'd suggest a TUI MCP editor with a source-aware merged server list, rather than spreading the same new editing flow across several UI surfaces at once.
The list would show the effective global/project entry and its originating config document; overridden entries remain inspectable. Add/edit/remove would target an explicitly selected writable source, with a preview when removing a project override would expose a global entry. A read-only source would be shown as such rather than rewritten elsewhere silently.
The form would use the current schema's local/remote discriminated fields and validate before save. Requested fields absent from that schema would need a separate schema decision, not an editor-only promise. Existing legacy entries would remain readable with a migration warning/preview; opening the editor would not automatically migrate them. JSONC writes would change only the selected server node, preserving comments and unrelated fields; detect external edits before committing an atomic write and report errors without corrupting the file.
Credentials would stay as references and use the approved #58653 secret flow; until that contract is approved, the editor should not introduce plaintext secret entry/storage as a shortcut. Connection toggling and permission grants remain separate from editing server definitions.
Current source gives this a concrete boundary:
mcp.serverscontains the local/remote union. Localcommandis an argv array and the environment field isenvironment(rather than separateargs/envfields); timeout is structured. The existing normalizer handles legacy flat input, while new saves should use the current schema. I would reuse that validation/normalization contract instead of maintaining a separate editor schema.Planned acceptance checks: global/project precedence and provenance; local/remote/disabled entries; invalid-field errors; legacy migration preview; JSONC comment/unrelated-field round-trip; external-edit conflict; unwritable source; secret redaction. The list must distinguish saved config from a connection failure so a failed server remains editable.
Would you approve TUI-only as the first surface, with desktop/web following separately after this editing and secret-reference contract is agreed? This is a design proposal from source inspection; no editor implementation or validation result is claimed.