My Personal AI intègre désormais le Model Context Protocol (MCP), un standard ouvert qui permet aux modèles d'IA (comme Ollama) d'interagir de manière sécurisée et standardisée avec des outils locaux et des sources de données externes.
Grâce à cette intégration, l'IA n'est plus limitée à ses connaissances internes ou à la recherche web basique. Elle peut désormais :
- Lire et écrire dans votre système de fichiers local.
- Interagir avec des bases de données (SQLite, etc.).
- Exécuter des commandes Git.
- Utiliser n'importe quel serveur MCP compatible.
L'intégration repose sur le module core/mcp_client.py qui agit comme un pont entre Ollama et les outils/serveurs MCP.
Ce sont des fonctions Python exécutées directement dans le processus de l'application. Elles encapsulent les capacités de My AI de manière standardisée pour qu'Ollama puisse les appeler de manière autonome.
Capacités d'interaction système : L'IA a un accès direct encadré à votre PC pour travailler selon ses plans :
write_local_file: Crée ou écrit dans un fichier sur votre ordinateur.move_local_file: Renomme ou déplace un fichier (conserve les dossiers parents grâce à Mkdir intégré).create_directory: Crée de nouveaux dossiers de travail.search_local_files: Explore la racine de votre PC par glob pattern (ex:*.py).read_local_file: Analyse et relit le contenu de n'importe quel de vos fichiers locaux.delete_local_file: Supprime un fichier avec confirmation utilisateur.- Et bien d'autres outils (mémoire vectorielle RAG, recherche web via DuckDuckGo, etc.).
My AI peut se connecter à des serveurs MCP externes via le transport stdio. Cela permet d'étendre les capacités de l'IA de manière infinie en utilisant l'écosystème grandissant des serveurs MCP (ex: serveurs pour GitHub, Slack, bases de données d'entreprise, etc.).
- Découverte : Au démarrage, le
mcp_clientrecense tous les outils locaux disponibles et se connecte aux serveurs MCP externes configurés pour récupérer leurs outils. - Exposition : Tous ces outils sont convertis au format JSON Schema attendu par l'API d'Ollama.
- Décision : Lors d'une requête utilisateur, la liste des outils est envoyée à Ollama avec le prompt. Ollama décide intelligemment s'il a besoin d'utiliser un outil pour répondre.
- Exécution : Si Ollama décide d'utiliser un outil, le
mcp_clientintercepte l'appel, exécute l'outil local ou transfère la requête au serveur MCP externe, puis renvoie le résultat à Ollama. - Synthèse : Ollama utilise le résultat de l'outil pour formuler sa réponse finale à l'utilisateur.
La configuration des serveurs MCP externes se fait dans la section mcp du fichier config.yaml :
mcp:
# Outils locaux (toujours actifs, pas de dépendance externe)
local_tools:
web_search: true
search_memory: true
read_local_file: true
list_directory: true
generate_code: true
calculate: true
# Serveurs MCP externes (optionnels, désactivés par défaut)
# Mettre enabled: true pour activer
servers:
filesystem: # Requiert Node.js
enabled: false
command: "npx"
args: ["@modelcontextprotocol/server-filesystem", "./"]
git: # Accès aux dépôts Git
enabled: false
command: "npx"
args: ["@modelcontextprotocol/server-git", "--repository", "."]
sqlite: # Accès aux bases SQLite
enabled: false
command: "npx"
args: ["@modelcontextprotocol/server-sqlite", "memory/vector_store/chroma.db"]
sequential_thinking: # Raisonnement structuré
enabled: false
command: "npx"
args: ["@modelcontextprotocol/server-sequential-thinking"]
brave_search: # Requiert une clé API Brave
enabled: false
command: "npx"
args: ["@modelcontextprotocol/server-brave-search"]
env:
BRAVE_API_KEY: "${BRAVE_API_KEY}"
fetch: # Récupération de pages web
enabled: false
command: "npx"
args: ["@modelcontextprotocol/server-fetch"]Pour activer un serveur, passer enabled: true. Les serveurs externes nécessitent Node.js (via npx).
L'intégration MCP utilise le SDK officiel mcp pour Python.
Si le SDK n'est pas installé, My AI gère la situation de manière gracieuse (dégradation gracieuse) et continue de fonctionner avec ses capacités de base.
Pour installer le SDK MCP :
pip install mcpQuand l'IA décide d'utiliser l'outil delete_local_file pour supprimer un fichier, une fenêtre de confirmation modale s'affiche dans l'interface graphique :
- Icône
⚠️ et titre "Confirmation de suppression" - Chemin complet du fichier affiché clairement
- Bouton "Oui, supprimer" (orange) et "Non, annuler" (sombre)
- La suppression est bloquée tant que l'utilisateur n'a pas cliqué sur un bouton
- Si l'utilisateur refuse, l'IA reçoit un message indiquant que la suppression a été annulée
Mécanisme technique :
- Le thread IA attend via un
threading.Event - Le dialogue est créé dans le thread GUI principal via
root.after(0, ...) - La synchronisation est thread-safe
- Autonomie : L'IA décide elle-même quand et comment utiliser les outils.
- Sécurité : Confirmation utilisateur obligatoire avant toute suppression de fichier.
- Extensibilité : Ajout facile de nouvelles capacités via des serveurs MCP standards.
- Standardisation : Utilisation d'un protocole ouvert adopté par l'industrie (Anthropic, etc.).
Depuis la v1.1.0 de l'extension VS Code, un client connecté depuis VS Code n'utilise PAS les MCP locaux décrits ci-dessus. À la place, le Relay aiguille la conversation vers un mode agentique dédié (core/agentic_executor.py) qui expose un set d'outils distinct (read_file, write_file, edit_file, list_dir, glob, grep, run_command, get_active_editor, open_file) dont l'exécution est déléguée à l'extension côté client.
Cette séparation est intentionnelle : elle garantit que l'utilisateur de l'extension ne voit que son workspace VS Code, et pas l'intégralité du PC hôte (auquel le GUI desktop et le mobile ont accès via les MCP). C'est aussi pour ça que les outils VS Code sont sandboxés au workspace par défaut, avec un modal d'approbation obligatoire pour toute sortie de ce périmètre.
Le mobile et le GUI desktop continuent d'utiliser les MCP locaux décrits dans cette page, sans changement.