Skip to content

[FEATURE]: MCP manager - per-server output panel with clickable local panel URLs #58652

Open

Description

@arin8513
  • I have verified this feature I'm about to request hasn't been suggested before.

Describe the enhancement you want to request

Many MCP servers ship their own local web UI and print its URL to stdout/stderr on startup
(a config panel, a DB browser, a graph UI). OpenCode logs that stream undifferentiated, so the
only way a user ever sees the URL is by scrolling the global MCP log with several servers'
lines interleaved.

Real case from our setup: codebase-memory-mcp runs through a PowerShell wrapper whose only
extra job is to print the panel URL, because nothing else surfaces it:

"codebase-memory-mcp": {
  "type": "local",
  "command": [
    "powershell.exe", "-NoProfile", "-Command",
    "[Console]::Error.WriteLine(' Codebase Memory UI:\n http://127.0.0.1:9749'); & codebase-memory-mcp --ui=true --port=9749"
  ]
}

Request: render http://localhost / http://127.0.0.1 URLs found in a server's stdout/stderr -
or declared through an optional links field next to that server's config - as a per-server,
clickable output section in the MCP manager area (/mcps and the desktop/web MCP panel),
filtered per server instead of mixed into the global log. Keeping the last N lines of that
server's own output there would also solve the debug problem raised in #50710, where a failing
server's stderr is truncated before the chained cause.

Why is this needed?

Three cooperating agents and one human share ~30 MCP servers on this machine; four of them
expose local panels. Today those URLs are copy-pasted out of a raw log, and one config carries
a wrapper that exists purely to make its URL visible - a workaround that only works because we
control that config file.

Related issues

Additional context

Activity

  1. opencode-agent commented on Oct 24, 2026

    @opencode-agent
    Contributor

    Thanks for splitting this out of #58243! You're asking for the MCP manager (/mcps in the TUI and the desktop/web MCP panel) to show each local server's own recent stdout/stderr, filtered to that server. Any http://localhost / http://127.0.0.1 URLs in that output, or declared in an optional links field in the server config, would be clickable. That way you don't have to dig local panel URLs out of the global log or print them from a wrapper script. Maintainers will consider it.

    At the moment a local MCP server's stderr goes only to the debug log. A short tail is kept only to explain an unexpected exit. Plugins can't read that output or add to the MCP manager, so a plugin can't do this today.

    Related issues:

  2. arin8513 commented on Oct 24, 2026

    @arin8513
    Author

    Clarifying the user-facing intent of this request, because that is the part that matters in practice.

    The point is not only that the panel URL appears somewhere log-like - it is that a user who runs an MCP server sees that server's own panel link inside the manager surface and can click it, in the same places a user already manages servers: the TUI manager and the desktop/web MCP panel (/mcps included). Clicking it should open the panel the way any other link in the app opens - no copy-pasting out of a log stream, and no wrapper hack like the one in the config example.

    Concretely, per server:

    • a small "output / links" area on that server's row or detail view;
    • the URL rendered as a clickable element (opening the panel in the app's browser surface or the operator's own browser), not as raw text;
    • the last few lines of that server's own output next to it, so a link printed at startup is still findable later in the session.

    This is item 1 of #58243, split out per the triage bot's suggestion; the same wording ("the user sees it and clicks it") applies to the desktop and web clients, not only a terminal log pane.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions