Skip to content

Feature request: surface target changes between server versions (listing swaps) #1706

Open

Description

@bl014h

Problem. A user approves an MCP server by its registry name, but a client installs whatever that name resolves to today. Nothing tells the user when the target behind the name changes: a new remote domain, or a package now published by a different owner.

Data. We compared the current version of every server in the official registry with the first version published under the same name (10 Oct 2026 dump: 142,002 versions of 41,351 servers). 1,075 servers now reach a different remote domain or package owner than their first version; 698 of those kept the same title and description. Most are probably legitimate (rebrands, hosting moves, handovers), but a takeover looks identical. Aggregate method and reproduction script: https://github.com/bl014h/atpp/tree/main/research/listing-swap (no server is named).

Proposal. Two small, opt-in signals:

  1. Registry: expose, per version, whether its remote domains or package owners differ from the previous version (or from the first), so clients don't each have to diff history.
  2. Clients: when an installed server's target changes on update, ask again — the way a phone asks again when an app requests a new permission — instead of silently following the name.

Related: pinning by digest helps (@sha256: for OCI, exact versions for npm/PyPI), and npm/PyPI Sigstore build provenance lets a client check the package was built from the repository the listing declares.

For transparency: we (Redthread) run a daily signed scan of the registry that flags this as a target-stable check, and the verifier is open source. Happy to share the dataset or help with a reference implementation if the registry or client maintainers are interested.

Activity

  1. kaspermuutra-dotcom commented on Oct 20, 2026

    @kaspermuutra-dotcom

    The 698-of-1,075 figure (same title and description, different target) is the striking one, since that's exactly what a takeover would look like. The client-side half of the proposal seems most valuable: treating a changed remote domain or package owner like a new permission request. One addition: the same "ask again" logic arguably applies when a server's tool definitions change materially (new write-capable tools, changed annotations), not just its target, since that changes what the user originally approved.

    Kasper

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