modelcontextprotocol / modelcontextprotocol/inspector

TUI has no clipboard/copy affordance at all — no OSC 52 fallback for terminal copy

Open
#2,421 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement v2
Dominant language
TypeScript
Stars
10.9k
Forks
1.5k
Avg merge
6h 17m
Merged PRs (30d)
151

Description

Which version line?

v2 — current (@modelcontextprotocol/inspector@latest)

Which client?

TUI

Inspector version

2.7.0 (git tag) — static code-review finding, not run locally

Node version

N/A — static code review, no live run performed

Operating system (and browser, for the web client)

N/A — static code review

Transport

Not applicable / never connected

MCP server under inspection

N/A — this is a static code-review finding comparing clients/tui against clients/web/src/components/elements/CopyButton in the 2.7.0 tag source, not a live reproduction against a running MCP server.

Steps to reproduce

Found via static review of the 2.7.0 tag source, not a live run.

  1. Web has a dedicated one-click copy affordance (clients/web/src/components/elements/CopyButton/CopyButton.tsx), built on the browser Clipboard API and used throughout the UI (tokens, IDs, secrets via SecretStorageFooter).
  2. Searching clients/tui for "clipboard" (case-insensitive) returns no matches at all.
  3. Searching clients/tui for "osc52" / "OSC 52" / "OSC-52" also returns no matches.

I have not run the TUI over SSH to confirm the absence live; flagging what a repo-wide grep across the 2.7.0 tag source shows.

Expected behavior

The TUI has some way to get a value (an OAuth token, a request/response body, a resource URI) out of the terminal UI and onto the system clipboard, comparable to Web's CopyButton, including over an SSH session where the terminal emulator has no direct access to the remote process's clipboard.

Actual behavior

There appears to be no copy affordance in the TUI at all. The only way to get a value out is manually selecting text with the terminal emulator's own mouse-selection, which does not work over many SSH sessions unless the remote terminal emits OSC 52 escape sequences and the local terminal honors them, and is impractical for anything longer than a short line — the same large-payload problem issue #2407 already flags for the TUI's request/response rendering.

Suggested fix: add a copy affordance to the TUI — at minimum, emit an OSC 52 escape sequence (widely supported over SSH) when the user selects "copy" on a value, with a documented fallback (e.g. printing the raw value to a dedicated line) for terminals that don't support OSC 52.

Logs, errors, or screenshots

No response

Already prototyped a fix?

No response

Before you submit
  • I searched existing issues and this is not a duplicate.
  • This is not a security vulnerability report (those go through the private advisory process).

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with clients/web/src/components/elements/CopyButton/CopyButton.tsx, then inspect the clients/tui entry points and existing value-rendering interactions. Define how a TUI copy action emits OSC 52 and what the documented fallback displays; done means values such as tokens, IDs, request/response bodies, and resource URIs can be copied from the terminal, including over SSH.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
cli
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.