Scrivener
@writerslogic
About Scrivener
The definitive MCP server for Scrivener. Connect your novels, screenplays, and manuscripts to Claude, ChatGPT, and other AI assistants. 60+ tools for document management, writing analysis, content enhancement, semantic search, and character/plot tracking.
Config
Add this server to your MCP-compatible client using the configuration below.
{
"mcpServers": {
"scrivener": {
"command": "npx",
"args": [
"scrivener-mcp"
]
}
}
}Tools
15List 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.
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).
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.
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).
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.
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.
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.
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.
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).
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.
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).
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).
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.
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.
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.
Overview
What is Scrivener?
The definitive MCP server for Scrivener. Connect your novels, screenplays, and manuscripts to Claude, ChatGPT, and other AI assistants. 60+ tools for document management, writing analysis, content enhancement, semantic search, and character/plot tracking.
How to use Scrivener?
The README includes setup instructions such as npx scrivener-setup.
Key features of Scrivener
- OPENAI_API_KEY environment variable
- ~/.env, ~/.scrivener-mcp/.env, ~/.openai/key
- macOS Keychain (service name openai-api-key)
- Getting Started -- Installation, configuration, your first session
- MCP Client Setup -- Copy-paste config for Claude Desktop, Claude Code, Cursor, and VS Code
Use cases of Scrivener
- Connect an MCP-compatible client to this repository's service.
- Review the README-backed setup before enabling it in production.
FAQ from Scrivener
Where is the source code for Scrivener?
The source code is linked from the repository URL on this page.
Does Scrivener include a standard MCP config?
If the README contains a parseable MCP configuration block, it is shown in the Config tab.
Frequently asked questions
Where is the source code for Scrivener?
The source code is linked from the repository URL on this page.
Does Scrivener include a standard MCP config?
If the README contains a parseable MCP configuration block, it is shown in the Config tab.
Basic information
More Productivity MCP servers

Fdback.io
FdbackFdback.io is a user feedback platform (feedback board, roadmap, changelog) with a built-in remote MCP server - no local install, connect any MCP client with a URL and API key. Your AI agents can: - List, search, and rea

Syncro
Syncro Technologies, IncSyncro is a Remote Monitoring and Management (RMM) and Professional Services Automation (PSA) platform. Connect Claude to your Syncro instance for live access to tickets, alerts, customers, contacts, assets, products, ap

FlowyTeam OKR MCP Server
flowy-teamFlowyTeam is a native OKR MCP server. Connect Claude (Desktop, web, mobile), ChatGPT, Claude Code or n8n and your agent can read every objective and key result in your workspace, post check-ins, move key-result progress,

crosscode-cli
amsultan2010Multiplayer coding in the agentic era through an MCP server for real-time codebase sync between your agents.

My AskAI
My AskAIUse My AskAI to find product, setup, integration, API, feature, pricing, and troubleshooting information. Search the public knowledge base, read complete documentation and OpenAPI files, and estimate pricing from monthly
Comments