Skip to main content
Glama
scrivener-mcp

scrivener-mcp

by nazaryanenko

Scrivener MCP

A read-only MCP server that connects Claude Desktop to your Scrivener writing projects.

Work in Scrivener, ask Claude for help. Claude can see your entire project - structure, content, notes, synopses - but all writing happens in Scrivener where it belongs.

What can it do?

Point Claude at your novel and ask:

  • "Scan the project and give me an overview"

  • "Find inconsistencies in my character descriptions"

  • "What plot threads are unresolved?"

  • "Where do I mention the lighthouse?"

  • "What's my word count by chapter?"

  • "Read Chapter 3"

Related MCP server: Co-Reading MCP

Supported Platforms

Platform

Client

Status

macOS

Claude Desktop

Supported

Windows

Claude Desktop

Supported

Requirements

  • Python 3.10+

  • Scrivener 3 project (.scriv folder)

  • Claude Desktop

Installation

# Clone the repo
git clone https://github.com/zaphodsdad/scrivener-mcp.git
cd scrivener-mcp

# Create virtual environment
python3 -m venv .venv
source .venv/bin/activate

# Install
pip install -e .

Setup with Claude Desktop

Add to your config file:

  • Mac: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "scrivener": {
      "command": "/path/to/scrivener-mcp/.venv/bin/scrivener-mcp"
    }
  }
}

Restart Claude Desktop. That's it.

Available Tools (10)

Tool

Description

find_projects

Scan common locations for Scrivener projects

open_project

Open a Scrivener project by path

scan_project

Get bird's eye view: chapter titles, word counts, synopses, opening lines

list_binder

Show the binder structure (folders and documents)

read_document

Read a single document by title, path, or UUID

read_chapter

Read a full chapter with all its scenes

search_project

Full-text search across all documents

get_word_counts

Word count statistics by chapter/folder

get_synopsis

Read the synopsis (index card text) for a document

get_notes

Read the inspector notes for a document

  1. Open project: "Open my Scrivener project Neon Syn"

  2. Scan for overview: "Scan the project" - gives chapter summaries without loading everything

  3. Dive deeper: "Read Chapter 3" - read specific chapters as needed

  4. Search: "Search for mentions of the red door" - searches all documents

  5. If you edit in Scrivener: "Re-open the project" to refresh

Example Prompts

  • "Find my Scrivener projects"

  • "Open [project name]"

  • "Scan the project and summarize each chapter"

  • "Read Chapter 1"

  • "Search for mentions of 'lighthouse'"

  • "What's my word count by chapter?"

  • "Show me the synopsis for Chapter 3"

  • "Find plot holes based on the chapter summaries"

How It Works

Scrivener projects are folders containing:

  • A .scrivx XML file (the binder structure)

  • RTF files for each document (Files/Data/{UUID}/content.rtf)

This server parses the XML to understand your project structure, then reads and converts the RTF files to plain text for Claude to analyze.

Why Read-Only?

Scrivener is excellent software. Write in Scrivener. Use this MCP to give Claude context about your work so it can help you think through problems, find inconsistencies, and answer questions about your manuscript.

All writing stays in Scrivener where it belongs.

Limitations

  • Scrivener 3 format only (Scrivener 1/2 not tested)

  • Some RTF formatting may not convert perfectly

  • Read-only by design

  • Re-open project to see changes made in Scrivener

License

MIT

Available Tools

11 tools
find_projectsA

Find Scrivener projects on your computer.

Searches common locations (Documents, Dropbox, iCloud, etc.) for .scriv folders. Use this to discover available projects, then use open_project to load one.

Args: search_path: Optional specific folder to search. If not provided, searches common locations like Documents, Dropbox, iCloud.

Returns: List of found Scrivener projects with their paths.

Inputs: search_path. Returns: result

get_notesA

Get the document notes (inspector notes) for a document.

In Scrivener, document notes appear in the inspector panel and contain author notes, research, reminders, etc.

Args: identifier: Document title, path, or UUID

Returns: The notes text, or a message if no notes exist.

Inputs: identifier (required). Returns: result

get_synopsisA

Get the synopsis (short summary) of a document.

In Scrivener, the synopsis is a brief description shown on index cards in corkboard view. Useful for understanding scene/chapter summaries.

Args: identifier: Document title, path, or UUID

Returns: The synopsis text, or a message if no synopsis exists.

Inputs: identifier (required). Returns: result

get_word_countsA

Get word count statistics for the project or a specific folder.

Args: folder_path: Optional path to a specific folder. If not provided, shows stats for the entire manuscript (Draft folder).

Returns: Word count breakdown by folder/chapter.

Inputs: folder_path. Returns: result

list_binderA

List the binder structure of the Scrivener project.

Shows the hierarchical structure of folders and documents, similar to Scrivener's binder sidebar.

Args: folder_path: Optional path to a specific folder to list (e.g., "Neon Syn/Book One"). If not provided, lists the entire binder.

Returns: Tree representation of the binder structure with: - ๐Ÿ“ for folders - ๐Ÿ“„ for documents - โœ“ for items marked "Include in Compile"

Inputs: folder_path. Returns: result

open_projectB

Open a Scrivener project.

Args: path: Path to the .scriv folder

Returns: Confirmation message with project info

Inputs: path (required). Returns: result

read_chapterA

Read a specific chapter or section of the manuscript.

Reads all documents within the specified chapter/folder, in binder order.

โš ๏ธ For large projects, always read one chapter at a time to avoid timeouts. Use scan_project first to see available chapters.

Args: chapter: Chapter name or path (e.g., "Chapter 01", "Book One/Chapter 05") include_titles: Whether to include document/folder titles as headings

Returns: The chapter text with all its scenes/documents.

Inputs: chapter (required), include_titles. Returns: result

read_documentA

Read the content of a specific document.

Args: identifier: Can be one of: - Document title (e.g., "Chapter 1") - Full path (e.g., "Neon Syn/Book One/Chapter 01/01") - UUID (e.g., "BA3D0D3E-0BC5-4E4F-AEB4-D7203A5215C4")

Returns: The plain text content of the document, with metadata header showing title, path, and word count.

Inputs: identifier (required). Returns: result

scan_projectA

Scan the project and return a structured overview for analysis.

Returns chapter titles, word counts, synopses (if any), and opening lines. This gives you enough context to understand the whole project without loading every document into memory.

Use this to get a bird's eye view, then use read_document or read_chapter(chapter="...") to dive deeper into specific sections.

Args: folder_path: Optional path to scan a specific folder (e.g., "Book One"). If not provided, scans the entire Draft/Manuscript folder.

Returns: Structured overview with chapter summaries, word counts, and opening lines.

Inputs: folder_path. Returns: result

search_projectA

Search for text across all documents in the project.

Args: query: Text or regex pattern to search for case_sensitive: Whether to match case (default: False)

Returns: List of matching documents with excerpts showing the matching lines.

Inputs: query (required), case_sensitive. Returns: result

write_synopsisA

Write the synopsis (index card text) for a document.

The project must be CLOSED in Scrivener, otherwise this fails. Overwrites any existing synopsis. No snapshot is taken.

Args: identifier: Document title, path, or UUID synopsis: The synopsis text to write

Returns: Confirmation message, or an error description.

Inputs: synopsis (required), identifier (required). Returns: result

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelogโ€ฆ

    TDQS

    A3.9/5.0

    Scored across 11 tools

    Disambiguation4/5

    Tools are mostly distinct: read_document and read_chapter overlap somewhat (one reads a single document, the other an entire chapter), but descriptions clarify the difference. scan_project also overlaps with get_word_counts and list_binder, yet it provides a unique high-level overview, reducing confusion.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun pattern (open_project, list_binder, read_document, get_synopsis, etc.). While verbs vary (open, list, read, get, search, scan), the structure is uniform and predictable.

    Tool Count5/5

    With 11 tools, the server is well-scoped for a Scrivener project interaction tool. Each tool covers a meaningful aspect of browsing, reading, searching, and managing project metadata without unnecessary bloat.

    Completeness3/5

    The tool set strongly favors reading and analysis, with only write_synopsis as a write operation. It lacks document editing, creation, deletion, or renaming, which are significant gaps for a writing application. Core read/search/scan workflows are covered, but the write surface is very limited.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      D
      maintenance
      Read-only MCP server that gives Claude live access to your UE5 project state โ€” Blueprints, interfaces, variables, functions, event graphs, materials, structs, and Data Assets.
      -
    • A
      license
      Not graded
      quality
      F
      maintenance
      An MCP server that enables Claude Desktop to search and read local documents via full-text and fuzzy search, providing direct access to indexed files without chunking.
      MIT