scrivener-mcp
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-mcplist my scrivener projects"
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
A local MCP server that exposes your Scrivener projects to Claude (or any MCP-compatible client). Create new projects from scratch, navigate the binder, read and write document content, and update metadata — all without opening Scrivener.
Requirements
Node.js 18 or later
Scrivener 3 on macOS (
.scrivpackages)
Setup
cd scrivener-mcp
npm installEnvironment variables
Variable | Description |
| Path to a directory containing |
| Path to a single |
|
|
At least one of SCRIV_DIR or SCRIV_PATH must be set. Both can be set simultaneously.
Running manually
# Multi-project mode (recommended)
SCRIV_DIR="/path/to/ScrivenerProjects" npm start
# Single-project mode
SCRIV_PATH="/path/to/MyProject.scriv" npm startConfiguring Claude Desktop
Edit the Claude Desktop config file:
Mac:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Mac:
{
"mcpServers": {
"scrivener": {
"command": "node",
"args": ["/absolute/path/to/scrivener-mcp/src/index.js"],
"env": {
"SCRIV_DIR": "/Users/you/Writing/ScrivenerProjects"
}
}
}
}Windows:
{
"mcpServers": {
"scrivener": {
"command": "node",
"args": ["C:\\path\\to\\scrivener-mcp\\src\\index.js"],
"env": {
"SCRIV_DIR": "C:\\Users\\you\\Documents\\ScrivenerProjects",
"SCRIV_PLATFORM": "windows"
}
}
}
}Restart Claude Desktop after saving.
Available tools
Project management
Tool | Description |
| Lists all |
| Opens a project by name, making it active for all document tools. |
| Creates a new project and opens it. See below. |
Document tools (require an open project)
Tool | Description |
| Returns the full binder as a nested tree with synopses, labels, and statuses. The best starting point for understanding and working on a project's structure. |
| Returns the binder as a flat list with depth indicators. Useful for getting UUIDs. |
| Returns metadata and plain text content for a single document. |
| Adds a new document or folder to the binder. |
| Moves a binder item to a different parent folder. |
| Writes new plain text content to a document (stored as RTF). |
| Updates title, synopsis, label, status, or compile inclusion. |
| Searches titles and synopses across the binder. |
Creating a project
create_project accepts a full binder structure so Claude can scaffold an entire project from an idea in one call.
Parameters
Parameter | Type | Description |
| string | Project name (becomes the |
| array | Label definitions. Each is a string or |
| array | Status names. Defaults to: To Do, In Progress, First Draft, Revised Draft, Done. |
| array | Binder items in the Draft (Manuscript) folder. |
| array | Binder items in the Research folder. |
Binder item structure
{
"title": "Chapter 1",
"type": "Folder",
"synopsis": "Alice finds the letter and confronts Bob.",
"content": "Optional initial body text (Text items only).",
"label": "POV: Alice",
"status": "To Do",
"includeInCompile": true,
"children": [...]
}type:"Folder"for containers (acts, parts, chapters);"Text"for documents (scenes, notes). Defaults to"Text".synopsis: The virtual index card text — appears in Scrivener's corkboard and outliner views. Write a 1–3 sentence summary of what happens or what this item covers.labelandstatusmust match names defined in the project'slabelsandstatusesarrays.
Example
{
"name": "My Novel",
"labels": [
{ "name": "POV: Alice", "color": "blue" },
{ "name": "POV: Bob", "color": "red" }
],
"statuses": ["To Do", "First Draft", "Revised", "Done"],
"manuscript": [
{
"title": "Act One",
"type": "Folder",
"synopsis": "Alice discovers the conspiracy.",
"children": [
{
"title": "Chapter 1",
"type": "Folder",
"synopsis": "A normal Tuesday turns strange.",
"children": [
{
"title": "The Letter",
"type": "Text",
"synopsis": "Alice finds an unsigned letter in her mailbox.",
"label": "POV: Alice",
"status": "To Do"
}
]
}
]
}
],
"research": [
{
"title": "Characters",
"type": "Folder",
"children": [
{
"title": "Alice",
"type": "Text",
"synopsis": "Protagonist. Mid-30s journalist, sceptical but curious."
}
]
}
]
}Collaborative workflow
The intended pattern is to work with Claude on the structure and content of a project together, using Scrivener's own organisational features:
Start with
get_outline— Claude reads the full nested structure with synopses before suggesting or making any changes. This is how it understands the story shape.Build structure with
add_document— Add scenes, chapters, acts, or research notes at any point in the hierarchy. Always include a synopsis; it is what appears on the index card in Scrivener's corkboard.Reorganise with
move_document— Move items between parents to restructure the narrative without losing any content or metadata.Write prose with
write_document— Once structure is agreed, populate scenes with content.Track progress with
update_metadata— Update labels (e.g. POV, scene type) and statuses (e.g. First Draft, Revised) as work progresses.
Notes
Close Scrivener before writing.
write_document,update_metadata,add_document, andmove_documentall modify project files directly. If Scrivener has the project open, it will overwrite changes on its next auto-save.Reload after editing in Scrivener. Call
open_projectagain to reload a project that was modified in Scrivener while the server was running.write_documentgenerates minimal RTF compatible with Scrivener 3. Non-ASCII characters are Unicode-escaped.Label and status IDs are discoverable via
list_documents—labelId/statusIdare raw IDs,label/statusare the resolved names.
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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/sschmitt-cg/scrivener-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server