Summary
Let users add an MCP server they run themselves — a local stdio command or a remote HTTP(S) endpoint — from the desktop UI, for servers that no registry (mcp_official / Smithery) lists. Surfaces as a "Custom servers" pane on the MCP Servers tab (Connections → MCP Servers).
Problem
The MCP Servers tab today can only install servers a registry lists. There is no way from the UI to connect a server you host yourself: a local npx/uvx command, or a private/internal HTTP MCP endpoint. The only workaround is hand-editing config outside the app, which doesn't integrate with the registry UI, the connection health toolbar, or the OAuth flow. The store schema already carries the needed columns (command, args_json, transport, deployment_url, enabled) — only the add/edit path and UI are missing.
Solution (optional)
Scope: core + app.
- Core RPCs
mcp_clients_add_custom / mcp_clients_update_custom writing an ordinary InstalledServer with a new ServerProvenance (registry vs hand-entered) column, reusing the existing MCP transport / OAuth / tool-safety code paths — no second MCP client.
- UI: a side pane + add/edit modal on the MCP Servers tab.
- Credentials are scope-bound (write-only env; stored secrets, including the OAuth bundle, are dropped and must be re-entered when the credential scope changes — transport switch or HTTP origin change — never carried across).
Acceptance criteria
Related
Implementation ready on a fork; PR to follow. That PR also carries a small, related MCP fix (cancelling the OAuth sign-in wait), tracked separately.
Summary
Let users add an MCP server they run themselves — a local stdio command or a remote HTTP(S) endpoint — from the desktop UI, for servers that no registry (mcp_official / Smithery) lists. Surfaces as a "Custom servers" pane on the MCP Servers tab (Connections → MCP Servers).
Problem
The MCP Servers tab today can only install servers a registry lists. There is no way from the UI to connect a server you host yourself: a local
npx/uvxcommand, or a private/internal HTTP MCP endpoint. The only workaround is hand-editing config outside the app, which doesn't integrate with the registry UI, the connection health toolbar, or the OAuth flow. The store schema already carries the needed columns (command,args_json,transport,deployment_url,enabled) — only the add/edit path and UI are missing.Solution (optional)
Scope: core + app.
mcp_clients_add_custom/mcp_clients_update_customwriting an ordinaryInstalledServerwith a newServerProvenance(registry vs hand-entered) column, reusing the existing MCP transport / OAuth / tool-safety code paths — no second MCP client.Acceptance criteria
registry;installcannot clobber a custom row.github/workflows/ci-lite.yml).Related
Implementation ready on a fork; PR to follow. That PR also carries a small, related MCP fix (cancelling the OAuth sign-in wait), tracked separately.