Skip to content

Référence des outils MCP

Cette page documente tous les outils MCP disponibles lorsque Claude (ou d'autres assistants IA) se connecte à VMark.

VMark expose un ensemble d'outils composites, d'outils de protocole et de ressources — tous documentés ci-dessous. Les outils composites utilisent un paramètre action pour sélectionner l'opération — cela réduit les frais généraux de jetons tout en gardant toutes les capacités accessibles.

Flux de travail recommandé

Pour la plupart des tâches d'écriture, vous n'avez besoin que d'une poignée d'actions :

Comprendre : structureget_digest, documentsearchLire : structureget_section, documentread_paragraph / get_contentÉcrire : structureupdate_section / insert_section, documentwrite_paragraph / smart_insertContrôler : editorundo / redo, suggestionsaccept / rejectFichiers : workspacesave, tabsswitch / list

Les actions restantes offrent un contrôle fin pour les scénarios d'automatisation avancés.

Diagrammes Mermaid

Lors de l'utilisation de l'IA pour générer des diagrammes Mermaid via MCP, envisagez d'installer le serveur MCP mermaid-validator — il détecte les erreurs de syntaxe en utilisant les mêmes parseurs Mermaid v11 avant que les diagrammes n'atteignent votre document.


document

Lire, écrire, rechercher et transformer le contenu du document. 12 actions.

Toutes les actions acceptent un paramètre optionnel windowId (chaîne) pour cibler une fenêtre spécifique. Par défaut, la fenêtre mise au point.

get_content

Obtenir le contenu complet du document sous forme de texte markdown.

set_content

Remplacer l'intégralité du contenu du document.

ParamètreTypeRequisDescription
contentstringOuiNouveau contenu du document (markdown pris en charge).

Documents vides uniquement

Pour des raisons de sécurité, cette action n'est autorisée que lorsque le document cible est vide. Pour les documents non vides, utilisez plutôt insert_at_cursor, apply_diff ou selectionreplace — ceux-ci créent des suggestions qui nécessitent l'approbation de l'utilisateur.

insert_at_cursor

Insérer du texte à la position actuelle du curseur.

ParamètreTypeRequisDescription
textstringOuiTexte à insérer (markdown pris en charge).

Retourne : { message, position, suggestionId?, applied }

Système de suggestions

Par défaut, cette action crée une suggestion qui nécessite l'approbation de l'utilisateur. Le texte apparaît comme aperçu fantôme. Les utilisateurs peuvent accepter (Entrée) ou rejeter (Échap). Si Approuver automatiquement les modifications est activé dans Paramètres → Intégrations, les changements sont appliqués immédiatement.

insert_at_position

Insérer du texte à une position de caractère spécifique.

ParamètreTypeRequisDescription
textstringOuiTexte à insérer (markdown pris en charge).
positionnumberOuiPosition du caractère (indexé à partir de 0).

Retourne : { message, position, suggestionId?, applied }

Rechercher du texte dans le document.

ParamètreTypeRequisDescription
querystringOuiTexte à rechercher.
caseSensitivebooleanNonRecherche sensible à la casse. Par défaut : false.

Retourne : Tableau de correspondances avec positions et numéros de ligne.

replace_in_source

Remplacer du texte au niveau source markdown, en contournant les frontières de nœuds ProseMirror.

ParamètreTypeRequisDescription
searchstringOuiTexte à trouver dans la source markdown.
replacestringOuiTexte de remplacement (markdown pris en charge).
allbooleanNonRemplacer toutes les occurrences. Par défaut : false.

Retourne : { count, message, suggestionIds?, applied }

Quand l'utiliser

Utilisez d'abord apply_diff — c'est plus rapide et plus précis. Revenez à replace_in_source uniquement lorsque le texte recherché traverse des frontières de formatage (gras, italique, liens, etc.) et que apply_diff ne peut pas le trouver.

batch_edit

Appliquer plusieurs opérations de manière atomique.

ParamètreTypeRequisDescription
operationsarrayOuiTableau d'opérations (max 100).
baseRevisionstringOuiRévision attendue pour la détection des conflits.
requestIdstringNonClé d'idempotence.
modestringNondryRun pour prévisualiser sans appliquer. L'application vs suggestion est contrôlée par le paramètre utilisateur.

Chaque opération nécessite type (update, insert, delete, format ou move), nodeId et optionnellement text/content.

Retourne : { success, changedNodeIds[], suggestionIds[] }

apply_diff

Trouver et remplacer du texte avec contrôle de la politique de correspondance.

ParamètreTypeRequisDescription
originalstringOuiTexte à trouver.
replacementstringOuiTexte de remplacement.
baseRevisionstringOuiRévision attendue pour la détection des conflits.
matchPolicystringNonfirst, all, nth ou error_if_multiple. Par défaut : first.
nthnumberNonQuelle correspondance remplacer (indexé à partir de 0, pour la politique nth).
scopeQueryobjectNonFiltre de portée pour restreindre la recherche.
modestringNondryRun pour prévisualiser sans appliquer. L'application vs suggestion est contrôlée par le paramètre utilisateur.

Retourne : { matchCount, appliedCount, matches[], suggestionIds[] }

replace_anchored

Remplacer du texte en utilisant l'ancrage de contexte pour un ciblage précis.

ParamètreTypeRequisDescription
anchorobjectOui{ text, beforeContext, afterContext }
replacementstringOuiTexte de remplacement.
baseRevisionstringOuiRévision attendue pour la détection des conflits.
modestringNondryRun pour prévisualiser sans appliquer. L'application vs suggestion est contrôlée par le paramètre utilisateur.

read_paragraph

Lire un paragraphe du document par index ou correspondance de contenu.

ParamètreTypeRequisDescription
targetobjectOui{ index: 0 } ou { containing: "texte" }
includeContextbooleanNonInclure les paragraphes environnants. Par défaut : false.

Retourne : { index, content, wordCount, charCount, position, context? }

write_paragraph

Modifier un paragraphe dans le document.

ParamètreTypeRequisDescription
baseRevisionstringOuiRévision du document pour la détection des conflits.
targetobjectOui{ index: 0 } ou { containing: "texte" }
operationstringOuireplace, append, prepend ou delete.
contentstringConditionnelNouveau contenu (requis sauf pour delete).
modestringNondryRun pour prévisualiser sans appliquer. L'application vs suggestion est contrôlée par le paramètre utilisateur.

Retourne : { success, message, suggestionId?, applied, newRevision? }

smart_insert

Insérer du contenu à des emplacements communs dans le document.

ParamètreTypeRequisDescription
baseRevisionstringOuiRévision du document pour la détection des conflits.
destinationvariesOuiOù insérer (voir ci-dessous).
contentstringOuiContenu markdown à insérer.
modestringNondryRun pour prévisualiser sans appliquer. L'application vs suggestion est contrôlée par le paramètre utilisateur.

Options de destination :

  • "end_of_document" — Insérer à la fin
  • "start_of_document" — Insérer au début
  • { after_paragraph: 2 } — Insérer après le paragraphe à l'index 2
  • { after_paragraph_containing: "conclusion" } — Insérer après le paragraphe contenant ce texte
  • { after_section: "Introduction" } — Insérer après le titre de section

Retourne : { success, message, suggestionId?, applied, newRevision?, insertedAt? }

Quand utiliser

  • Documents structurés (avec titres) : Utilisez structureget_section, update_section, insert_section
  • Documents plats (sans titres) : Utilisez documentread_paragraph, write_paragraph, smart_insert
  • Fin de document : Utilisez documentsmart_insert avec "end_of_document"

structure

Requêtes sur la structure du document et opérations de section. 8 actions.

Toutes les actions acceptent un paramètre optionnel windowId.

get_ast

Obtenir l'arbre syntaxique abstrait du document.

ParamètreTypeRequisDescription
projectionstring[]NonChamps à inclure : id, type, text, attrs, marks, children.
filterobjectNonFiltrer par type, level, contains, hasMarks.
limitnumberNonRésultats maximum.
offsetnumberNonNombre à ignorer.
afterCursorstringNonID de nœud pour la pagination par curseur.

Retourne : AST complet avec types de nœuds, positions et contenu.

get_digest

Obtenir un résumé compact de la structure du document.

Retourne : { revision, title, wordCount, charCount, outline[], sections[], blockCounts, hasImages, hasTables, hasCodeBlocks, languages[] }

list_blocks

Lister tous les blocs du document avec leurs ID de nœud.

ParamètreTypeRequisDescription
queryobjectNonFiltrer par type, level, contains, hasMarks.
projectionstring[]NonChamps à inclure.
limitnumberNonRésultats maximum.
afterCursorstringNonID de nœud pour la pagination par curseur.

Retourne : { revision, blocks[], hasMore, nextCursor? }

Les ID de nœuds utilisent des préfixes : h-0 (titre), p-0 (paragraphe), code-0 (bloc de code), etc.

resolve_targets

Vérification préalable pour les mutations — trouver des nœuds par requête.

ParamètreTypeRequisDescription
queryobjectOuiCritères de requête : type, level, contains, hasMarks.
maxResultsnumberNonCandidats maximum.

Retourne : Positions cibles résolues et types.

get_section

Obtenir le contenu d'une section du document (titre et son contenu jusqu'au prochain titre de même niveau ou supérieur).

ParamètreTypeRequisDescription
headingstring | objectOuiTexte du titre (chaîne) ou { level, index }.
includeNestedbooleanNonInclure les sous-sections.

Retourne : Contenu de la section avec titre, corps et positions.

update_section

Mettre à jour le contenu d'une section.

ParamètreTypeRequisDescription
baseRevisionstringOuiRévision du document.
targetobjectOui{ heading, byIndex, ou sectionId }
newContentstringOuiNouveau contenu de la section (markdown).
modestringNondryRun pour prévisualiser sans appliquer. L'application vs suggestion est contrôlée par le paramètre utilisateur.

insert_section

Insérer une nouvelle section.

ParamètreTypeRequisDescription
baseRevisionstringOuiRévision du document.
afterobjectNonCible de section après laquelle insérer.
sectionHeadingobjectOui{ level, text } — niveau de titre (1-6) et texte.
contentstringNonContenu du corps de la section.
modestringNondryRun pour prévisualiser sans appliquer. L'application vs suggestion est contrôlée par le paramètre utilisateur.

move_section

Déplacer une section vers un nouvel emplacement.

ParamètreTypeRequisDescription
baseRevisionstringOuiRévision du document.
sectionobjectOuiSection à déplacer : { heading, byIndex, ou sectionId }.
afterobjectNonCible de section après laquelle déplacer.
modestringNondryRun pour prévisualiser sans appliquer. L'application vs suggestion est contrôlée par le paramètre utilisateur.

selection

Lire et manipuler la sélection de texte et le curseur. 5 actions.

Toutes les actions acceptent un paramètre optionnel windowId.

get

Obtenir la sélection de texte actuelle.

Retourne : { text, range: { from, to }, isEmpty }

set

Définir la plage de sélection.

ParamètreTypeRequisDescription
fromnumberOuiPosition de début (inclusive).
tonumberOuiPosition de fin (exclusive).

TIP

Utilisez la même valeur pour from et to pour positionner le curseur sans sélectionner de texte.

replace

Remplacer le texte sélectionné par un nouveau texte.

ParamètreTypeRequisDescription
textstringOuiTexte de remplacement (markdown pris en charge).

Retourne : { message, range, originalContent, suggestionId?, applied }

Système de suggestions

Par défaut, cette action crée une suggestion qui nécessite l'approbation de l'utilisateur. Le texte original apparaît avec un barré, et le nouveau texte apparaît comme texte fantôme. Si Approuver automatiquement les modifications est activé dans Paramètres → Intégrations, les changements sont appliqués immédiatement.

get_context

Obtenir le texte entourant le curseur pour comprendre le contexte.

ParamètreTypeRequisDescription
linesBeforenumberNonLignes avant le curseur. Par défaut : 3.
linesAfternumberNonLignes après le curseur. Par défaut : 3.

Retourne : { before, after, currentLine, currentParagraph, block }

L'objet block contient :

ChampTypeDescription
typestringType de bloc : paragraph, heading, codeBlock, blockquote, etc.
levelnumberNiveau de titre 1-6 (uniquement pour les titres)
languagestringLangage du code (uniquement pour les blocs de code avec un langage défini)
inListstringType de liste si à l'intérieur d'une liste : bullet, ordered ou task
inBlockquotebooleantrue si à l'intérieur d'une citation
inTablebooleantrue si à l'intérieur d'un tableau
positionnumberPosition dans le document où commence le bloc

set_cursor

Définir la position du curseur (efface la sélection).

ParamètreTypeRequisDescription
positionnumberOuiPosition du caractère (indexé à partir de 0).

format

Formatage du texte, types de blocs, listes et opérations par lots sur les listes. 10 actions.

Toutes les actions acceptent un paramètre optionnel windowId.

toggle

Basculer une marque de formatage sur la sélection actuelle.

ParamètreTypeRequisDescription
markstringOuibold, italic, code, strike, underline ou highlight

Créer un lien hypertexte sur le texte sélectionné.

ParamètreTypeRequisDescription
hrefstringOuiURL du lien.
titlestringNonTitre du lien (infobulle).

Supprimer le lien hypertexte de la sélection. Aucun paramètre supplémentaire.

clear

Supprimer tout le formatage de la sélection. Aucun paramètre supplémentaire.

set_block_type

Convertir le bloc actuel en un type spécifique.

ParamètreTypeRequisDescription
blockTypestringOuiparagraph, heading, codeBlock ou blockquote
levelnumberConditionnelNiveau de titre 1-6 (requis pour heading).
languagestringNonLangage du code (pour codeBlock).

insert_hr

Insérer une règle horizontale (---) au curseur. Aucun paramètre supplémentaire.

toggle_list

Basculer le type de liste sur le bloc actuel.

ParamètreTypeRequisDescription
listTypestringOuibullet, ordered ou task

indent_list

Augmenter l'indentation de l'élément de liste actuel. Aucun paramètre supplémentaire.

outdent_list

Diminuer l'indentation de l'élément de liste actuel. Aucun paramètre supplémentaire.

list_modify

Modifier par lots la structure et le contenu d'une liste.

ParamètreTypeRequisDescription
baseRevisionstringOuiRévision du document.
targetobjectOui{ listId }, { selector } ou { listIndex }
operationsarrayOuiTableau d'opérations sur la liste.
modestringNondryRun pour prévisualiser sans appliquer. L'application vs suggestion est contrôlée par le paramètre utilisateur.

Opérations : add_item, delete_item, update_item, toggle_check, reorder, set_indent


table

Opérations sur les tableaux. 3 actions.

Toutes les actions acceptent un paramètre optionnel windowId.

insert

Insérer un nouveau tableau au curseur.

ParamètreTypeRequisDescription
rowsnumberOuiNombre de lignes (au moins 1).
colsnumberOuiNombre de colonnes (au moins 1).
withHeaderRowbooleanNonInclure une ligne d'en-tête. Par défaut : true.

delete

Supprimer le tableau à la position du curseur. Aucun paramètre supplémentaire.

modify

Modifier par lots la structure et le contenu d'un tableau.

ParamètreTypeRequisDescription
baseRevisionstringOuiRévision du document.
targetobjectOui{ tableId }, { afterHeading } ou { tableIndex }
operationsarrayOuiTableau d'opérations sur le tableau.
modestringNondryRun pour prévisualiser sans appliquer. L'application vs suggestion est contrôlée par le paramètre utilisateur.

Opérations : add_row, delete_row, add_column, delete_column, update_cell, set_header


editor

Opérations d'état de l'éditeur. 3 actions.

Toutes les actions acceptent un paramètre optionnel windowId.

undo

Annuler la dernière action d'édition.

redo

Rétablir la dernière action annulée.

focus

Mettre au point l'éditeur (le mettre au premier plan, prêt pour la saisie).


workspace

Gérer les documents, fenêtres et état de l'espace de travail. 12 actions.

Les actions qui opèrent sur une fenêtre spécifique acceptent un paramètre optionnel windowId.

list_windows

Lister toutes les fenêtres VMark ouvertes.

Retourne : Tableau de { label, title, filePath, isFocused, isAiExposed }

get_focused

Obtenir le label de la fenêtre mise au point.

focus_window

Mettre au point une fenêtre spécifique.

ParamètreTypeRequisDescription
windowIdstringOuiLabel de la fenêtre à mettre au point.

new_document

Créer un nouveau document vide.

ParamètreTypeRequisDescription
titlestringNonTitre optionnel du document.

open_document

Ouvrir un document depuis le système de fichiers.

ParamètreTypeRequisDescription
pathstringOuiChemin de fichier à ouvrir.

save

Enregistrer le document actuel.

save_as

Enregistrer le document vers un nouveau chemin.

ParamètreTypeRequisDescription
pathstringOuiNouveau chemin de fichier.

get_document_info

Obtenir les métadonnées du document.

Retourne : { filePath, isDirty, title, wordCount, charCount }

close_window

Fermer une fenêtre.

list_recent_files

Lister les fichiers ouverts récemment.

Retourne : Tableau de { path, name, timestamp } (jusqu'à 10 fichiers, les plus récents en premier).

get_info

Obtenir des informations sur l'état actuel de l'espace de travail.

Retourne : { isWorkspaceMode, rootPath, workspaceName }

reload_document

Recharger le document actif depuis le disque.

ParamètreTypeRequisDescription
forcebooleanNonForcer le rechargement même si le document a des modifications non enregistrées. Par défaut : false.

Échoue si le document est sans titre ou a des modifications non enregistrées sans force: true.


tabs

Gérer les onglets de l'éditeur dans les fenêtres. 6 actions.

Toutes les actions acceptent un paramètre optionnel windowId.

list

Lister tous les onglets dans une fenêtre.

Retourne : Tableau de { id, title, filePath, isDirty, isActive }

switch

Basculer vers un onglet spécifique.

ParamètreTypeRequisDescription
tabIdstringOuiID de l'onglet vers lequel basculer.

close

Fermer un onglet.

ParamètreTypeRequisDescription
tabIdstringNonID de l'onglet à fermer. Par défaut, l'onglet actif.

create

Créer un nouvel onglet vide.

Retourne : { tabId }

get_info

Obtenir des informations détaillées sur un onglet.

ParamètreTypeRequisDescription
tabIdstringNonID de l'onglet. Par défaut, l'onglet actif.

Retourne : { id, title, filePath, isDirty, isActive }

reopen_closed

Rouvrir l'onglet fermé le plus récemment.

Retourne : { tabId, filePath, title } ou message si aucun n'est disponible.

VMark garde la trace des 10 derniers onglets fermés par fenêtre.


media

Insérer des maths, diagrammes, médias, liens wiki et mise en forme CJK. 11 actions.

Toutes les actions acceptent un paramètre optionnel windowId.

math_inline

Insérer des maths LaTeX en ligne.

ParamètreTypeRequisDescription
latexstringOuiExpression LaTeX (ex. E = mc^2).

math_block

Insérer une équation mathématique au niveau bloc.

ParamètreTypeRequisDescription
latexstringOuiExpression LaTeX.

mermaid

Insérer un diagramme Mermaid.

ParamètreTypeRequisDescription
codestringOuiCode du diagramme Mermaid.

markmap

Insérer une carte mentale Markmap. Utilise des titres Markdown standard pour définir l'arbre.

ParamètreTypeRequisDescription
codestringOuiMarkdown avec des titres définissant l'arbre de la carte mentale.

svg

Insérer un graphique SVG. Le SVG s'affiche en ligne avec panoramique, zoom et export PNG.

ParamètreTypeRequisDescription
codestringOuiBalisage SVG (XML valide avec racine <svg>).

Insérer un lien de style wiki.

ParamètreTypeRequisDescription
targetstringOuiCible du lien (nom de page).
displayTextstringNonTexte d'affichage (si différent de la cible).

Résultat : [[target]] ou [[target|displayText]]

video

Insérer un élément vidéo HTML5.

ParamètreTypeRequisDescription
srcstringOuiChemin ou URL du fichier vidéo.
baseRevisionstringOuiRévision du document.
titlestringNonAttribut titre.
posterstringNonChemin ou URL de l'image de couverture.

audio

Insérer un élément audio HTML5.

ParamètreTypeRequisDescription
srcstringOuiChemin ou URL du fichier audio.
baseRevisionstringOuiRévision du document.
titlestringNonAttribut titre.

video_embed

Insérer un embed vidéo (iframe). Prend en charge YouTube (sans publicité), Vimeo et Bilibili.

ParamètreTypeRequisDescription
videoIdstringOuiID vidéo (YouTube : 11 caractères, Vimeo : numérique, Bilibili : BV ID).
baseRevisionstringOuiRévision du document.
providerstringNonyoutube (par défaut), vimeo ou bilibili.

cjk_punctuation

Convertir la ponctuation entre demi-largeur et pleine largeur.

ParamètreTypeRequisDescription
directionstringOuito-fullwidth ou to-halfwidth.

cjk_spacing

Ajouter ou supprimer l'espacement entre les caractères CJK et latins.

ParamètreTypeRequisDescription
spacingActionstringOuiadd ou remove.

suggestions

Gérer les suggestions de modification générées par l'IA en attente d'approbation de l'utilisateur. 5 actions.

Lorsque l'IA utilise documentinsert_at_cursor / insert_at_position / replace_in_source, selectionreplace ou documentapply_diff / batch_edit, les changements sont mis en file d'attente comme suggestions qui nécessitent l'approbation de l'utilisateur.

Toutes les actions acceptent un paramètre optionnel windowId.

Sécurité annulation/rétablissement

Les suggestions ne modifient pas le document jusqu'à leur acceptation. Cela préserve la fonctionnalité complète d'annulation/rétablissement — les utilisateurs peuvent annuler après acceptation, et le rejet ne laisse aucune trace dans l'historique.

Mode d'approbation automatique

Si Approuver automatiquement les modifications est activé dans Paramètres → Intégrations, les changements s'appliquent directement sans créer de suggestions. Les actions ci-dessous ne sont nécessaires que lorsque l'approbation automatique est désactivée (par défaut).

list

Lister toutes les suggestions en attente.

Retourne : { suggestions: [...], count, focusedId }

Chaque suggestion inclut id, type (insert, replace, delete), from, to, newContent, originalContent et createdAt.

accept

Accepter une suggestion spécifique, en appliquant ses changements au document.

ParamètreTypeRequisDescription
suggestionIdstringOuiID de la suggestion à accepter.

reject

Rejeter une suggestion spécifique, en la supprimant sans changements.

ParamètreTypeRequisDescription
suggestionIdstringOuiID de la suggestion à rejeter.

accept_all

Accepter toutes les suggestions en attente dans l'ordre du document.

reject_all

Rejeter toutes les suggestions en attente.


Outils de protocole

Deux outils autonomes pour interroger les capacités du serveur et l'état du document. Ceux-ci n'utilisent pas le modèle composite action.

get_capabilities

Obtenir les capacités du serveur MCP et les outils disponibles.

Retourne : { version, supportedNodeTypes[], supportedQueryOperators[], limits, features }

get_document_revision

Obtenir la révision actuelle du document pour le verrouillage optimiste.

ParamètreTypeRequisDescription
windowIdstringNonIdentifiant de fenêtre.

Retourne : { revision, lastUpdated }

Utilisez la révision dans les actions de mutation pour détecter les modifications concurrentes.


Ressources MCP

En plus des outils, VMark expose ces ressources en lecture seule :

URI de ressourceDescription
vmark://document/outlineHiérarchie des titres du document
vmark://document/metadataMétadonnées du document (chemin, nombre de mots, etc.)
vmark://windows/listListe des fenêtres ouvertes
vmark://windows/focusedLabel de la fenêtre actuellement mise au point