accueil / serveurs / Dev & Code / io.github.writerslogic/scrivener-mcp
io.github.writerslogic/scrivener-mcp
serveur MCP (Model Context Protocol)
Aucun comportement malveillant détecté au test comportemental.
Est-ce que io.github.writerslogic/scrivener-mcp est sûr ?
Au dernier audit MCP Hub, le serveur MCP « io.github.writerslogic/scrivener-mcp » est classé « Vérifié ». Aucun comportement malveillant détecté au test comportemental. Le verdict est réévalué en continu ; consultez la fiche pour l'état à jour.
Méthode : MCP Hub analyse la description de chaque outil (couche 1) et, pour le verdict fort, exécute le serveur dans une micro-VM isolée avec leurres et réseau bloqué (couche 2). On publie des noms et des compteurs, jamais le contenu brut renvoyé par un outil.
Versions auditées & empreintes
Vérifiez la version que vous utilisez : son empreinte doit correspondre à celle listée ici — sinon vous n'utilisez pas la version auditée.
Vous utilisez ce serveur ? Suivez-le (créez un compte) pour être alerté dès qu'une nouvelle version paraît ou que le verdict change.
Les 15 outils
- list_skills≈ 110 tokens
List the available skills (tool groups) — project, documents, search, analysis, compilation, memory, relationships — with a description, the tool count, whether the skill is already active, and its tool names. Use this to discover capabilities, then call use_skill to activate a group whose tools you need. Takes no parameters.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "list_skills", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - use_skill≈ 165 tokens
Activate a skill so its tools become available to call. Returns the activated skill's tool names and their schemas; clients that support tools/list_changed will also see the new tools appear automatically. Call list_skills first to see the available skill names. Tools are progressively disclosed, so activate the skill you need before using its tools (most tools are pre-activated by default).
Paramètres, retour & exemple (1)
Paramètresname· string · requis
The skill to activate, e.g. "documents", "search", or "analysis". Get valid names from list_skills.
Exemple d'appel{"name": "use_skill", "arguments": {"name": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - open_project≈ 190 tokens
Open a Scrivener project and make it the active project for this session. Every document, structure, search, and analysis tool operates on the project opened here, so call this first. Accepts the path to a .scriv folder or the .scrivx file inside it and resolves the project automatically. Returns the project title, author, and metadata. Opening a project closes any project already open. If you do not know the path, call discover_projects first.
Paramètres, retour & exemple (1)
Paramètrespath· string · requis
Path to the Scrivener project: either the .scriv folder (e.g. "~/Documents/My Novel.scriv") or the .scrivx file inside it. Absolute or ~-relative.
Exemple d'appel{"name": "open_project", "arguments": {"path": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_structure≈ 339 tokens
Return the binder hierarchy of the open project: its folders and documents in tree order, each with id, title, type, depth, and word count. Use this to understand the manuscript layout and to obtain the document ids that read_document, write_document, and the analysis tools require. By default returns a compact flat array of [id, title, type, depth, wordCount, hasChildren] tuples to save tokens; set summaryOnly for just project-level counts. Requires an open project (call open_project first).
Paramètres, retour & exemple (5)
Paramètresflat· boolean · optionnel
When true (default), return a compact flat array of [id, title, type, depth, wordCount, hasChildren] tuples. When false, return the nested tree object.folderId· string · optionnel
UUID of a binder folder, as returned by get_structure.maxDepth· number · optionnel
Maximum depth to descend into the binder tree, starting at 0 for top-level items. Omit to return the full hierarchy.summaryOnly· boolean · optionnel
When true, skip the tree and return only project-level counts (documents, words) plus title and author. Default false.includeTrash· boolean · optionnel
Set true to include trashed items in the result. Default false.
Exemple d'appel{"name": "get_structure", "arguments": {"flat": true, "folderId": "texte", "maxDepth": 1, "summaryOnly": true, "includeTrash": true}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - refresh_project≈ 92 tokens
Reload the open project from disk, discarding the in-memory cache. Use this when the project has been changed by the Scrivener app or another process while open here, so that subsequent reads reflect the latest saved state. Requires an open project. Takes no parameters.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "refresh_project", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - close_project≈ 109 tokens
Close the currently open project, flush any pending memory/auto-save state, and clear the active session. After this, document and analysis tools have no project to act on until open_project is called again. Use this to switch projects cleanly or release file handles at the end of a session. Requires an open project. Takes no parameters.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "close_project", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - discover_projects≈ 184 tokens
Scan common locations (Documents, Desktop, and iCloud Mobile Documents) for Scrivener projects and return the paths of every .scriv folder found, searching up to three levels deep. Use this when the user refers to their project by name rather than path ("open my novel"): present the results and pass the chosen path to open_project. Does not open anything itself. Returns a list of project paths, or a message if none are found.
Paramètres, retour & exemple (1)
ParamètressearchPath· string · optionnel
Optional extra directory to search in addition to the default locations, e.g. an external drive or a custom projects folder. Absolute or ~-relative path.
Exemple d'appel{"name": "discover_projects", "arguments": {"searchPath": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - detect_open_project≈ 221 tokens
Detect which Scrivener project the user currently has open in the desktop Scrivener app, so you can act on it without asking for a path. Use this when the user says "my project", "the project I have open", or gives a command with no project specified. Reads the open window names from the running app and resolves them to .scriv paths on disk; it does not open anything. If exactly one project is open, pass its path to open_project. macOS only right now (returns supported=false elsewhere; fall back to discover_projects). The first use may prompt macOS to allow the client app to control Scrivener.
Paramètres, retour & exemple (1)
ParamètressearchPath· string · optionnel
Optional extra directory to resolve project names against, in addition to the default locations. Absolute or ~-relative path.
Exemple d'appel{"name": "detect_open_project", "arguments": {"searchPath": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_compile_settings≈ 171 tokens
Return the project's compile-format definitions (from Settings/compile.xml) and its taxonomy: the named compile formats and their section-layout counts, the current output file type, label and status definitions (with colors), saved collections, and user-defined section types. Use this to discover what compile formats and metadata categories a project defines before compiling or organizing. Read-only; does not run a compile. If a project has never been compiled, hasCompileSettings is false and only the taxonomy is returned. Requires an open project (call open_project first).
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "get_compile_settings", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_manuscript_briefing≈ 135 tokens
One "where am I?" snapshot of the whole manuscript: total word count against the project draft target (with percent-to-goal and deadline), document/folder counts, the per-status and per-label breakdown, and the longest and shortest documents. Use this right after open_project to orient before diving in, instead of stitching get_statistics, get_writing_goals, and get_compile_settings together. Read-only. Requires an open project.
Paramètres, retour & exemple (0)
Exemple d'appel{"name": "get_manuscript_briefing", "arguments": {}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - list_snapshots≈ 178 tokens
List the snapshots Scrivener has saved of a project's documents (from the .scriv package's Snapshots/ directory). Pass documentId to list one document's snapshots, or omit it to list snapshots for every document that has any. Each entry gives the owning document id and title, a snapshotId (pass it to read_snapshot to get the text), the snapshot's title, and its date. Read-only. Returns an empty list when nothing has been snapshotted. Requires an open project (call open_project first).
Paramètres, retour & exemple (1)
ParamètresdocumentId· string · optionnel
UUID of a single document to list snapshots for. Omit to list all documents.
Exemple d'appel{"name": "list_snapshots", "arguments": {"documentId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - read_snapshot≈ 141 tokens
Return the text of a single document snapshot. Pass the documentId and the snapshotId from list_snapshots. The snapshot's RTF is converted to plain text. Read-only; does not alter the document or restore the snapshot. Requires an open project (call open_project first).
Paramètres, retour & exemple (2)
ParamètresdocumentId· string · requis
UUID of the document.snapshotId· string · requis
Snapshot id from list_snapshots.
Exemple d'appel{"name": "read_snapshot", "arguments": {"documentId": "texte", "snapshotId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - compare_snapshot≈ 205 tokens
Compare a document snapshot against the current document text, or against another snapshot (pass againstSnapshotId). Returns the paragraphs added and removed and the net word-count change — use this to see what changed since a snapshot was taken. Read-only. Requires an open project (call open_project first). Get snapshot ids from list_snapshots.
Paramètres, retour & exemple (3)
ParamètresdocumentId· string · requis
UUID of the document.snapshotId· string · requis
The baseline snapshot id (from list_snapshots).againstSnapshotId· string · optionnel
Optional second snapshot id to compare against. Omit to compare against the current document text.
Exemple d'appel{"name": "compare_snapshot", "arguments": {"documentId": "texte", "snapshotId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - create_snapshot≈ 174 tokens
Take a Scrivener-native snapshot of a document's current content, restorable from Scrivener's own Snapshots browser. Use this before rewriting a document to give the writer a native rollback point. Copies the live content into the project's Snapshots directory with a title and timestamp; does not modify the document. Requires an open project and a document that has content.
Paramètres, retour & exemple (2)
Paramètrestitle· string · optionnel
Snapshot title shown in Scrivener. Defaults to "Snapshot".documentId· string · requis
UUID of the document to snapshot.
Exemple d'appel{"name": "create_snapshot", "arguments": {"documentId": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - verify_project_integrity≈ 220 tokens
Scan the open project for structural problems and return a read-only report: binder entries with missing, malformed, or duplicate UUIDs, entries missing their type, and text documents whose backing content is unreadable or empty. Use when a project looks corrupted, after manual edits to the .scrivx file, or before a bulk operation; not when you just want the document tree (use get_structure) or a single document (use get_document_info). This tool only detects problems and never repairs them. related: get_structure, get_document_info. Requires an open project.
Paramètres, retour & exemple (1)
ParamètresincludeTrash· boolean · optionnel
Whether to also verify documents in the project trash. Defaults to true so the whole project is checked; set false to skip trashed items.
Exemple d'appel{"name": "verify_project_integrity", "arguments": {"includeTrash": true}}Exemple de retour{"content": [{"type": "text", "text": "…"}]}
Badge pour votre README
Ce serveur a passé le pentest comportemental. Le badge porte son nom et renvoie à cette fiche — la preuve, c'est la fiche (verdict live qu'on contrôle), pas l'image.
[](https://dokore.fr/serveur/io.github.writerslogic--scrivener-mcp)
<a href="https://dokore.fr/serveur/io.github.writerslogic--scrivener-mcp"><img src="https://dokore.fr/badge/io.github.writerslogic--scrivener-mcp.svg" alt="Vérifié par MCP Hub" height="20"></a>
Réévalué en continu : si le comportement change, le verdict tombe et le badge disparaît. Un badge qui ne pointe pas vers une fiche dokore.fr ne prouve rien. Comment ça marche
C'est votre serveur ?
Revendiquez-le sur l'espace créateur (preuve GitHub, domaine ou npm) pour afficher le badge « propriétaire vérifié » et lancer un pentest comportemental à la demande afin d'obtenir le badge « Vérifié ».
Source
scrivener-mcp@0.12.0