Aller au contenu principal

Design des Connecteurs MCP

Ce document decrit l'architecture et le design des connecteurs MCP dans Chatbotaurus.

Architecture des Connecteurs

Chaque connecteur MCP dans Chatbotaurus suit un pattern commun :

// packages/server/src/services/mcp-gateway/connectors/ExempleConnector.ts

export class ExempleConnector {
private baseUrl: string;
private credentials: CredentialsCache;

constructor(config: ConnectorConfig) {
this.baseUrl = config.baseUrl;
this.credentials = config.credentials;
}

getTools(): ToolDefinition[] {
return [
{
name: 'exemple_search',
description: 'Rechercher dans le service Exemple',
inputSchema: { /* JSON Schema */ }
}
];
}

async executeTool(name: string, args: Record<string, unknown>): Promise<ToolResult> {
// Implementation de l'outil
}
}

Outils (Tools)

Les outils sont les fonctions exposees par les connecteurs. Chaque outil a :

  • name : Identifiant unique (format service_action)
  • description : Description pour le modele IA
  • inputSchema : Schema JSON des parametres
  • execute : Fonction d'execution

Cycle de Vie

  1. Enregistrement : Le connecteur s'enregistre aupres du MCP Gateway au demarrage
  2. Decouverte : Le client MCP decouvre les outils via tools/list
  3. Execution : Le client appelle un outil via tools/call
  4. Resultat : Le connecteur retourne le resultat au format MCP

Bonnes Pratiques

  • Cache des credentials (TTL 5min, LRU 500 entrees)
  • HTTP keep-alive pour les connexions persistantes
  • Timeouts adaptatifs : 10s demo, 15s production, 30s operations lourdes
  • Metriques obligatoires : resolveMs, credentialsMs, executeMs
  • Gestion d'erreurs avec fallback gracieux