Skip to content

MCP "Add to Cursor" deeplink always uses name=server instead of the .mcp.json key #460

Open

Description

@Silas-h

What happens: on a plugin detail page, the "Add to Cursor" button for an MCP server installs it under the name server instead of the key from the repo's .mcp.json. If a plugin has two servers, both buttons use name=server, so installing both collides.

Example: https://cursor.directory/plugins/financialfilings-mcp. Our .mcp.json is the standard shape:

{ "mcpServers": { "financialfilings": { "type": "http", "url": "https://mcp.financialfilings.com/mcp" } } }

The button links to cursor://anysphere.cursor-deeplink/mcp/install?name=server&config=....

Cause:

  • apps/cursor/src/lib/github-plugin/parse.ts: the scanner unwraps mcpServers, stores each server's inner config as content, and keeps the key only in the component's name. metadata has no name.
  • apps/cursor/src/components/plugins/detail/mcp-section.tsx, in resolveMcpConfig: content therefore has no mcpServers wrapper, so it falls through to return { name: (meta?.name as string) ?? "server", config: parsed }, and the name is always "server".

Suggested fix: pass the component's name into resolveMcpConfig and use it before the "server" fallback, e.g. name: (meta?.name as string) ?? mcp.name ?? "server". Or store name in metadata at parse time.

Activity

  1. deanrie commented on Oct 20, 2026

    @deanrie

    Hey @Silas-h, this is the same defect as #416 (deeplink and shown config use the config key server instead of the submitted server name), and the fix is already up as #457: the server name is persisted in the component metadata and used for the install deeplink, and the detail page shows a paste-ready mcpServers entry. Your two-server case is a good extra check for it, since with the name carried through the two buttons no longer collide. I have added this report to the internal item; it will close with #457.

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