Scrivener MCP Server
The Scrivener MCP Server lets AI assistants directly interact with Scrivener projects — reading, writing, analyzing, and managing your manuscripts through conversation, no copy-pasting required.
Project & Document Management
Open, close, refresh, and auto-discover Scrivener projects
Browse the full binder hierarchy (folders, documents, word counts)
Create, read, write, rename, move, delete, and restore documents
Update metadata: title, synopsis, notes, label, status, custom fields
Access annotations, comments, and footnotes
Search & Discovery
Full-text keyword, regex, and semantic (vector-based) search across documents
Find passages by meaning, not just keywords; hybrid search combining both approaches
Locate all mentions of specific characters, places, or terms with context
Search trash and restore deleted documents
Writing Analysis
Analyze documents for readability, pacing, sentiment, themes, and character presence
Check project-wide consistency (characters, timeline, locations, plot threads)
Detect contradictions and continuity errors across chapters
Track recurring motifs, themes, and symbols
Multi-agent analysis (editor, critic, researcher, stylist, plotter)
AI-Powered Enhancement
Improve prose: grammar, style, clarity, filter words, showing vs. telling, dialogue, pacing
Generate new content from a prompt with project context
Start real-time writing, editing, or brainstorming sessions
Memory & Knowledge
Store and retrieve persistent character profiles, world-building notes, plot threads, and style guides across sessions
Ingest documents into a Holographic Memory System (HMS) for fractal/semantic retrieval
Find analogies (A:B :: C:?) within the story
Relationships & Story Graph
Define and query relationships between characters, locations, themes, and plot threads
Analyze the full character relationship network
Discover entity co-occurrences across the manuscript
Sync to Neo4j for advanced graph analysis
Compile & Export
Compile documents into a single manuscript (text, Markdown, HTML)
AI-optimized compilation targeting agent submissions, query letters, pitches, etc.
Export to Markdown, HTML, JSON, or EPUB
Generate marketing materials: synopsis, query letter, pitch packet, elevator pitch, book blurb
Background Jobs
Queue and monitor long-running NLP analysis tasks for documents or entire projects
Build and rebuild the semantic vector search index
View job queue statistics and cancel running jobs
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Scrivener MCP Serveranalyze the writing style of my current project"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Scrivener MCP lets your AI assistant open, read, edit, analyze, and search your Scrivener projects directly. No copy-pasting. No exporting. Just open your novel and start working.
You: Open my novel and analyze the pacing in Chapter 12.
Claude: Opens your .scriv project, reads Chapter 12, runs pacing analysis. The first half moves well with short, tense paragraphs. The middle section slows considerably -- the three-page internal monologue starting at paragraph 14 stalls the momentum you built in the confrontation scene. Consider cutting it to a single paragraph and moving the backstory to Chapter 8 where Elena is first introduced.
Works with Claude Desktop, Claude Code, VS Code (Copilot/Continue), Cursor, and any MCP-compatible client. Scrivener 3 on macOS, Windows, and Linux.
Install
Pick the method that works for you. All of them auto-configure Claude Desktop on install.
npm (recommended)
npm install -g scrivener-mcpRestart Claude Desktop. Done.
Smithery
npx -y @smithery/cli install scrivener-mcp --client claudenpx (no install)
Use directly without installing globally:
npx scrivener-mcpOr add to your Claude Desktop config manually:
{
"mcpServers": {
"scrivener": {
"command": "npx",
"args": ["scrivener-mcp"]
}
}
}GitHub
Install directly from the repo (latest main):
npm install -g writerslogic/scrivener-mcpOr a specific release:
npm install -g writerslogic/scrivener-mcp#v0.5.1Homebrew (macOS)
brew install writerslogic/tap/scrivener-mcpDocker
docker build -t scrivener-mcp https://github.com/writerslogic/scrivener-mcp.git
docker run -i --rm -v /path/to/your/projects:/projects scrivener-mcpRun the interactive setup to auto-detect and configure your client:
npx scrivener-setupThis detects Claude Desktop, Claude Code, and Cursor, and writes the config for you.
For other MCP clients, point them at npx scrivener-mcp as a stdio server.
Core features (document management, analysis, search) work without any API key. For AI-powered enhancements, the server automatically discovers your OpenAI key from common locations:
OPENAI_API_KEYenvironment variable~/.env,~/.scrivener-mcp/.env,~/.openai/keymacOS Keychain (service name
openai-api-key)
To store your key in the macOS Keychain:
security add-generic-password -s openai-api-key -a openai -w sk-your-key-hereOr export it manually:
export OPENAI_API_KEY="sk-..."This enables: content enhancement, semantic search, multi-agent analysis, character consistency checking, and intelligent compilation.
Related MCP server: Claude RAG MCP Pipeline
What You Can Do
Manage Your Manuscript
Open any Scrivener project and work with it naturally. Read chapters, create new scenes, reorganize the binder, update synopses -- all through conversation.
You: Create a new scene called "The Reveal" after Chapter 5, and move the old epilogue to the trash.
Analyze Your Writing
Get detailed feedback on readability, pacing, style, dialogue quality, and emotional arc. Not generic advice -- analysis grounded in your actual prose.
You: Analyze Chapter 3. Is the pacing too slow?
Claude: Readability is good (Flesch-Kincaid grade 8.2), but pacing flags:
4 consecutive paragraphs of internal monologue (lines 45-78) with no action or dialogue
The scene is 3,200 words with only 2 scene breaks -- your other chapters average 4
Filter word density is 2x your manuscript average ("felt", "seemed", "noticed") Specific suggestions: ...
Enhance Your Prose
Apply targeted improvements: eliminate filter words, strengthen verbs, vary sentence structure, add sensory details, convert telling to showing, tighten dialogue, adjust pacing.
You: Eliminate the filter words in Chapter 7 and strengthen the verbs.
Track Characters and Plot
Store character profiles, plot threads, and style guides that persist with your project. The AI remembers your characters across sessions.
You: Save a character profile for Marcus: retired detective, cynical but fair, walks with a limp from an old injury, speaks in clipped sentences.
Later...
You: Check if Marcus is consistent across all chapters.
Claude: Found an inconsistency: Marcus walks "briskly" in Chapter 9 (line 34), but his limp is referenced in Chapters 2, 5, and 11. Also, his dialogue in Chapter 4 uses long flowing sentences, which contradicts the "clipped sentences" note in his profile.
Search by Meaning
Find passages by what they're about, not just keyword matching. "Find scenes where the protagonist feels isolated" works even if the word "isolated" never appears. Powered by the Holographic Memory System -- works offline, no API key needed.
You: Find all scenes where Elena and Marcus are alone together.
Track Relationships
Store and query relationships between characters, locations, themes, and plot threads. No Neo4j required -- relationships live in the semantic memory engine and persist with your project.
You: Who is connected to Marcus? What plot threads involve the lighthouse?
Compile and Export
Combine chapters into a single manuscript with configurable formatting, separators, and structure preservation.
All Tools
45 tools organized by workflow. To keep token usage low, tools load progressively -- project tools at startup, document and search tools when you open a project, and the rest on demand (your AI client activates them automatically). Set SCRIVENER_MCP_EAGER_TOOLS=1 to load everything at once.
Tool | What it does |
| Open a .scriv project (accepts .scriv folders or .scrivx files) and make it active |
| Scan common locations for Scrivener projects when you don't know the path |
| Browse the binder hierarchy (folders, documents, word counts) |
| Reload from disk after external edits |
| Close the active project and flush pending changes |
Tool | What it does |
| Metadata for one document (title, type, word count, synopsis, label, status) |
| Read content; |
| Replace a document's content (atomic, with pre-write backup) |
| Create a new text document or folder |
| Change title and/or metadata (synopsis, notes, label, status, custom fields) |
| Reorganize within the binder |
| Move to trash (reversible) |
Tool | What it does |
| Keyword/full-text search; |
| Find passages by meaning using embeddings, with similarity scores |
| Locate every occurrence of a specific name or term, with context |
| List trashed documents |
| Restore a document from trash |
| Read a document's comments and footnotes |
Tool | What it does |
| AI writing analysis; focus with |
| Project-wide continuity check; |
| Style-focused analysis |
| Plot-thread consistency check |
| Detect contradictions in how a character is portrayed |
| Narrative structure and arc analysis |
| Trace recurring motifs, themes, and symbols |
| AI-generated improvement suggestions |
| Suggest a specific improvement to a document |
| Generate new prose from a prompt and context |
Enhancement types: eliminate-filter-words, strengthen-verbs, vary-sentences, add-sensory-details, show-dont-tell, improve-flow, enhance-descriptions, strengthen-dialogue, fix-pacing, expand, condense, rewrite
Tool | What it does |
| Combine documents with formatting; |
| Write the manuscript to disk in a target format |
| Project-level word/document/character counts |
| Draft synopsis, query letter, pitch, and related materials |
Tool | What it does |
| Store information that persists across sessions with the project |
| Retrieve previously stored memory |
| Metrics about the project's memory subsystem |
Memory is stored within each .scriv project and travels with it.
Tool | What it does |
| Store a relationship between characters, locations, themes, or plot threads |
| Query entities related to a given character/theme/location |
| Find co-occurring entities across the manuscript |
| The character relationship network |
Works without Neo4j -- relationships live in the Holographic Memory System and are available immediately. Neo4j adds advanced graph analysis when connected.
Tool | What it does |
| Enqueue an async analysis of one document; returns a job id |
| Enqueue an async analysis of the whole project |
| Poll progress/results for a queued job |
| Cancel a queued or running job |
Tool | What it does |
| List the available tool groups and their tools |
| Activate a tool group (most are pre-activated by default) |
Guides
Getting Started -- Installation, configuration, your first session
Writing with AI -- Analysis workflows, enhancement strategies, memory management
Troubleshooting -- Common issues and fixes
Token Optimization -- How the server minimizes context window usage
Architecture -- How the server works, module structure, data flow
Contributing -- Development setup, code conventions, adding new tools
Requirements
Node.js 18+
Scrivener 3 project files (.scriv)
macOS, Windows, or Linux
Optional: OpenAI API key for AI-powered features
Optional: Neo4j for character relationship graphs
Development
git clone https://github.com/writerslogic/scrivener-mcp.git
cd scrivener-mcp
npm install
npm run dev # Development mode with hot reload
npm run build # Compile TypeScript
npm test # Run tests
npm run typecheck # Type checking onlyWhy This One?
Several Scrivener MCP servers exist. Here's how they compare:
Feature | scrivener-mcp | jiayun | zaphodsdad | others |
Document read/write | 45 tools | 29 tools | read-only | basic |
RTF / rich text support | yes | no | no | no |
Writing analysis | readability, pacing, style, emotion | basic metrics | no | no |
Content enhancement | 12 types (filter words, verbs, show-don't-tell…) | no | no | no |
Semantic search (offline) | vector + analogies + dream mode | no | no | no |
Character consistency check | yes | no | no | no |
Character / plot memory | persistent profiles, plot threads, style guide | no | no | no |
Relationship graphs | HMS triplets + optional Neo4j | no | no | no |
Multi-agent analysis | roundtable critique with specialised agents | no | no | no |
Story structure analysis | yes (requires Neo4j) | no | no | no |
Token optimisation | progressive skill loading, compact JSON | no | no | no |
Batch document operations | yes | partial | no | no |
Export / compilation | yes — multiple formats | basic | no | no |
Windows support | full path handling + .scrivx discovery | partial | no | no |
Install method | npm · Homebrew · Docker · Smithery | manual clone | manual clone | varies |
Published to npm | yes ( | no | no | no |
License | AGPL-3.0 / commercial dual-license | MIT | — | varies |
Active development | weekly | monthly | stale | stale |
Community | ⭐ 27+ · 9 forks · 30+ issues | ⭐ 6 | ⭐ 4 | minimal |
Contributing
We welcome contributions of all sizes. Check the issue tracker for good first issue labels, or see the contributing guide for development setup.
Areas where help is especially welcome:
Test coverage (#18)
Windows testing and path handling
Scrivener 2 compatibility testing
Documentation improvements (#25)
License
AGPL-3.0 © WritersLogic, Inc.
Free for personal use and open-source projects. Commercial license available for proprietary integration. See COMMERCIAL_LICENSE.md for details.
Maintenance
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/writerslogic/scrivener-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server