Scrivener MCP
A Model Context Protocol (MCP) server for Scrivener integration that allows Claude to manipulate Scrivener projects, including file and folder operations, metadata management, and content analysis.
Ask AI about Scrivener MCP
Powered by Claude Β· Grounded in docs
I know everything about Scrivener MCP. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
Scrivener MCP Server
A Model Context Protocol (MCP) server for seamless Scrivener integration with Claude AI
Features β’ Installation β’ Usage β’ API β’ Contributing
A powerful Model Context Protocol (MCP) server that enables Claude AI to seamlessly interact with Scrivener projects. This server provides comprehensive document management, AI-powered content analysis, and advanced writing assistance capabilities - all without requiring external services like Redis.
π Quick Start
Installation
npm install -g scrivener-mcp
β¨ Features:
- Automatic Claude Desktop configuration - Just restart Claude Desktop after installation
- No Redis or external services required - Built-in embedded queue system
- Zero configuration - Works out of the box
- AI providers optional - Core features work without API keys
Manual Configuration (Optional)
If automatic setup didn't work, you can manually configure:
# Run the setup script
npx scrivener-mcp setup
# Or manually add to claude_desktop_config.json:
{
"mcpServers": {
"scrivener": {
"command": "npx",
"args": ["scrivener-mcp"]
}
}
}
Uninstalling
# Remove the package and configuration
npm uninstall -g scrivener-mcp
β¨ Features
π Core Scrivener Operations
- Project Management: Open and manage Scrivener
.scrivprojects - Document CRUD: Read, write, create, delete, and move documents and folders
- Metadata Management: Update document titles, keywords, and custom metadata
- Project Structure: Navigate and manipulate the hierarchical binder structure
π Advanced RTF Support
- Full RTF Parsing: Complete support for Scrivener's RTF document format
- Formatted Content: Preserve and manipulate bold, italic, underline, and other formatting
- Scrivener Annotations: Extract and preserve Scrivener-specific annotations and comments
- Unicode Support: Handle international characters and special symbols
π€ AI-Powered Content Analysis
- Deep Writing Analysis: Comprehensive metrics including Flesch scores, readability, pacing
- Style Assessment: Sentence variety, vocabulary complexity, adverb usage analysis
- Quality Indicators: Detection of clichΓ©s, filter words, repetitiveness
- Emotional Analysis: Track emotional arcs and tension levels
- Smart Suggestions: Actionable recommendations for improvement
- Legacy Analysis: Basic readability metrics and passive voice detection
π§ Intelligent Memory Management
- Project Memory: Persistent storage within each Scrivener project
- Character Profiles: Track character details, relationships, and arcs
- Plot Threads: Manage multiple storylines and their progression
- Style Guide: Maintain consistent tone, voice, POV, and tense
- Writing Statistics: Track progress, word counts, and productivity
- Auto-save: Automatic backups with version history
βοΈ Smart Content Enhancement
- Smart Editing: 12+ enhancement types for improving prose
- Filter Word Elimination: Remove unnecessary qualifiers
- Verb Strengthening: Replace weak verbs with powerful alternatives
- Sentence Variation: Improve rhythm and flow
- Sensory Enhancement: Add vivid sensory details
- Show Don't Tell: Convert telling to showing
- Pacing Control: Adjust story tempo
- Content Expansion/Condensing: Meet word count targets
π Document Compilation & Export
- Multi-document Compilation: Combine multiple documents into single output
- Format Preservation: Option to maintain or strip RTF formatting
- Custom Separators: Configure how documents are joined
π§ NEW Holographic Hyperdimensional Memory (HHM)
- Semantic Search: Find documents by meaning, not just keywords
- Analogical Reasoning: Discover relationships like "protagonist:hero :: antagonist:?"
- Auto-Memorization: Documents automatically stored in 10,000-dimensional semantic space
- GPU Acceleration: WebGPU-powered operations with CPU fallback
- Multi-modal Learning: Text, documents, relationships, and temporal sequences
- Creative Combinations: Dream mode generates novel concept associations
- Memory Evolution: Background learning and concept refinement
- Consistency Checking: Detect contradictory information across documents
- SIMD Optimization: Vectorized operations for maximum performance
- Vector Caching: LRU cache system for frequently accessed patterns
π οΈ Available Tools
The MCP server provides 75+ powerful tools for comprehensive Scrivener integration:
π Project Operations
open_project(path)- Open a Scrivener projectget_structure(options?)- Get the project's hierarchical structure- Options:
maxDepth(limit tree depth),folderId(get specific folder),includeTrash(include trash),summaryOnly(return counts only)
- Options:
get_document_info(documentId)- Get document metadata with full parent hierarchy and locationget_project_metadata()- Get project-level metadata
π Document Operations
read_document(documentId)- Read plain text contentread_document_formatted(documentId)- Read with RTF formatting preservedwrite_document(documentId, content)- Write content to documentget_document_annotations(documentId)- Get Scrivener annotations
ποΈ File Management
create_document(parentId?, title, type?)- Create new document or folderdelete_document(documentId)- Delete document or foldermove_document(documentId, newParentId?)- Move document to new location
π Metadata & Search
update_metadata(documentId, metadata)- Update document metadatasearch_content(query, options?)- Search across all documents (excludes trash)get_word_count(documentId?)- Get word/character counts
ποΈ Trash Management
list_trash()- List all documents in the trash foldersearch_trash(query, options?)- Search only within trashed documentsrecover_document(documentId, targetParentId?)- Recover document from trash
π Analysis & Compilation
analyze_document(documentId)- Deep AI-powered content analysisdeep_analyze_content(documentId)- Comprehensive writing metrics and suggestionscritique_document(documentId, focusAreas?)- Get constructive feedbackcompile_documents(documentIds, separator?, preserveFormatting?)- Compile multiple documents
β¨ Content Enhancement
enhance_content(documentId, enhancementType, options?)- Apply AI improvements- 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
- Enhancement types:
πΎ Memory Management
save_character_profile(name, role, description?, traits?, arc?)- Store character dataget_character_profiles()- Retrieve all character profilesupdate_style_guide(tone?, voice?, pov?, tense?)- Set writing preferencesget_style_guide()- Get current style guidesave_plot_thread(name, description, status?, documents?)- Track plot linesget_plot_threads()- View all plot threadsget_writing_stats()- Get project statisticsexport_project_memory()- Export complete memory data
π§ Additional Tools
get_all_documents(includeTrash?)- Get flat list of all documentssave_project()- Save any pending changes to the projectis_project_modified()- Check if project has unsaved changesread_document_rtf(documentId)- Read document with RTF formatting preservedupdate_document_context(documentId, summary?, themes?, pacing?)- Update document memory contextadd_custom_context(key, value)- Add custom context to project memoryget_custom_context(key?)- Get custom context from project memoryupdate_writing_session(wordsWritten, duration?)- Update writing session statisticsextract_research_data(html, keywords?)- Extract research data from web contentimport_memory(memoryData)- Import project memory from exported dataupdate_document_synopsis_notes(documentId, synopsis?, notes?)- Update synopsis and/or notes for a documentbatch_update_synopsis_notes(updates)- Update synopsis and/or notes for multiple documents at once
π§ NEW Holographic Memory (HHM) Tools
semantic_search(query, k?, threshold?)- Find documents by semantic meaningfind_analogies(a, b, c)- Discover analogical relationships (A:B :: C:?)hhm/memorize/text(text, id?)- Store text in semantic memoryhhm/memorize/document(document)- Store document with structurehhm/memorize/relationship(subject, relation, object)- Store semantic relationshipshhm/query/text(text, k?)- Query memory with texthhm/query/analogy(a, b, c)- Find analogical completionshhm/concepts/generate()- Generate novel concept combinationshhm/dream(duration?)- Enter creative recombination modehhm/consistency/check(memoryIds)- Verify memory consistencyhhm/stats()- Get HHM system statisticshhm/benchmark/run(dimensions?)- Run performance benchmarkshhm/benchmark/gpu()- Test GPU acceleration capabilitieshhm/cache/clear()- Clear vector cachehhm/cache/stats()- Get cache performance metrics
ποΈ Database Tools (Advanced)
get_database_status()- Get status of SQLite and Neo4j databasesquery_database(query, params?)- Execute SELECT queries on SQLite databaseget_writing_statistics(days?)- Get writing statistics for specified periodrecord_writing_session(wordsWritten, durationMinutes?, documentsWorkedOn?, notes?)- Record a writing sessionanalyze_story_structure()- Analyze document flow, character arcs, and themes using Neo4jfind_character_relationships(characterId)- Find all relationships for a charactercreate_relationship(fromId, fromType, toId, toType, relationshipType, properties?)- Create relationships between entitiesget_content_analysis_history(documentId, analysisType?)- Get historical analysis databackup_databases(backupPath?)- Create backup of project databases
π RTF Format Support
This MCP server includes comprehensive RTF (Rich Text Format) support specifically designed for Scrivener's document format:
- RTF Parsing: Converts RTF to structured content with formatting preserved
- RTF Generation: Creates valid RTF from plain or formatted text
- Scrivener Extensions: Handles Scrivener-specific RTF extensions and annotations
- Character Encoding: Properly handles Unicode and special characters
- Metadata Extraction: Extracts document metadata from RTF info groups
ποΈ Architecture
Core Components
ScrivenerProject- Main class for project operationsRTFHandler- Comprehensive RTF parsing and generationDatabaseService- Manages SQLite and Neo4j database operationsMemoryManager- Persistent project memory and context storageContentAnalyzer- Deep writing analysis and metricsContentEnhancer- AI-powered content improvement engineHolographicMemorySystem- 10,000-dimensional semantic memory with GPU acceleration- MCP Server - Tool definitions and request handling
Data Storage
- SQLite Database - Stored in
.scrivener-databases/scrivener.dbwithin each project- Documents, characters, plot threads, themes, writing sessions
- Content analysis history and relationships
- Neo4j Graph Database - Optional graph database for relationship analysis
- Document flow, character networks, theme progression
- Falls back gracefully if not available
- Memory Files - Stored in
.ai-memoryfolders for quick access - Automatic backups maintain history and data integrity
- All data persists between sessions and travels with the project
π» Usage Examples
Basic Workflow
// Open a project
open_project("/path/to/MyNovel.scriv")
// Get project structure
get_structure()
// Read a document
read_document("UUID-OF-DOCUMENT")
// Analyze content
deep_analyze_content("UUID-OF-DOCUMENT")
// Apply enhancements
enhance_content("UUID-OF-DOCUMENT", "strengthen-verbs")
Synopsis and Notes Management
// Update synopsis for a single document
update_document_synopsis_notes("UUID-OF-CHAPTER", {
synopsis: "Elizabeth meets Mr. Darcy at the assembly ball and takes an instant dislike to him.",
notes: "Important first impression scene - sets up central conflict"
})
// Batch update multiple documents
batch_update_synopsis_notes([
{
documentId: "UUID-OF-CHAPTER-1",
synopsis: "Introduction to Elizabeth and her family",
notes: "Character establishment chapter"
},
{
documentId: "UUID-OF-CHAPTER-2",
synopsis: "The Netherfield ball",
notes: "Major social event - introduces Bingley and Darcy"
}
])
Database Operations
// Check database status
get_database_status()
// Query documents with custom SQL
query_database("SELECT title, word_count FROM documents WHERE word_count > 1000")
// Record a writing session
record_writing_session({
wordsWritten: 1250,
durationMinutes: 45,
documentsWorkedOn: ["UUID-1", "UUID-2"],
notes: "Productive morning session"
})
// Get writing statistics
get_writing_statistics(30) // Last 30 days
// Analyze story structure (requires Neo4j)
analyze_story_structure()
// Find character relationships in graph
find_character_relationships("CHARACTER-UUID")
// Create document relationship
create_relationship(
"CHAPTER-1-UUID", "document",
"CHAPTER-2-UUID", "document",
"FOLLOWS"
)
Character Management
// Save a character profile
save_character_profile({
name: "Elizabeth Bennet",
role: "protagonist",
description: "Intelligent and witty young woman",
traits: ["independent", "prejudiced", "romantic"],
arc: "Overcomes initial prejudice to find true love"
})
// Retrieve all characters
get_character_profiles()
Style Consistency
// Set style guide
update_style_guide({
tone: ["witty", "romantic", "formal"],
voice: "Jane Austen-esque",
pov: "third-limited",
tense: "past"
})
// Apply style-aware enhancements
enhance_content("UUID", "match-style")
Writing Analysis
// Get comprehensive analysis
const analysis = deep_analyze_content("UUID")
// Returns metrics, suggestions, quality indicators, pacing analysis
// Get focused critique
critique_document("UUID", ["pacing", "dialogue"])
π‘οΈ Error Handling
The server includes robust error handling for:
- Invalid project paths
- Missing documents
- RTF parsing failures
- File system errors
- Malformed project structures
- Memory corruption recovery
π¨βπ» Development
npm run dev # Development mode with hot reload
npm run build # Build TypeScript
npm run lint # ESLint
npm run typecheck # TypeScript checking
π Requirements
- Node.js 18+
- TypeScript 5.0+
- Valid Scrivener 3 project files
π License
MIT Β© David Condrey
π€ Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
π Support
If you find this project helpful, consider:
- β Starring the repository
- π Reporting bugs or requesting features
- β Buying me a coffee
- π£ Sharing with other Scrivener users
π Documentation
- Holographic Memory Guide - Complete guide to the new HHM system
