Skip to content

🔴 SSH Bridge MCP: 357 doublons + schemas basiques #755

Description

@up-guillaume

Problèmes identifiés

1. Doublons (357 tools)

État actuel :

  • Total en DB : 714 tools
  • Avec prĂ©fixe mcp_ssh_bridge- : 357 tools
  • Sans prĂ©fixe ssh_* : 357 tools
  • Ratio : 1.0 (doublons exacts)

Impact :

  • Confusion pour les agents (voient chaque tool 2 fois)
  • Gaspillage de tokens dans le schema
  • IncohĂ©rence avec les autres MCPs

Solution :

  • Supprimer les 357 doublons (garder soit les prĂ©fixĂ©s, soit les non-prĂ©fixĂ©s)
  • Recommandation : garder ssh_* (sans prĂ©fixe) pour cohĂ©rence avec ClickUp/Hetzner

2. Schemas basiques

État actuel :

{
  "type": "object",
  "properties": {
    "host": {"type": "string", "description": "..."}
  },
  "required": ["host"]
}

Problèmes :

  • Seulement host comme paramètre requis
  • Pas de descriptions dĂ©taillĂ©es pour les autres paramètres
  • Pas de validation de types (string, number, boolean)
  • Pas d'enums pour les valeurs autorisĂ©es
  • Pas de defaults
  • Pas de minimum/maximum
  • GĂ©nĂ©ration dynamique par pattern matching sur le nom du tool

Comparaison avec ClickUp/Hetzner :

  • ClickUp : schemas complets avec descriptions, types, enums, required
  • Hetzner : schemas complets avec descriptions, types, enums, required
  • SSH Bridge : schemas minimaux, juste host + quelques propriĂ©tĂ©s

Root cause :
Le fichier mcp-ssh-bridge-eager.py génère les schemas dynamiquement via build_schema() basé sur le nom du tool :

if "service" in name or "systemd" in name:
    schema["properties"]["service"] = {"type": "string", "description": "Service name"}
if "docker" in name:
    schema["properties"]["container"] = {"type": "string", "description": "Container name or ID"}

C'est beaucoup moins précis que d'extraire les schemas depuis un package npm.

3. Source custom

État actuel :

  • Fichier : /app/mcp-ssh-bridge-eager.py (300 lignes)
  • Binaire : /usr/local/bin/mcp-ssh-bridge
  • Pas un package npm standard
  • Pas de documentation externe

Impact :

  • Impossible d'extraire les schemas depuis une source fiable
  • NĂ©cessite de modifier le code source ou le binaire
  • Pas de mise Ă  jour automatique

Actions requises

Priorité 1 : Nettoyer les doublons

  1. Identifier quels tools garder (préfixés ou non-préfixés)
  2. Supprimer les 357 doublons
  3. Valider que les agents peuvent toujours utiliser les tools

Priorité 2 : Améliorer les schemas

Option A : Modifier mcp-ssh-bridge-eager.py

  • AmĂ©liorer build_schema() pour gĂ©nĂ©rer des schemas plus complets
  • Ajouter descriptions, types, enums, required
  • NĂ©cessite de connaĂ®tre les paramètres de chaque tool

Option B : Extraire depuis le binaire

  • Analyser /usr/local/bin/mcp-ssh-bridge pour extraire les schemas
  • CrĂ©er un script pour parser et mettre Ă  jour la DB
  • Complexe car le binaire est compilĂ©

Option C : Documenter manuellement

  • CrĂ©er un fichier YAML/JSON avec les schemas de chaque tool
  • Script pour mettre Ă  jour la DB
  • Travail manuel important (357 tools)

Priorité 3 : Tests E2E

  • Tester quelques tools reprĂ©sentatifs (docker, systemd, backup, etc.)
  • Valider que les tools fonctionnent correctement
  • Documenter dans TOOLS.md

Recommandation

Court terme (cette semaine) :

  1. Nettoyer les doublons (30 min)
  2. Tester E2E quelques tools (1h)

Moyen terme (ce mois) :
3. Améliorer les schemas via Option A ou C (4-8h)

Long terme :
4. Remplacer par un package npm standard si disponible

Impact

  • Agents : Moins de confusion, schemas plus clairs
  • Tokens : RĂ©duction de ~50% (357 doublons supprimĂ©s)
  • MaturitĂ© : Passer de 🟡 Superficiel Ă  🟢 Mature

Priorité

🔴 CRITIQUE — Doublons + schemas basiques

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions