
Writing MCP
Built for novelists working with long manuscripts that don't fit in a single context window. Syncs from Scrivener or native markdown, builds a SQLite index of scenes, characters, places, and relationships, then lets the AI query that index before loading prose. Core operations: sync project structure, find scenes by tag or character, get character arcs across chapters, read specific scene prose, edit with confirmation and git history, flag continuity issues. Includes backup and restore tooling, sidecar metadata maintenance, and review bundle generation. Designed to pair with OpenClaw but works with any MCP client over stdio. Ships with agent boot files and workflow guidance for continuity passes, subplot tracking, and targeted revisions without feeding the full manuscript into every prompt.
- GitHub stars
- 1
- tools
- 27
- auth
- Required
- transport
- STDIO
- env vars
- 3
- last updated
- Jun 11, 2026
Tools
27 toolsPublic tool metadata for what this MCP can expose to an agent.
syncRun `sync` after your latest writing session.
Run `sync` after your latest writing session.
No parameter schema in public metadata yet.
find_scenesAsk `find_scenes` for scenes involving a specific character or tag (for example, all scenes tagged `injury` or `promise`).
Ask `find_scenes` for scenes involving a specific character or tag (for example, all scenes tagged `injury` or `promise`).
No parameter schema in public metadata yet.
get_arcUse `get_arc` to review that character's ordered progression across the manuscript.
Use `get_arc` to review that character's ordered progression across the manuscript.
No parameter schema in public metadata yet.
get_scene_proseLoad only the suspect scenes with `get_scene_prose`.
Load only the suspect scenes with `get_scene_prose`.
No parameter schema in public metadata yet.
flag_sceneAttach follow-up notes with `flag_scene` where continuity needs a fix.
Attach follow-up notes with `flag_scene` where continuity needs a fix.
No parameter schema in public metadata yet.
list_threadsRun `list_threads` for the project.
Run `list_threads` for the project.
No parameter schema in public metadata yet.
get_thread_arcUse `get_thread_arc` to inspect scene order and beat labels for each thread.
Use `get_thread_arc` to inspect scene order and beat labels for each thread.
No parameter schema in public metadata yet.
track_thread_arcWhen a beat is missing, call `track_thread_arc` to add or update it on the right scene.
When a beat is missing, call `track_thread_arc` to add or update it on the right scene.
No parameter schema in public metadata yet.
enrich_sceneAfter rewriting scenes, call `enrich_scene` to re-derive lightweight metadata from current prose.
After rewriting scenes, call `enrich_scene` to re-derive lightweight metadata from current prose.
No parameter schema in public metadata yet.
update_scene_metadataUse `update_scene_metadata` for intentional editorial fields (for example, beat, POV, status, and tags).
Use `update_scene_metadata` for intentional editorial fields (for example, beat, POV, status, and tags).
No parameter schema in public metadata yet.
connect_character_place_evidenceUse `connect_character_place_evidence` when a scene proves paired sheet-backed character/place evidence.
Use `connect_character_place_evidence` when a scene proves paired sheet-backed character/place evidence.
No parameter schema in public metadata yet.
connect_scene_character_evidenceUse `connect_scene_character_evidence` for character-only evidence.
Use `connect_scene_character_evidence` for character-only evidence.
No parameter schema in public metadata yet.
connect_scene_place_evidenceUse `connect_scene_place_evidence` for place-only evidence.
Use `connect_scene_place_evidence` for place-only evidence.
No parameter schema in public metadata yet.
audit_relationship_metadataUse `audit_relationship_metadata` for retained sidecar/frontmatter relationship fields.
Use `audit_relationship_metadata` for retained sidecar/frontmatter relationship fields.
No parameter schema in public metadata yet.
list_chaptersUse `list_chapters` plus `assign_scene_to_chapter` or `move_scene` for chapter placement and ordering.
Use `list_chapters` plus `assign_scene_to_chapter` or `move_scene` for chapter placement and ordering.
No parameter schema in public metadata yet.
assign_scene_to_chapterUse `list_chapters` plus `assign_scene_to_chapter` or `move_scene` for chapter placement and ordering.
Use `list_chapters` plus `assign_scene_to_chapter` or `move_scene` for chapter placement and ordering.
No parameter schema in public metadata yet.
move_sceneUse `list_chapters` plus `assign_scene_to_chapter` or `move_scene` for chapter placement and ordering.
Use `list_chapters` plus `assign_scene_to_chapter` or `move_scene` for chapter placement and ordering.
No parameter schema in public metadata yet.
search_metadataUse `search_metadata` for keyword/FTS metadata searches across indexed titles, loglines, tags, characters, places, and versions.
Use `search_metadata` for keyword/FTS metadata searches across indexed titles, loglines, tags, characters, places, and versions.
No parameter schema in public metadata yet.
propose_editAsk the AI to call `propose_edit` for a specific scene.
Ask the AI to call `propose_edit` for a specific scene.
No parameter schema in public metadata yet.
commit_editAccept with `commit_edit` or reject with `discard_edit`.
Accept with `commit_edit` or reject with `discard_edit`.
No parameter schema in public metadata yet.
discard_editAccept with `commit_edit` or reject with `discard_edit`.
Accept with `commit_edit` or reject with `discard_edit`.
No parameter schema in public metadata yet.
list_snapshotsUse `list_snapshots` (and optional `snapshot_scene`) to inspect or preserve revision history.
Use `list_snapshots` (and optional `snapshot_scene`) to inspect or preserve revision history.
No parameter schema in public metadata yet.
snapshot_sceneUse `list_snapshots` (and optional `snapshot_scene`) to inspect or preserve revision history.
Use `list_snapshots` (and optional `snapshot_scene`) to inspect or preserve revision history.
No parameter schema in public metadata yet.
enrich_scene_characters_batchStart with `enrich_scene_characters_batch` using the default `dry_run=true` to preview inferred links for a project, chapter, or explicit scene list.
Start with `enrich_scene_characters_batch` using the default `dry_run=true` to preview inferred links for a project, chapter, or explicit scene list.
No parameter schema in public metadata yet.
get_async_job_statusPoll `get_async_job_status` until the batch job completes, then review `job.result.results` for changed scenes, ambiguous matches, and partial failures.
Poll `get_async_job_status` until the batch job completes, then review `job.result.results` for changed scenes, ambiguous matches, and partial failures.
No parameter schema in public metadata yet.
get_runtime_configStart by checking `get_runtime_config` (or `describe_workflows`) and confirm whether `db_migration_warnings` contains `LEGACY_JOIN_ROWS_SKIPPED`.
Start by checking `get_runtime_config` (or `describe_workflows`) and confirm whether `db_migration_warnings` contains `LEGACY_JOIN_ROWS_SKIPPED`.
No parameter schema in public metadata yet.
describe_workflowsStart by checking `get_runtime_config` (or `describe_workflows`) and confirm whether `db_migration_warnings` contains `LEGACY_JOIN_ROWS_SKIPPED`.
Start by checking `get_runtime_config` (or `describe_workflows`) and confirm whether `db_migration_warnings` contains `LEGACY_JOIN_ROWS_SKIPPED`.
No parameter schema in public metadata yet.
Sponsors
Configuration
WRITING_SYNC_DIR*Path to the manuscript sync folder that mcp-writing indexes and edits.
DB_PATHOptional path for the SQLite index database used by the server.
OWNERSHIP_GUARD_MODEdefault: warnStartup ownership policy for sync-folder files.
Readme
mcp-writing
An MCP service for AI-assisted reasoning and editing on long-form fiction projects.
Designed to work with OpenClaw but compatible with any MCP-capable AI gateway.
Quick launch
For local stdio MCP clients, run the published package directly:
WRITING_SYNC_DIR=/path/to/sync-dir DB_PATH=./writing.db npx -y @hanna84/mcp-writing
Details
- Repository
- github.com/hannasdev/mcp-writing
- Website
- hannasdev.github.io/mcp-writing
- Package
@hanna84/mcp-writing- Transport
- STDIO
- Auth
- Required
- Registry
- MCP registry, active