PluginBench
MCP Server
Active
AGPL-3.0

io.github.writerslogic/scrivener-mcp MCP Server

io.github.writerslogic/scrivener-mcp

Connect your Scrivener manuscripts to Claude and AI assistants—read, write, analyze, and search with 57 tools.

What is the io.github.writerslogic/scrivener-mcp MCP server?

Scrivener MCP is an MCP server that connects Scrivener 3 projects to Claude, ChatGPT, and other AI assistants. It provides 57 tools for document management, writing analysis, content enhancement, semantic search, and character/plot tracking—all without leaving your conversation.

Scrivener MCP lets you manage your entire manuscript workflow through AI conversation. Open a .scriv project and ask Claude to read chapters, analyze pacing, enhance prose, track characters, search by meaning, reorganize scenes, compile drafts, and export to multiple formats. No exporting, no copy-pasting—just direct access to your manuscript with AI-powered analysis and editing.

How to install io.github.writerslogic/scrivener-mcp

Copy-paste configuration for popular MCP clients.

transport: stdio
Config generated by PluginBench — verify against the source before use.
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "scrivener-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "scrivener-mcp"
      ]
    }
  }
}

Tools & capabilities

Tools this server exposes to the agent.

  • open_project — Open a .scriv project and make it active
  • discover_projects — Scan common locations for Scrivener projects
  • detect_open_project — Detect the project currently open in the Scrivener app (macOS)
  • get_structure — Browse the binder hierarchy with word counts
  • read_document — Read document content with optional formatting and pagination
  • write_document — Replace a document's content with atomic backup
  • create_document — Create a new text document or folder
  • update_document — Change title, synopsis, notes, label, status, and custom fields
  • move_document — Reorganize documents within the binder
  • delete_document — Move documents to trash
  • search — Keyword and full-text search across the project
  • semantic_search — Find passages by meaning using local indexing and AI query interpretation
  • find_mentions — Locate every occurrence of a name or term with context
  • analyze_document — AI writing analysis with focus on structure, style, pacing, themes
  • check_consistency — Project-wide continuity check for plot, characters, or timeline
  • analyze_writing_style — Style-focused analysis
  • suggest_improvements — AI-generated improvement suggestions
  • enhance_content — Suggest specific improvements (filter words, verbs, sentences, sensory details, showing, flow, dialogue, pacing)
  • generate_content — Generate new prose from a prompt and context
  • compile_documents — Combine documents into a manuscript with hierarchy and formatting

Use cases

  • Analyze pacing, structure, and style of chapters in real-time without exporting
  • Track character consistency and plot threads across your entire manuscript
  • Search for scenes by meaning (e.g., 'find where the protagonist feels isolated') without keyword matching
  • Generate targeted prose improvements: eliminate filter words, strengthen verbs, add sensory details, fix dialogue
  • Compile and export your manuscript to Markdown, DOCX, EPUB, or PDF with formatting preserved

io.github.writerslogic/scrivener-mcp MCP server FAQ

What is Scrivener MCP?

Scrivener MCP is an MCP server that connects your Scrivener 3 projects directly to Claude, ChatGPT, and other AI assistants. It provides 57 tools for reading, writing, analyzing, and searching your manuscripts without exporting or copy-pasting.

Is it free?

Yes. The server itself is free and open-source. Writing analysis, generation, and semantic search optionally use AI providers (Anthropic, OpenAI, or OpenRouter); document management, search, and analysis work offline with no API key required.

How do I install it in Claude Desktop or Cursor?

Run `npm install -g scrivener-mcp`, then restart Claude Desktop. For other clients, run `npx scrivener-setup` to auto-configure, or manually add it via `claude mcp add -s user scrivener -- npx scrivener-mcp`.

Does it require authentication?

No authentication is required to use the server. Optional AI features (analysis, generation, semantic search) use API keys from Anthropic, OpenAI, or OpenRouter if configured; the server checks environment variables, ~/.env, and macOS Keychain automatically.

What Scrivener versions does it support?

Scrivener 3 on macOS, Windows, and Linux. The server does not require the Scrivener app to be running; it reads and writes .scriv project files directly.

Can I use it offline?

Yes. Document management, keyword search, deterministic analysis, and character/plot tracking work entirely offline. Semantic search and AI-powered writing analysis optionally use configured providers; if none are set, those features are unavailable.

README (reference)

Source of truth, from the repository.

<!-- repo-header:start --> <img src="https://raw.githubusercontent.com/writerslogic/scrivener-mcp/main/assets/logo-black.svg" alt="Scrivener MCP logo" width="120" align="left"> <h1>Scrivener MCP</h1> <p><strong>The definitive MCP server for Scrivener — connect your novels, screenplays, and manuscripts to Claude, ChatGPT, and any AI assistant. 53 tools: document management, writing analysis, content enhancement, offline semantic search, and character/plot tracking.</strong></p> <br clear="left">

CI CodeQL OpenSSF Scorecard OpenSSF Best Practices License Code of Conduct GitHub Sponsors

<!-- repo-header:end --> <a href="https://www.npmjs.com/package/scrivener-mcp"> <img src="https://img.shields.io/npm/v/scrivener-mcp.svg?style=flat-square&labelColor=20232a&color=007ec6" alt="npm version"/> </a> <img src="https://img.shields.io/npm/dm/scrivener-mcp.svg?style=flat-square&labelColor=20232a&color=007ec6" alt="npm downloads"/> <img src="https://img.shields.io/node/v/scrivener-mcp?style=flat-square&labelColor=20232a&color=007ec6" alt="node version"/> <a href="https://github.com/writerslogic/scrivener-mcp"> <img src="https://img.shields.io/github/stars/writerslogic/scrivener-mcp?style=flat-square&labelColor=20232a&color=6a4c93" alt="stars"/> </a> <a href="https://mseep.ai/app/writerslogic-scrivener-mcp"> <img src="https://img.shields.io/badge/MseeP-verified-green.svg?style=flat-square&labelColor=20232a" alt="MseeP verified"/> </a> <a href="https://glama.ai/mcp/servers/writerslogic/scrivener-mcp"> <img src="https://glama.ai/mcp/servers/writerslogic/scrivener-mcp/badges/score.svg" alt="scrivener-mcp MCP server score"/> </a> </p> <p align="center"> <a href="#install">Install</a> &middot; <a href="#what-you-can-do">What You Can Do</a> &middot; <a href="#all-tools">All Tools</a> &middot; <a href="#guides">Guides</a> &middot; <a href="#contributing">Contributing</a> </p>

Scrivener MCP lets your AI assistant open, read, edit, analyze, and search your Scrivener projects directly. No exporting, no copy-pasting text back and forth. Tell it which project to open and start working.

You: Open my novel and analyze the pacing in Chapter 12.

Claude: Opens the .scriv project, reads Chapter 12, runs pacing analysis. The first half moves well, but the middle stalls — a three-page internal monologue starting at paragraph 14 kills the momentum you built in the confrontation scene. Consider cutting it to a paragraph and moving the backstory to Chapter 8.

Works with Claude Desktop, Claude Code, VS Code (Copilot/Continue), Cursor, and any MCP-compatible client. Scrivener 3 on macOS, Windows, and Linux. Listed on the official MCP Registry as io.github.writerslogic/scrivener-mcp.

Install

npm install -g scrivener-mcp

Restart Claude Desktop and it's ready. Other clients need one more step:

npx scrivener-setup

This finds Claude Code, Claude Desktop, and Cursor and configures them for you. To set up Claude Code by hand instead: claude mcp add -s user scrivener -- npx scrivener-mcp, then restart it (or run /mcp).

<details> <summary><strong>Other ways to install</strong></summary>

Smithery

npx -y @smithery/cli install scrivener-mcp --client claude

npx, no install

npx scrivener-mcp

or add it to Claude Desktop's config directly:

{
  "mcpServers": {
    "scrivener": { "command": "npx", "args": ["scrivener-mcp"] }
  }
}

From GitHub

npm install -g writerslogic/scrivener-mcp              # latest main
npm install -g writerslogic/scrivener-mcp#v0.12.0       # a specific release

Homebrew (macOS)

brew install writerslogic/tap/scrivener-mcp

Docker

docker build -t scrivener-mcp https://github.com/writerslogic/scrivener-mcp.git
docker run -i --rm -v /path/to/your/projects:/projects scrivener-mcp

Any other MCP client: point it at npx scrivener-mcp as a stdio server.

</details> <details> <summary><strong>Optional: AI-powered features</strong></summary>

Document management, deterministic analysis, keyword search, and project memory work with no API key at all. Writing analysis, generation, enhancement, and semantic search need one — Anthropic, OpenAI, or OpenRouter. Set more than one and Claude handles chat by default; override with AI_PROVIDER=openai or AI_PROVIDER=openrouter (OpenRouter defaults to anthropic/claude-sonnet-4.6, change it with OPENROUTER_MODEL). If the active provider fails on an account-level error — bad key, no credit, an outage — the server retries on the next one you've configured. If your MCP client supports sampling, chat-based features can run through the client's own model instead, no separate key needed. Semantic indexing itself always runs locally through the Holographic Memory System; only semantic_search's query interpretation needs a provider.

Keys are picked up automatically from:

  • ANTHROPIC_API_KEY / OPENAI_API_KEY / OPENROUTER_API_KEY
  • ~/.env or ~/.scrivener-mcp/.env
  • ~/.anthropic/key, ~/.openai/key, ~/.openrouter/key
  • macOS Keychain (anthropic-api-key / openai-api-key / openrouter-api-key)
security add-generic-password -s anthropic-api-key -a anthropic -w sk-ant-your-key-here   # Keychain
export ANTHROPIC_API_KEY="sk-ant-..."                                                      # or export it directly
</details>

What You Can Do

Open a project first. The server has no link to the Scrivener app itself and can't see what's open there — say "Open my Scrivener project at ~/Documents/My Novel.scriv", or "Discover my Scrivener projects" if you don't know the path. On macOS, "Use the project I have open in Scrivener" works too (the first time, macOS will ask permission to control Scrivener). Do this once per conversation. If the project is also open and unsaved in Scrivener itself, save or close it there first, or the two can write over each other.

Manage your manuscript. Read chapters, create scenes, reorganize the binder, update synopses — all through conversation. "Create a new scene called 'The Reveal' after Chapter 5, and move the old epilogue to the trash."

Analyze your writing. Readability, pacing, style, dialogue quality, emotional arc — grounded in your actual prose, not generic advice. Ask whether a chapter's pacing is off and get specifics: which paragraphs stall, how the scene compares to your other chapters, filter-word density against your own average.

Enhance your prose. Targeted edits: cut filter words, strengthen verbs, vary sentence structure, add sensory detail, turn telling into showing, tighten dialogue, fix pacing.

Track characters and plot. Character profiles, plot threads, and style guides persist with the project across sessions. Save a profile for a character once; a consistency check months later catches contradictions — dialogue that doesn't sound like them, a limp that disappears for a chapter.

Search by meaning. "Find scenes where the protagonist feels isolated" works even if that word never appears. Indexing and similarity scoring run locally through the Holographic Memory System; semantic_search also needs a configured AI provider to interpret the query and explain the results.

Track relationships. Query how characters, locations, themes, and plot threads connect. No Neo4j required — relationships live in the semantic memory engine and persist with the project; Neo4j adds deeper graph analysis if you have it.

Compile and export. Assemble chapters into one manuscript with your own formatting and structure preserved. Export inline as Markdown, HTML, or JSON, or write a DOCX, EPUB, or PDF to disk.

All Tools

57 tools organized by workflow. To keep token usage low, tools load progressively — project tools at startup, document and search tools once a project is open, the rest on demand. Set SCRIVENER_MCP_EAGER_TOOLS=1 to load everything up front.

<details> <summary><strong>Project</strong> -- open, browse, manage</summary>
ToolWhat it does
open_projectOpen a .scriv project (accepts .scriv folders or .scrivx files) and make it active
discover_projectsScan common locations for Scrivener projects when you don't know the path
detect_open_projectDetect the project currently open in the Scrivener app (macOS) so you don't need a path
get_structureBrowse the binder hierarchy (folders, documents, word counts)
refresh_projectReload from disk after external edits
close_projectClose the active project and flush pending changes
verify_project_integrityRead-only scan for structural problems (missing/duplicate UUIDs, unreadable content)
get_compile_settingsRead the project's compile formats and taxonomy -- labels/statuses (with colors), collections, section types
get_manuscript_briefingOne "where am I?" snapshot: words vs. target (% to goal), document/status/label counts, longest/shortest documents
list_snapshotsList Scrivener snapshots (title, date) for one document or the whole project
read_snapshotRead a snapshot's text as plain text, with word count
compare_snapshotDiff a snapshot against the current document (or another snapshot): paragraphs added/removed and net word change
create_snapshotTake a Scrivener-native snapshot of a document (restorable from Scrivener's own Snapshots browser) before editing
</details> <details> <summary><strong>Documents</strong> -- read, write, create, organize</summary>
ToolWhat it does
get_document_infoMetadata for one document (title, type, word count, synopsis, label, status)
read_documentRead content; format: "formatted" for rich text, offset/limit to page long docs
write_documentReplace a document's content (atomic, with pre-write backup)
create_documentCreate a new text document or folder
update_documentChange title and/or metadata (synopsis, notes, label, status, custom fields)
move_documentReorganize within the binder
delete_documentMove to trash (reversible)
</details> <details> <summary><strong>Search</strong> -- find content, passages, and mentions</summary>
ToolWhat it does
searchKeyword/full-text search; field: "title" for titles, scope: "trash" for trash
semantic_searchFind passages by meaning using the local HMS index plus provider-backed query interpretation, with similarity scores
find_mentionsLocate every occurrence of a specific name or term, with context
list_trashList trashed documents
restore_documentRestore a document from trash
read_annotationsRead a document's comments and footnotes
</details> <details> <summary><strong>Analysis</strong> -- quality, consistency, structure</summary>
ToolWhat it does
analyze_documentAI writing analysis; focus with aspects (structure, style, pacing, themes...)
check_consistencyProject-wide continuity check; scope for plot, characters, or timeline
analyze_writing_styleStyle-focused analysis
check_plot_consistencyPlot-thread consistency check
suggest_improvementsAI-generated improvement suggestions
enhance_contentSuggest a specific improvement to a document
generate_contentGenerate new prose from a prompt and context
set_writing_goalSet a word-count goal (daily, weekly, or whole project) with an optional target date
get_writing_goalsList goals with progress -- percent complete, words remaining, on-pace status
set_writing_preferencesSet author preferences (tone, complexity, length, POV, style guide) that steer AI output
get_writing_preferencesShow current preferences plus feedback insights and suggestions
collect_feedbackRecord 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

</details> <details> <summary><strong>Compile & Export</strong> -- assemble and ship the manuscript</summary>
ToolWhat it does
compile_documentsCombine documents; mode: "structured" compiles the Draft folder with the binder hierarchy as headings and honors "Include in Compile" (no AI), mode: "intelligent" for AI-optimized output
export_projectWrite the manuscript to disk -- Markdown, HTML, JSON inline, or DOCX, EPUB, PDF as a file
get_statisticsProject-level word/document/character counts
generate_marketing_materialsDraft synopsis, query letter, pitch, and related materials
</details> <details> <summary><strong>Memory</strong> -- persistent project knowledge</summary>
ToolWhat it does
rememberStore information that persists across sessions with the project
recallRetrieve previously stored memory

Memory is stored within each .scriv project and travels with it.

</details> <details> <summary><strong>Relationships</strong> -- entity connections and story graph</summary>
ToolWhat it does
add_relationshipStore a relationship between characters, locations, themes, or plot threads
find_relationshipsQuery entities related to a given character/theme/location
discover_connectionsFind co-occurring entities across the manuscript
character_networkThe character relationship network
get_entity_referencesTrace the reference graph in either direction: entities a document mentions (by documentId), or documents mentioning an entity (by entity)
find_orphaned_entitiesList registered characters/locations that no document actually mentions
suggest_connectionsSuggest 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.

</details> <details> <summary><strong>Background Jobs</strong> -- long-running analysis</summary>
ToolWhat it does
queue_document_analysisEnqueue an async analysis of one document; returns a job id
queue_project_analysisEnqueue an async analysis of the whole project
get_job_statusPoll progress/results for a queued job
cancel_jobCancel a queued or running job
</details> <details> <summary><strong>Discovery</strong> -- explore capabilities</summary>
ToolWhat it does
list_skillsList the available tool groups and their tools
use_skillActivate a tool group (most are pre-activated by default)
</details>

Guides

Requirements

  • Node.js 18+
  • Scrivener 3 project files (.scriv)
  • macOS, Windows, or Linux
  • Optional: Anthropic, OpenAI, or OpenRouter API key for provider-backed AI features
  • Optional: Neo4j for persistence and advanced graph queries; core relationship tools work without it

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 only

Why This One?

A few Scrivener MCP servers exist. Feature claims below come from each project's own docs, published package, and advertised tools, last re-read on 2026-08-22; stars, forks, activity, and published version were refreshed <!-- comparison-refreshed -->2026-09-15<!-- /comparison-refreshed -->. "No" means undocumented — not necessarily impossible through the connected AI client.

<!-- comparison-start -->
Featurescrivener-mcpjiayunTwelveTakeScrivener Assistantricopiconezaphodsdad
Public MCP tools572922381810
Manuscript accessread/writeread/writeread/writeread-only; writes sidecar data/metadataread-only by default; opt-in content/notes/synopsis writesread-only
RTF handlingformatted reads; fidelity-preserving span writesreads/writes document contentreads/writes document contentconverts RTF to text; manuscript read-onlyRTF-to-text reads; snapshot-protected content writesconverts RTF to text; read-only
Built-in writing analysisreadability, pacing, style, emotion, AI critiquereadability, style, sentimentcontinuity comparisonagent-driven five-point review workflowno dedicated analysis toolno dedicated analysis tool
Content generation/enhancementgeneration + 12 targeted enhancement typesnonobrainstorm/draft agent workflownono
Local semantic retrievalHMS index and similarity searchnonononono
Continuity/project memorypersistent memory + consistency checkspersistent notes + consistency checksmention/description comparisonworld bible, story state, characters, locations, review historyno persistent memoryno persistent memory
Relationship toolingpersistent relationships, networks, reference graph; optional Neo4jnonohuman-editable relations datanono
Token optimizationprogressive skill loading, compact output, paged readsno documented equivalentno documented equivalentno documented equivalentscoped binder/chapter readsscoped overview/read tools
Export / compilationMarkdown, HTML, JSON, DOCX, EPUB, PDFcompile + whole-draft exportPDFsaves AI drafts; no manuscript export documentednono
Windows supportyesyes (prebuilt binary)yesnot documentednot documentedyes
Installationnpm, Homebrew, Docker, SmitheryCargo or prebuilt binarynpm package (deprecated)MCPB or sourcesource / uvsource / pip install -e
LicenseAGPL-3.0 / commercial dual-licenseMITMITMITnot declaredMIT
Repository/package statusweekly activity; npm 0.12.0monthly activitydiscontinued and unmaintainedoccasional activityoccasional activity; no releasesoccasional activity; no releases
Community⭐ 54 · 18 forks⭐ 7source repository unavailable⭐ 1⭐ 0⭐ 5 · 1 fork
<!-- comparison-end -->

Counts and feature claims can change. Follow the linked projects for their own latest documentation. The table is generated from docs/comparison.yml — edit claims there, not here.

The alternative that isn't an MCP server

Scrivener can also Sync to External Folder, writing each document out as RTF or plain text, which any generic file-access MCP server (like @modelcontextprotocol/server-filesystem) can then read and write.

It's free and works today. What you lose is everything tied to the actual project — binder hierarchy, metadata, labels and status, snapshots, compile settings, RTF formatting — and edits land in the sync folder rather than the project itself, so a bad edit gets reconciled by Scrivener on the next sync instead of caught before it happens. Fine for occasional read-only help with prose; not if you want the structure to survive the round trip.

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)

Security

Found a vulnerability? Please report it privately — see SECURITY.md.

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.

<p align="center"> <a href="https://glama.ai/mcp/servers/writerslogic/scrivener-mcp"> <img src="https://glama.ai/mcp/servers/writerslogic/scrivener-mcp/badges/card.svg" alt="scrivener-mcp MCP server"/> </a> </p> <p align="center"> <a href="https://github.com/writerslogic/scrivener-mcp">GitHub</a> &middot; <a href="https://www.npmjs.com/package/scrivener-mcp">npm</a> &middot; <a href="https://github.com/writerslogic/scrivener-mcp/issues">Issues</a> &middot; <a href="./CHANGELOG.md">Changelog</a> </p>

Related MCP servers

A self-improving, verifiable memory layer for AI coding agents.

2
Python
Apache-2.0
View repository →

33 tools, 30 US federal data domains. Ed25519 signed, provenance chains, entity graph. Free.

1
JavaScript
MIT
View repository →

Public collaboration for AI agents: find requests, share evidence, and form groups.

FHFHIR MCP Server logo

FHIR MCP Server

Maintained

MCP server providing seamless access to FHIR APIs for healthcare data integration with AI tools

132
Python
Apache-2.0
View repository →

Convert LaTeX math expressions to crisp, scalable SVG images

0
TypeScript
View repository →

Control Ableton Live with 156 typed tools for music production and offline .als analysis.

3
Python
MIT
View repository →