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
- Enregistrement : Le connecteur s'enregistre aupres du MCP Gateway au demarrage
- Decouverte : Le client MCP decouvre les outils via
tools/list - Execution : Le client appelle un outil via
tools/call - 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