Scrivener MCP
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 MCPanalyze 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. Tell your assistant which project to open, 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. Most auto-configure Claude Desktop on install. Claude Code and other clients need one extra step -- see Claude Code below.
npm (recommended)
npm install -g scrivener-mcpRestart Claude Desktop. Done.
Claude Code
Installing the npm package does not register the server with Claude Code -- the install-time auto-config only writes Claude Desktop's config. After installing, register the server:
npx scrivener-setupThis detects Claude Code (along with Claude Desktop and Cursor) and writes the config for you. To register it manually instead:
claude mcp add -s user scrivener -- npx scrivener-mcpThen restart Claude Code (or run /mcp to reconnect) and Scrivener MCP appears in the server list. Drop -s user to scope it to the current project instead of all projects.
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
First, open a project. The server acts on whatever
.scrivproject you point it at -- it has no link to the Scrivener app and can't see what you have open there. Start a conversation with "Open my Scrivener project at~/Documents/My Novel.scriv" (or "Discover my Scrivener projects" if you don't know the path), then give your commands. On macOS you can also just say "Use the project I have open in Scrivener" -- it detects the open project and opens it (the first time, macOS asks you to allow controlling Scrivener). Do this once at the start of each conversation; the examples below all assume a project is open. If the same project is also open and unsaved in the Scrivener app, save or close it there first to avoid conflicting writes.
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. Export the result inline as Markdown, HTML, or JSON, or write a DOCX, EPUB, or PDF file to disk for submission, e-readers, or print.
All Tools
53 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 |
| Detect the project currently open in the Scrivener app (macOS) so you don't need a path |
| Browse the binder hierarchy (folders, documents, word counts) |
| Reload from disk after external edits |
| Close the active project and flush pending changes |
| Read-only scan for structural problems (missing/duplicate UUIDs, unreadable content) |
| Read the project's compile formats and taxonomy -- labels/statuses (with colors), collections, section types |
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 |
| AI-generated improvement suggestions |
| Suggest a specific improvement to a document |
| Generate new prose from a prompt and context |
| Set a word-count goal (daily, weekly, or whole project) with an optional target date |
| List goals with progress -- percent complete, words remaining, on-pace status |
| Set author preferences (tone, complexity, length, POV, style guide) that steer AI output |
| Show current preferences plus feedback insights and suggestions |
| Record a rating/comment on an AI operation to inform those insights |
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 -- Markdown, HTML, JSON inline, or DOCX, EPUB, PDF as a file |
| 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 |
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 |
| List the registered characters/locations a document mentions, with counts and positions |
| Find every document that mentions a given character or location, ranked by count |
| List registered characters/locations that no document actually mentions |
| Suggest entities a document may be missing, inferred from cross-document co-occurrence |
Works without Neo4j -- relationships live in the Holographic Memory System and are available immediately. The document cross-reference tools are fully deterministic (exact whole-word matching, no AI) and need no external services; 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
MCP Client Setup -- Copy-paste config for Claude Desktop, Claude Code, Cursor, and VS Code
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
Scrivener Compatibility -- Supported Scrivener versions, platforms, and format coverage
Scrivener File Format -- The reverse-engineered
.scrivformat, what we read vs. infer, and safe-modification guidanceContributing -- 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 | 53 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 | stale | occasional | stale |
Community | ⭐ 30 · 14 forks · 13 issues | ⭐ ? | ⭐ 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
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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