Skip to content

[FEATURE]: Output - a per-server MCP output panel beside Review / Terminal / Open file #60248

Closed as duplicate

Description

@arin8513

What this is

A consolidated, implementation-ready specification for the Output surface, plus an offer to build it as a PR.

It gathers the related asks that were split out of #58243 (closed by the OpenCode team, who asked for one issue per item). This issue is the "Output" one; #58653 (unresolved {env:} placeholder prompts + secrets stored outside the plaintext config) and #58654 (schema-aware MCP config editor) stay separate, as requested there.

The surface: an Output launcher beside Review / Terminal / Open file

The session side region already offers three launchers - Review, Terminal and Open file (in the v2 web UI they are the three buttons with Ctrl+Alt+R / Ctrl+Alt+T / Ctrl+Alt+P). This request adds a fourth - Output (Ctrl+Alt+O) - and gives it the data only the host can see.

The Output tab shows one collapsible section per MCP server:

Column Content
server name + connection state (connected / starting / failed / needs auth)
tools the tool count, expandable to that server's full tool list
output that server's own recent stdout/stderr tail, filtered to that server
links every http://localhost / http://127.0.0.1 URL found in that server's output, rendered as a clickable link that opens in the OS default browser

Plus an optional links field next to a server's config, for servers that print nothing themselves.

Why this has to be core, not a plugin (recorded so it is not re-suggested)

The triage reply on the sibling split states it plainly: "Plugins can't read that output or add to the MCP manager, so a plugin can't do this today", and the reply on #58653 adds that a plugin cannot prompt before the config is loaded nor reach a protected secret store. This is a core change.

Real case

codebase-memory-mcp currently runs through a PowerShell wrapper whose only extra job is to print its 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"
  ]
}

Keeping a per-server tail here also addresses the truncation raised in #50710, where a failing server's stderr is cut before the chained cause.

Offer to implement

We are happy to implement the Output surface alone as a PR against anomalyco/opencode, following CONTRIBUTING.md and the existing side-panel patterns, with tests. Two decisions we need from a maintainer before starting:

  1. Surface - a new Output launcher in the session side region (beside Review / Terminal / Open file), or per-server output inside the existing /mcps area?
  2. Ownership - do you want us to open the PR ourselves, and if so, against which branch and with which test expectations?

Related

Additional context

  • opencode v2.1.4 / v2.2.0, Windows 11, PowerShell; CLI surface and the official MCP reference measured/read 2026-10-24, docs re-read 2026-10-29.
  • The Output naming and the comment style follow the repository's own conventions.

Activity

  1. opencodejr commented on Oct 29, 2026

    @opencodejr
    Contributor

    Thanks for the detailed write-up and for offering to build this!

    I think this is a duplicate of #58652, your own earlier split of the same ask. That issue is still open and covers the same per-server stdout/stderr tail, clickable http://localhost / http://127.0.0.1 links and optional links config field. The Output launcher placement and your two questions (surface and PR ownership) fit best as a comment on #58652, so the whole discussion and any maintainer decision stays in one place.

    Related issues, ordered by likelihood of being the same request:

    The bot will close this issue as a duplicate in 1 day unless you reply explaining how it differs from #58652.

  2. arin8513 commented on Oct 29, 2026

    @arin8513
    Author

    Thanks - and you are right about the overlap: the data this asks for (a per-server stdout/stderr tail, clickable http://localhost / http://127.0.0.1 links, an optional links field) is exactly #58652's ask, unchanged.

    What is genuinely new here, and why it was opened separately, is the surface, not the data:

    1. Placement. [FEATURE]: MCP manager - per-server output panel with clickable local panel URLs #58652 asks for per-server output in the MCP manager area (/mcps, and the desktop/web MCP panel). This asks for the same data as a fourth launcher in the session side region, beside Review, Terminal and Open file, named Output (Ctrl+Alt+O). The reasoning: those three launchers are where a user already looks while working inside a session, and a panel URL is a session-time thing, not a settings-time thing - you want it while the server is producing output, next to the terminal you are already reading.
    2. Ownership. It carries an explicit offer to implement the surface ourselves as a PR, plus the two decisions needed to start (which surface, and whether you want the PR from us).

    Both of those are maintainer decisions, not new data requirements - which is why your suggestion is right: the home for them is a comment on #58652, not a second issue. We are posting that comment there now and keeping #58652 as the single thread, then closing this one as a duplicate.

    Related, for the record: #58243 (closed umbrella), #50710 (stderr truncated before the chained cause), and #58653 / #58654 (the sibling placeholder/secret-storage and config-editor asks) stay separate.

  3. opencodejr commented on Oct 30, 2026

    @opencodejr
    Contributor

    We didn't hear back on how this differs from #58652, so I'm closing this as a duplicate of #58652. Thanks for the detailed spec and for offering to implement it!

    Please bring your two questions there: whether it should be a separate Output launcher beside Review / Terminal / Open file or live inside the MCP manager, and how a PR should be opened. That way maintainers can weigh in on the request in one place. If this turns out to be different from #58652 after all, reply here and it can be reopened.

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions