Intégration MCP
Responsabilité
MCP (Model Context Protocol) est un protocole standard pour connecter des outils et sources de données externes. Hermes agit à la fois comme client MCP en consommant les outils exposés par des serveurs MCP externes (pontés dans le ToolRegistry via mcp_tool), et comme serveur MCP (mcp_serve.py) en exposant ses propres outils à d'autres clients agents. Cette couche permet à Hermes d'accueillir indéfiniment des capacités tierces.
Fichiers clés
tools/mcp_tool.py— pont client MCP : enregistre les outils des serveurs MCP externes dans le ToolRegistrymcp_serve.py— Hermes comme serveur MCP exposant ses propres outils (racine du dépôt)registry.register:365-436— les outils pontés via MCP passent par le même chemin d'enregistrementregister_plugin_override_policy:316-365— contrôle l'admission des espaces de noms pour les outils MCP / pluginsrépertoire optional-mcps/— implémentations optionnelles de serveurs MCP
Flux de données
- Au démarrage (ou en chargement à chaud à l'exécution), lecture de la config MCP,
mcp_toolse connecte aux serveurs MCP externes. - Récupère la liste des outils exposés par le serveur, et enregistre chacun via
registry.register:365commeToolEntry(isolation par espace de noms, pour éviter les collisions avec les outils intégrés). - L'admission des espaces de noms est contrôlée par
register_plugin_override_policy:316. - La boucle principale collecte les schémas, distribue les tool_calls et réinjecte les résultats comme pour les outils intégrés.
- Sens inverse : Hermes peut exposer ses propres outils à d'autres clients MCP via
mcp_serve.py, pour les éditeurs ou autres agents.
Résumé
MCP est le « bus d'extension de capacités » d'Hermes. mcp_tool fait entrer les outils externes dans le pool d'outils unifié sans couture ; mcp_serve.py permet à Hermes lui-même d'être appelé de l'extérieur. Tout passe par le ToolRegistry, donc la boucle principale n'a pas à se soucier de savoir si un outil vient de l'intégré ou de MCP.