Claude Code met des images dans vos notes : import de fichiers via MCP

Product

Demandez à un assistant IA de rédiger le compte rendu de l’incident d’hier : il fera du bon travail, jusqu’au graphique. La capture d’écran est sur votre bureau, la note dit « voir pièce jointe », et rien n’est joint. Jusqu’ici, le serveur MCP de Notez savait lire, écrire et réorganiser vos notes, mais un fichier sur votre ordinateur restait hors de sa portée.

Notez v0.11.0 comble ce manque. Tout assistant MCP capable d’exécuter des commandes shell — Claude Code, Cursor, Codex CLI — importe désormais une image ou un fichier local et le place directement dans une note.

À quoi ça ressemble

Vous demandez :

Ajoute ./grafana-latency.png à ma note Incident 2026-09-10, juste sous le titre Chronologie, et joins les logs bruts de ./incident-logs.zip.

L’assistant importe les deux fichiers et modifie la note. La capture s’affiche dans le texte sous Chronologie ; l’archive devient une pastille de fichier sur laquelle vous cliquez pour la télécharger. Les deux apparaissent sur votre page Fichiers, comptent dans votre stockage comme le reste et suivent les mêmes formats et limites de taille que l’éditeur.

Ça marche partout où une note s’écrit : à la création d’une note, à la modification d’une partie ou à la réécriture complète.

Pourquoi le fichier ne passe jamais par le chat

La solution évidente serait un outil qui prend le fichier en argument. Les appels d’outils MCP sont du JSON : le fichier voyagerait alors en texte base64 dans la sortie même du modèle — environ 35 000 tokens pour une capture de 100 Ko, et un PDF ne tiendrait pas du tout. Le protocole ne sait pas encore transférer de fichier ; une proposition dans ce sens n’est encore qu’un brouillon.

J’ai donc repris le chemin qu’utilise déjà l’éditeur de Notez. Quand vous déposez une image dans l’éditeur, votre navigateur demande au serveur un import signé et envoie les octets directement au stockage. Un assistant fait la même chose en trois étapes :

  1. Il demande un import. L’outil create_upload prend le nom du fichier, son type et sa taille exacte, et répond avec une commande curl prête à lancer, signée pour ce seul fichier.

  2. Il lance la commande. Le fichier va directement de votre machine au stockage. Rien ne passe par la conversation : un PDF de 20 Mo ne coûte pas plus de tokens qu’un fichier de 20 Ko.

  3. Il confirme. confirm_upload vérifie que le fichier est bien arrivé, puis renvoie un extrait d’une ligne que l’assistant colle dans la note.

La contrainte est simple et assumée : l’étape 2 demande un shell. Les assistants qui exécutent des commandes, comme Claude Code et Cursor, s’en chargent sans qu’on le leur demande. Les clients qui ne font que du chat, comme Claude Desktop, ne le peuvent pas, et ils le disent au lieu de faire semblant : ils vous renvoient vers l’application.

Vérifier que le fichier est vraiment arrivé

Un agent peut annoncer « terminé » à propos d’une commande qui a échoué. Plutôt que de le croire sur parole, confirm_upload interroge le stockage. S’il n’y a rien, l’assistant reçoit la consigne de relancer la commande. Si les octets arrivés n’ont pas la taille déclarée, l’import est refusé et l’assistant recommence. C’est la taille déclarée que votre quota de stockage prend en compte : un fichier qui ment sur sa taille n’est jamais enregistré.

L’extrait, pas le lien — et le bug écarté dès la conception

C’est la partie qui m’a pris le plus de temps.

Notez suit chaque fichier qu’une note utilise. C’est ce suivi qui lui permet de faire le ménage derrière vous : quand vous supprimez une image d’une note, son stockage finit par être libéré, et un fichier importé mais jamais utilisé est supprimé au bout de trois jours. Dans l’éditeur, vous ne voyez rien de tout cela, car chaque image qu’il insère porte un identifiant de fichier caché.

Un assistant écrit le Markdown à la main. Après un import, la chose la plus naturelle du monde pour un modèle, c’est d’écrire un simple lien d’image : ![latency](https://…/grafana.png). Il s’affiche. Il a l’air correct. Et il ne porte aucun identifiant de fichier : pour Notez, la note n’utilise donc pas ce fichier. Trois jours plus tard, le nettoyage le supprime, et une note que vous avez partagée la semaine dernière affiche soudain une image cassée, sans le moindre avertissement.

Je l’ai repéré pendant le développement de la fonctionnalité, pas après sa sortie, et j’ai fermé la porte des deux côtés :

  • L’assistant reçoit le bon balisage. confirm_upload renvoie un extrait qui porte déjà l’identifiant du fichier, et les instructions du serveur demandent à l’assistant de le coller tel quel.

  • Notez refuse le mauvais balisage. Si une écriture dans une note pointe vers un fichier tout juste importé par sa seule adresse, elle est rejetée avec une explication, et l’assistant réessaie avec l’extrait. Les liens vers tout le reste fonctionnent toujours : les images d’autres sites et les fichiers qui se trouvent déjà, en sécurité, dans une autre note.

La même protection couvre le chat IA de l’application : aucun des deux assistants ne peut laisser de bombe à retardement dans vos notes.

Ce qu’il faut savoir avant d’essayer

  • Les fichiers importés sont accessibles par leur adresse exacte, comme les images que vous collez dans l’éditeur. Rien ne les liste et les adresses sont impossibles à deviner, mais n’importez rien que vous ne mettriez pas dans une note.

  • Le stockage appartient au propriétaire de l’espace de travail. Les imports sont décomptés du compte propriétaire de l’espace, quelle que soit la façon dont l’assistant s’est connecté.

  • Les captures d’écran sont stockées en taille réelle. L’éditeur compresse les images dans votre navigateur ; l’import d’un assistant arrive exactement tel que le fichier est sur le disque.

  • Le chat IA de l’application ne peut pas importer. Il tourne dans votre navigateur, sans accès à vos fichiers. Les deux outils d’import, et list_workspaces pour les connexions par identification, sont les seuls que le serveur MCP possède et que le chat n’a pas.

Essayez

  1. Dans Notez, ouvrez Paramètres → Intégrations → Serveur MCP Notez et cliquez sur Générer une clé MCP.

  2. Ajoutez-la à Claude Code avec la commande affichée sur cette page, ou à Cursor avec la configuration JSON.

  3. Demandez quelque chose qui contient un fichier : « Mets ./architecture.png dans ma note Conception système. »

La référence complète — chaque outil, chaque erreur et chaque limite — se trouve dans Configurer le serveur MCP, et Fichiers et pièces jointes couvre les formats et le stockage.

FAQ

Claude Code peut-il importer des images dans Notez ?

Oui. Claude Code exécute des commandes shell : il utilise donc les outils create_upload et confirm_upload pour placer une image ou un fichier local dans n’importe quelle note d’un espace de travail auquel il est connecté.

Est-ce que ça marche dans Claude Desktop ?

Pas d’emblée. L’étape d’import lance une commande curl, et Claude Desktop ne peut pas exécuter de commandes, sauf si vous lui avez donné un outil qui le fait. Il vous dira plutôt d’ajouter le fichier dans l’application.

Quels fichiers un assistant IA peut-il importer ?

Les mêmes que l’éditeur : images (JPG, PNG, GIF, SVG, WEBP, etc.), PDF et documents bureautiques, vidéos, et archives ZIP ou RAR, dans la limite de taille par fichier de votre plan.

Un fichier importé compte-t-il dans mon stockage ?

Oui : dans le stockage du compte propriétaire de l’espace de travail, exactement comme un fichier ajouté dans l’éditeur.

Que signifie NOTE_UPLOAD_NOT_LINKED ?

L’assistant a essayé de lier un fichier importé par sa seule adresse. Notez le refuse, car le fichier ne serait pas suivi et serait supprimé au bout de trois jours. L’assistant doit coller l’extrait renvoyé par confirm_upload ; la plupart réessaient d’eux-mêmes.

À lire aussi