github / github/copilot-cli

MCP server collision detection is case-sensitive across configuration scopes

Ouverte
#4,478 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

area:mcp
Langage dominant
Shell
Étoiles
11.2k
Forks
1.9k
Merge moyen
14 h 16 min
PR mergées (30 j)
6

Description

Describe the bug

Copilot CLI can discover MCP servers from multiple scopes, including user configuration and installed plugins. Server-name collision detection is case-sensitive, so logically identical names such as MCPBrowser and mcpbrowser are treated as separate servers and both processes are launched.

This causes redundant startup work, duplicate tool registrations, additional startup delays, and confusing output where one declaration may fail or time out while the other connects successfully.

Affected version

GitHub Copilot CLI 1.0.79 on Windows x64.

Steps to reproduce the behavior
  1. Add a user-scoped MCP server named MCPBrowser to ~/.copilot/mcp-config.json:
{
  "mcpServers": {
    "MCPBrowser": {
      "type": "local",
      "command": "npx",
      "args": ["-y", "mcpbrowser@latest"],
      "tools": ["*"]
    }
  }
}
  1. Install a Copilot plugin that contributes the same MCP server using the name mcpbrowser.
  2. Run copilot plugins list --kind mcp --json.
  3. Observe both entries: user-scoped MCPBrowser and plugin-scoped mcpbrowser.
  4. Start Copilot CLI and observe that both MCP processes are started independently.
Expected behavior

Copilot CLI should detect MCP name collisions case-insensitively across all discovery scopes and should not launch duplicate logical servers.

Suggested behavior:

  • Canonicalize MCP names for collision detection, for example with Unicode case folding.
  • Apply a documented precedence rule across user, repository, organization, and plugin scopes.
  • Start only the winning declaration.
  • Emit a clear warning that identifies both sources and explains which declaration was selected.
  • Alternatively, fail fast with an actionable conflict error rather than silently launching both.

Exact duplicate names may already receive precedence handling; case-only differences should not bypass it.

Additional context

This is especially easy to encounter when a server was first configured manually and is later installed through a plugin. Individual MCP server packages cannot reliably prevent or repair duplicate declarations because discovery and scope resolution happen in Copilot CLI before the server process starts.

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par la découverte de MCP et la résolution de portée exercées via copilot plugins list --kind mcp --json, en comparant la déclaration de l’utilisateur dans ~/.copilot/mcp-config.json avec la déclaration du plugin. Suivez les endroits où les noms des serveurs sont comparés entre les portées. Le travail est terminé lorsque les doublons qui ne diffèrent que par la casse sont détectés, qu’une déclaration suit une règle de précédence documentée et que le conflit est clairement signalé ou rejeté avant le lancement des deux processus.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
shell
Domaine
cli
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
Calme
Clarté
Plutôt claire
Accessibilité débutants
52/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.