Actus Circuit Libre
Posté le
• ☁️ Nextcloud

Connecter un agent IA à Nextcloud avec MCP Connector

Auteur
Connecter un agent IA à Nextcloud avec MCP Connector

Que vous utilisiez une IA du commerce - tierce, payante, souvent américaine - ou un modèle libre et auto-hébergé, vous pourriez être tenté de connecter votre serveur Nextcloud afin que votre agent puisse accéder à vos documents, agendas, notes et autres outils.

Les possibilités sont nombreuses et alléchantes : vous pourriez lui demander de résumer le contenu d'un rapport, de dresser la liste des réunions prévues pour une journée donnée, d'analyser des documents scannés grâce à l'OCR, d'enregistrer dans vos notes la dernière réunion, ou encore de retrouver et classer rapidement les tâches à faire dans votre Deck.


Évidemment, connecter une IA à son système d'information nécessite de prendre un certain nombre de précautions. C'est justement dans ce contexte qu'intervient un outil relativement récent : le MCP Connector pour Nextcloud.

enter image description here


Ce qu'il peut faire

Domaine Fonctionnalités
Fichiers Lister le contenu d'un dossier
Lire un fichier texte
Télécharger un fichier
Rechercher des fichiers
Créer un fichier sans écrasement
Notes Lire des notes
Créer des notes
Rechercher dans les notes Nextcloud
Calendrier Lister les événements
Créer des événements
Contacts Rechercher des contacts
Exporter des fiches de contacts
Deck Parcourir les tableaux
Créer de nouvelles cartes
Tables Parcourir les tables
Ajouter de nouvelles lignes
Talk Parcourir les conversations
Envoyer des messages
Mail Parcourir la messagerie
Faire des résumés de discussions
Recherche Rechercher dans les fournisseurs
de recherche Nextcloud

Ce qu'il ne peut pas faire

Le périmètre d'accès est volontairement limité par design :

  • Ne rien supprimer : aucun outil ne permet de supprimer des fichiers, événements, notes, cartes ou contacts.
  • Ne rien écraser : les opérations d'écriture sont en création seule. Par exemple, files_upload refuse un chemin déjà existant au lieu de remplacer le fichier.
  • Aucun déplacement ni renommage : il n'est pas possible de déplacer ou renommer des fichiers.
  • Aucune modification des partages et permissions : l'agent ne peut pas modifier les droits d'accès.
  • Mail en lecture seule : aucun envoi, brouillon, déplacement, marquage, suppression ou téléchargement de pièce jointe n'est possible.
  • Aucun accès administrateur : le serveur agit comme un utilisateur Nextcloud et hérite exactement des droits qui lui sont accordés.

On obtient donc une configuration relativement restreinte et maîtrisable, et qui offre déjà de nombreux outils, sans besoin GPU nécessaire. Selon la manière dont elle est mise en place et selon l'agent utilisé, elle peut devenir particulièrement utile au quotidien.


Les composants

MCP Connector

Projet : https://github.com/street1983nk/nextcloud-mcp-connector/

Le MCP Connector est un serveur MCP qui fait le lien entre les applications Nextcloud - Fichiers, Agenda, Notes, Deck, Contacts, Tables, Talk et Mail - et des assistants ou agents compatibles MCP tels que Claude, Cursor, ChatGPT, Mistral ou vos propres agents locaux.

Installé sous la forme d'une ExApp Nextcloud, il intègre également son propre serveur d'autorisation basé sur OAuth 2.1.

L'intérêt de cette approche est de ne pas donner à l'agent un accès arbitraire au serveur : il interagit avec Nextcloud au travers d'un ensemble d'outils définis, et avec les droits de l'utilisateur concerné.

Source : https://github.com/street1983nk/nextcloud-mcp-connector/blob/main/README.fr.md

Findling (anciennement nextcloud-search)

Projet : https://github.com/street1983nk/nextcloud-search/

Findling ajoute à Nextcloud de puissantes capacités de recherche plein texte, de reconnaissance optique de caractères (OCR) et de recherche sémantique/thématique. Les résultats sont intégrés directement à la Recherche unifiée de Nextcloud.

Cet outil permet de retrouver un document selon trois approches :

  • Recherche plein texte dans la barre de recherche normale — y compris à l'intérieur des fichiers, pas seulement par nom
  • OCR (Reconnaissance de texte) pour les PDF scannés et images (français, anglais, allemand)
  • Recherche sémantique pour retrouver du contenu relatif au texte du document

Le tout est annoncé zéro configuration, 100 % local, sans télémétrie, avec vérification des permissions sur chaque résultat.

Source : https://github.com/street1983nk/nextcloud-search/blob/main/README.fr.md


Findling + MCP Connector

Les deux outils sont presque faits pour fonctionner ensemble : une fois combinés, ils constituent une couche de récupération, le socle qui peut vous permettre de monter une architecture de type RAG (Retrieval-Augmented Generation).

enter image description here

Le MCP Connector transmets à un client MCP les résultats issus de la Recherche unifiée, dont ceux fournis par Findling, tout en respectant les droits de l'utilisateur à l'origine de la requête (si l'utilisateur a des accès en lecture, écriture, etc)

L'agent n'a donc pas besoin de connaître à l'avance l'emplacement exact d'un document : il peut s'appuyer sur le moteur de recherche de Nextcloud boosté par Findling pour retrouver les informations pertinentes, et ainsi gagner massivement en réactivité.

L'agent IA connecté au serveur MCP peut être choisi indépendamment de cette infrastructure : un modèle local est toujours à privilégier, mais un service hébergé ou toute autre solution compatible MCP sera fonctionnelle. Vous connectez un client IA à votre serveur MCP, et celui-ci accède au contenu que vous autorisez à lui partager.

Dans l'exemple plus bas, nous réaliserons la connexion d'un modèle Vibe de Mistral parfaitement standard, sans abonnement Pro requis.

enter image description here

!!info Dans une architecture entièrement auto-hébergée (Modèle local), il devient possible de conserver les documents, l'index de recherche et le modèle sur une infrastructure que vous contrôlez et que vous maintenez, sans risquer de compromettre vos données auprès d'un tiers. !!

Ceci est très clairement expliqué dans la note sur la sécurité de MCP Connector :

Le seul flux qui échappe à votre contrôle est l’assistant lui-même : lorsqu’un utilisateur connecte un client d’IA hébergé, tel que Claude.ai ou ChatGPT, le contenu que l’assistant lit depuis Nextcloud est transmis au fournisseur de ce client. Le connecteur ne le transmet pas de lui-même, mais il constitue la porte par laquelle ce contenu peut sortir.

Source : https://github.com/street1983nk/nextcloud-mcp-connector/blob/main/docs/privacy.md


Restreindre les accès aux fichiers

Afin de réellement maîtriser les ressources auxquelles un agent peut accéder, plusieurs configurations sont envisageables.

Elles offrent des niveaux d'isolation différents.

1. Accès à l'ensemble du compte utilisateur l'agent est connecté au compte Nextcloud de l'utilisateur et peut accéder à l'ensemble des ressources auxquelles celui-ci a accès. C'est la configuration la plus simple, mais aussi celle qui offre le périmètre d'accès le plus large, et donc la plus dangereuse.

2. Compte Nextcloud dédié à l'IA l'agent est connecté à un compte utilisateur spécifique, par exemple Mistral. On partage ensuite avec ce compte uniquement les fichiers et dossiers que l'on souhaite rendre accessibles à l'IA. Cette approche permet de séparer clairement les ressources destinées à l'agent du reste de l'environnement de travail. C'est la solution la plus restrictive.

3. Dossier « sandbox » au sein du compte utilisateur l'agent reste connecté au compte de l'utilisateur, mais les ressources Fichiers destinées à l'IA sont regroupées dans un dossier spécifique, un bac à sable qui lui sera dédié, par exemple le dossier /Mistral. On y déplace ou copie uniquement les contenus que l'on souhaite rendre accessibles à l'agent. Cette solution permet de conserver une organisation simple tout en délimitant visuellement le périmètre de travail de l'IA.

C'est un compromis, mais il faut noter que cela concerne uniquement l'accès aux Fichiers, les interactions avec le reste des applications (agenda, mail, deck...) reste inchangé. Il serait préférable de déverrouiller les accès aux applications manuellement.

!!info Dans tous les cas, le principe reste le même : ne donner à l'agent que les accès dont il a réellement besoin. Plus le périmètre est restreint, plus il est facile de comprendre, contrôler et révoquer les accès accordés. !!

Allons-y pour la mise en œuvre !


Installation du HaRP pour déployer des applications externes dans Nextcloud (ExApps)

!!warn Votre instance Nextcloud doit être à minima sur la version 32 et disposer d'un agent/daemon de déploiement d'applications externes type HaRP. Pour cette procédure, la version Nextcloud testée est la 34.0.4. !!

HaRP permet à Nextcloud de déployer et d'exécuter des applications externes sous forme de conteneurs, appelés ExApps chez Nextcloud. Nous allons commencer par déployer le conteneur HaRP à l'aide de Docker Compose :

services:
  appapi-harp:
    image: ghcr.io/nextcloud/nextcloud-appapi-harp:release
    container_name: appapi-harp
    hostname: appapi-harp
    restart: unless-stopped
    environment:
      HP_SHARED_KEY: "changez-moi"
      NC_INSTANCE_URL: "https://cloud.example.com"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./certs:/certs
    ports:
      - "127.0.0.1:8780:8780"
      - "127.0.0.1:8782:8782"

Pensez à modifier les valeurs de HP_SHARED_KEY et NC_INSTANCE_URL.

Configurez ensuite votre reverse proxy pour que les requêtes destinées aux ExApps soient transmises au conteneur HaRP via votre serveur web.

Pour nginx :

    location /exapps/ {
        proxy_pass http://127.0.0.1:8780/exapps/;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_read_timeout 1800s;
    }

Une fois HaRP déployé et le reverse proxy configuré, rendez-vous dans Paramètres d'administration > AppAPI dans Nextcloud.

Vous pourrez y activer et configurer votre agent de déploiement en cliquant sur Register daemon, et en remplissant le formulaire proposé.

Pour plus d'informations sur AppAPI et le déploiement des applications externes, consultez la documentation officielle de Nextcloud : https://docs.nextcloud.com/server/31/admin_manual/exapps_management/AppAPIAndExternalApps.html

!!warn Comme tout environnement Docker, l'accès au socket donne à HaRP des privilèges importants sur l'hôte. Cette configuration doit donc être considérée comme une composante de confiance dans votre infrastructure. !!


Installation du MCP Connector en ExApp

Une fois le daemon de déploiement fonctionnel, l'installation du MCP Connector peut se faire facilement depuis le magasin d'applications de Nextcloud.

Recherchez l'application MCP Connector, puis cliquez le bouton sur Déployer et Activer. Nextcloud va alors télécharger et déployer automatiquement le conteneur de l'ExApp. L'opération ne devrait prendre que quelques secondes.

enter image description here

En cas d'échec du déploiement depuis l'interface, il est possible d'effectuer l'installation en ligne de commande à l'aide d'occ :

occ app_api:app:register mcp_connector

Note : pour restreindre les accès à un dossier unique (mode sandbox des fichiers), utilisez la variable d'environnement NC_MCP_FILES_ROOT

occ app_api:app:register mcp_connector --env "NC_MCP_FILES_ROOT=/Mistral"

L'agent considère alors que le dossier Mistral est sa racine /, sans lecture possible sur le niveau supérieur.

!!info Le dossier Mistral doit déjà exister dans Fichiers. Cela peut être un dossier partagé ou un dossier d'équipe distribué. !!

Source : https://github.com/street1983nk/nextcloud-mcp-connector/blob/main/docs/exapp-install.md


Vérifiez que l'ExApp a bien été enregistrée et qu'elle est active :

occ app_api:app:list

Ce qui doit retourner :

[ExApps]
mcp_connector (MCP Connector): <version> [enabled]

La présence de mcp_connector avec le statut [enabled] confirme que l'ExApp a été correctement enregistrée et que son conteneur est disponible.

Configurer les restrictions supplémentaires et consulter les connexions actives

Rendez-vous dans Paramètres d'administration > Sécurité sur votre instance Nextcloud.

Vous devriez désormais y trouver un nouvel encart MCP Connector, qui permet de configurer plusieurs restrictions supplémentaires sur les agents connectés. Vous pouvez notamment contrôler leur capacité à s'enregistrer par eux-mêmes auprès du serveur, ainsi que leur possibilité d'extraire du contenu via les salons de discussion Talk.

!!error Certaines de ces options peuvent avoir un impact important sur la confidentialité et la sécurité de vos données. Avant de les activer, prenez le temps d'évaluer précisément les risques liés à l'accès accordé à un agent tiers, en particulier si celui-ci n'est pas entièrement sous votre contrôle. !!

!!info Le bouton ? permet de consulter les connexions actuellement actives, afin d'identifier les agents autorisés à accéder à votre instance, mettre en pause une session sans la déconnecter, ou révoquer les accès qui ne sont plus souhaités. !!

enter image description here

Installation de Findling

L'installation de Findling se fait directement depuis le magasin d'applications de Nextcloud.

Recherchez et installez les deux applications suivantes :

  • Findling
  • Findling Backend

Le backend est déployé comme une ExApp, de la même manière que le MCP Connector. Dans la plupart des cas, son déploiement se fait directement depuis l'interface Nextcloud, en cliquant sur Déployer et Activer.

Si le déploiement du backend échoue depuis le magasin d'applications, vous pouvez également l'enregistrer manuellement avec occ :

occ app_api:app:register findling_backend

Une fois le backend correctement installé, Findling va commencer à indexer le contenu de votre instance Nextcloud. Cette première indexation peut prendre plusieurs heures, selon le nombre de documents présents et leur volume.

Vous pouvez suivre l'avancement de l'indexation depuis les Paramètres d'administration > Findling.

enter image description here

Une fois l'indexation terminée, les capacités de recherche avancée de Findling seront intégrées à la Recherche unifiée de Nextcloud.

Le MCP Connector pouvant s'appuyer sur cette recherche, l'agent connecté à votre instance disposera alors lui aussi des mêmes capacités de recherche dans les contenus auxquels il a accès.

Une fois les jalons posés, nous pouvons alors connecter notre premier agent.


Connexion d'un agent Vibe

Pour connecter notre agent au MCP Connector, nous devons nous rendre dans l'interface de Vibe Work.

Pour plus d'infos sur l'intégration des connecteurs MCP chez Mistral, consultez la documentation officielle : https://docs.mistral.ai/vibe/work/connectors/mcp-connectors

Dans Vibe Work, ouvrez le menu Contexte > Connecteurs dans le panneau latéral gauche.

enter image description here

Cliquez sur Ajouter un connecteur, puis sur Ajouter un connecteur personnalisé.

Renseignez les champs :

  • Nom du connecteur : un idientifiant unique, sans espace ou caractères spéciaux
  • Serveur : URL du serveur Nextcloud suivi de /exapps/mcp_connector/mcp
https://cloud.example.com/exapps/mcp_connector/mcp

Le connecteur va automatiquement interroger le serveur pour déterminer le mode d'authentification utilisé. MCP Connector indique bien qu'il utilise OAuth 2.1.

enter image description here

Poursuivez la configuration en cliquant sur Ajouter un connecteur.

Vous serez alors redirigé vers la page d'authentification du MCP Connector.

enter image description here

Cliquez sur Continue to Nextcloud sign-in afin de sélectionner le compte Nextcloud à utiliser, celui qui sera associé à la connexion MCP - compte utilisateur standard ou compte dédié.

!!warn Pour connecter un compte utilisateur, il est recommandé d'utiliser un mot de passe d'application généré depuis Paramètres > Sécurité > Appareils & sessions -- N'utilisez jamais votre mot de passe Nextcloud pour cette connexion. !!

Cliquez sur Connexion à l'aide d'un mot de passe d'application, puis renseignez l'identifiant et le Mot de passe d'application obtenu depuis le menu Paramètres > Sécurité > Appareils & sessions. J'insiste.

Une fois connecté à votre compte Nextcloud, revenez sur la page d'authentification du MCP et cliquez sur Check now.

enter image description here

Si la demande d'autorisation correspond bien à l'accès que vous souhaitez accorder à l'agent, cliquez sur Approve access.

Vous serez alors automatiquement redirigé vers la page du connecteur.

Réglage des outils d'interactions

Dans Vibe Work, depuis le panneau de gauche, allez dans Contexte > Connecteurs et ouvrez votre connecteur Nextcloud.

Vous obtenez une vue complète des outils accessibles par l'agent pouvant interagir avec votre instance, et ainsi la possibilité de régler leurs permissions - Autoriser l’exécution des outils par défaut ou Demander à chaque lancement.

enter image description here


!!success Votre agent est désormais connecté à votre instance Nextcloud et peut utiliser les fonctionnalités exposées par le MCP Connector !!

enter image description here


Recommandations de sécurité et de mise en œuvre

!!warn Raccorder ses agents IA à un serveur MCP n'est jamais anodin. !!

Ce n'est pas, à proprement parler, une porte dérobée exploitable à distance. Il faut néanmoins considérer cette configuration comme un canal potentiel de sortie de données, dont la portée dépend des droits accordés à l'agent et des outils auxquels il a accès, avec un traitement pouvant impliquer un tiers.

L'autre point de vigilance majeur concerne l'injection indirecte d'instructions à travers des données auxquelles l'agent peut accéder, notamment les fichiers et les conversations Talk, ainsi que les contenus des Mails accessibles en lecture. Un contenu malveillant peut ainsi chercher à influencer le comportement de l'agent et, selon les outils qui lui sont associés, l'amener à effectuer des actions ou à transmettre des informations qu'il n'aurait pas dû exploiter.

Récapitulatif des risques

Vecteur Exposition Sévérité
Sortie de données (exfiltration) Tout ce que le compte Nextcloud peut lire — mails, fichiers, notes, agenda, contacts, deck, tables, Talk — transite vers un LLM hébergé chez un tiers (Mistral). C'est un élargissement by design du périmètre de confidentialité du SI. Réelle et structurelle
Injection indirecte Un mail, fichier ou message Talk malveillant peut contenir des instructions visant à piloter l'agent. Les lectures ne demandent aucune confirmation : un contenu piégé pourrait théoriquement faire récupérer des données sensibles, voire les encoder dans une requête web sortante (le vrai chemin d'exfiltration est la combinaison lecture + recherche web). Le scénario d'attaque le plus crédible
Intégrité / intrusion Les écritures (upload de fichier, création d'événement, envoi Talk, carte Deck, ligne Table) exigent une confirmation explicite à chaque appel, avec une raison affichée. Pas d'écrasement, pas de suppression, pas d'envoi de mail (la boîte est en lecture seule). Pas de fetch d'URL arbitraire, pas d'exécution de code. Faible
Saturation / social engineering talk_send permet d'écrire à des interlocuteurs en votre nom — si vous validez les confirmations sans les lire, c'est un canal de phishing-as-you. Dépend de votre discipline

Recommandations d'utilisation

  • Privilégiez un compte Nextcloud dédié à l'agent
  • Partagez les ressources (docs, agenda, tableaux...) au cas par cas
  • Considérez ces données comme "sortantes" de votre système d'information
  • Vérifiez systématiquement les demandes d'écriture émises par votre agent
  • Considérez le contenu généré par votre agent comme "non fiable"

Pour une mise en œuvre en Équipes, veillez à définir dès le départ une arborescence d’instructions accessible en lecture seule par vos agents.

Vous pourrez ainsi ajouter vos propres instructions restrictives et personnalisées à votre environnement :

  • des Skills pour la création de documents, de notes ou de procédures,

  • des Libraries pour les ressources graphiques, les chartes et les documentations de référence,

  • des Projects pour organiser des bases de connaissances par contexte.


Cette organisation doit être pensée et structurée dès l’initialisation du projet, afin de maîtriser les instructions, les ressources et les contextes mis à disposition des agents.

enter image description here


Pour plus d'infos : Contacter Circuit Libre