MCP server for Scrivener - Read, write, analyze, and search manuscripts with semantic search, character/plot tracking, writing analysis, and content
Scrivener MCP server is a locally run integration for AI assistants that speak the Model Context Protocol. MCP server for Scrivener - Read, write, analyze, and search manuscripts with semantic search, character/plot tracking, writing analysis, and content enhancement. Works with Claude, ChatGPT, and other AI assistants.
Installation goes through your MCP client rather than a global install: point it at scrivener-setup on npm and it is fetched when the client starts. The copy-paste blocks for Claude Desktop, Claude Code and Cursor are further down this page.
Once Scrivener is connected, these are the calls the assistant has available:
open_project — Open a .scriv project (accepts .scriv folders or .scrivx files) and make it activediscover_projects — Scan common locations for Scrivener projects when you don't know the pathdetect_open_project — Detect the project currently open in the Scrivener app (macOS) so you don't need a pathget_structure — Browse the binder hierarchy (folders, documents, word counts)refresh_project — Reload from disk after external editsclose_project — Close the active project and flush pending changesverify_project_integrity — Read-only scan for structural problems (missing/duplicate UUIDs, unreadable content)get_compile_settings — Read the project's compile formats and taxonomy -- labels/statuses (with colors), collections, section typesget_manuscript_briefing — One "where am I?" snapshot: words vs. target (% to goal), document/status/label counts, longest/shortest documentslist_snapshots — List Scrivener snapshots (title, date) for one document or the whole projectread_snapshot — Read a snapshot's text as plain text, with word countcompare_snapshot — Diff a snapshot against the current document (or another snapshot): paragraphs added/removed and net word changeYou will need 3 environment variables: ANTHROPIC_API_KEY, OPENAI_API_KEY, OPENROUTER_API_KEY. The server will not start without them, which is usually why the tools fail to appear on a first run. Keep credentials in your client's env block or a secrets manager rather than in a file you might commit.
This sits in the browser automation group, where several servers overlap in what they claim to do but differ sharply once you actually set them up. Scrivener's toolset — open_project, discover_projects, detect_open_project and 11 more — is a fair guide to whether it matches your workflow. It is maintained by davidcondrey; worth a glance at recent repository activity before you build anything load-bearing on it.
This entry was verified against Scrivener's own documentation before publication; SyncDev keeps the directory reviewed rather than auto-generated.
| Tool | What it does |
|---|---|
| open_project | Open a .scriv project (accepts .scriv folders or .scrivx files) and make it active |
| discover_projects | Scan common locations for Scrivener projects when you don't know the path |
| detect_open_project | Detect the project currently open in the Scrivener app (macOS) so you don't need a path |
| get_structure | Browse the binder hierarchy (folders, documents, word counts) |
| refresh_project | Reload from disk after external edits |
| close_project | Close the active project and flush pending changes |
| verify_project_integrity | Read-only scan for structural problems (missing/duplicate UUIDs, unreadable content) |
| get_compile_settings | Read the project's compile formats and taxonomy -- labels/statuses (with colors), collections, section types |
| get_manuscript_briefing | One "where am I?" snapshot: words vs. target (% to goal), document/status/label counts, longest/shortest documents |
| list_snapshots | List Scrivener snapshots (title, date) for one document or the whole project |
| read_snapshot | Read a snapshot's text as plain text, with word count |
| compare_snapshot | Diff a snapshot against the current document (or another snapshot): paragraphs added/removed and net word change |
| create_snapshot | Take a Scrivener-native snapshot of a document (restorable from Scrivener's own Snapshots browser) before editing |
| get_document_info | Metadata for one document (title, type, word count, synopsis, label, status) |
{
"mcpServers": {
"scrivener": {
"command": "npx",
"args": ["-y", "scrivener-setup"],
"env": {
"ANTHROPIC_API_KEY": "your-value",
"OPENAI_API_KEY": "your-value",
"OPENROUTER_API_KEY": "your-value"
}
}
}
}Add to claude_desktop_config.json, then restart Claude Desktop.
| Variable | Description | Required |
|---|---|---|
| ANTHROPIC_API_KEY | Credential the server authenticates with. | Yes |
| OPENAI_API_KEY | Credential the server authenticates with. | Yes |
| OPENROUTER_API_KEY | Credential the server authenticates with. | Yes |
Microsoft's official browser automation server — drive a real browser through the accessibility tree, no screenshots needed.
Industrial-strength web extraction — render, scrape, crawl and search entire sites into clean markdown.
The original Chromium automation reference server — simple, screenshot-driven browser control.
Give your coding agent the full DevTools toolbox: traces, network, console, heap snapshots and Lighthouse.
Puppeteer-powered browser control that drives pages from the accessibility tree instead of pixels.
Cloud browsers for AI agents — automation sessions that run in Browserbase's fleet, not on your machine.