noveletary
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., "@noveletaryAdd fact: The hero died in chapter 3"
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.
noveletary
novel + secretary — a constraint-maintained narrative knowledge base and MCP server that checks the internal consistency of fiction, with first-class support for Japanese prose.
What
A local MCP server an LLM (Claude Code, Claude.ai Projects) calls while you write or import a novel. It tracks story facts in an append-only operation log, gates contradictions at write time, branches parallel plot drafts, and routes the questions it cannot decide to you — the author.
Construction = checked mutation. Adding a fact runs hard-constraint checks (a dead character acting, a monotone ledger decreasing, a temporal cycle, an orphaning delete) and rejects contradictions with the conflicting fact set.
Verification = the same engine, batch mode. Audit a whole branch; hard violations are certain, optional semantic checks (NLI) become author questions.
Story branches are first-class: parallel drafts (A-plot / B-plot) audited independently, merged with structural conflict detection, rolled back without losing history.
The author is the oracle. Unresolved aliases, merge conflicts, and semantic doubts go to the author, not to LLM guesswork. Answers persist and propagate through later checks.
Related MCP server: THOUGHT
Why
LLM-driven consistency checking is wasteful and unreliable when the LLM both writes and self-grades. noveletary keeps a deterministic constraint engine and the author as the trusted core, and treats the LLM as a fallible translator with no authority. Most "contradictions" in fiction are structurally decidable (state machines, numeric invariants, temporal constraints) and need no semantics; the semantic residual is the only part a language model judges, and even then the verdict is a question, not a gate.
Status
Early (v0.1). Core engine, store, tri-temporal facts (valid interval / discourse / transaction), branching, merge, audit, outline beats + foreshadow ledger, and the MCP server are implemented and tested. The Japanese NLP extraction layer (KWJA zero-anaphora + full noun-phrase reconstruction, GiNZA fallback) is the standard path but stays advisory — propose_canon_facts drafts canon from prose for author curation; it never gates. KWJA needs Python < 3.14 and self-seeds its checkpoint cache on first use. Not yet deployed remotely (Cloudflare Workers + D1 is a known migration path).
Install
pip install -e ".[dev]" # core + tests
pip install -e ".[dev,nlp]" # add Japanese NLP (GiNZA, KWJA)Run as an MCP server
noveletary-mcp # stdio
claude mcp add noveletary -- noveletary-mcp # register with Claude CodeSQLite state persists in data/narrative.db (run from the repo root; override with NARRATIVE_DB).
Tools (LLM-facing)
Facts are tri-temporal: chapter is valid-time as an interval [chapter, valid_to) (when a
fact is true in the story), narrated_in is discourse-time (which chapter reveals it — for
foreshadowing / flashbacks), and the op-log is transaction-time. Each tool's description is
prefixed with its category and carries read-only / destructive annotations.
Category | Tools | Purpose |
read |
| state before writing (valid- or discourse-time sliced); |
fact |
| register facts (hard-gated, atomic batches) / move-or-relabel in place / delete (orphan check) / bulk-load an existing work (ungated → |
branch |
| parallel drafts, structural merge, non-destructive rollback, cleanup |
constraint |
| work-specific hard rules as data, versioned per branch |
question |
| the author-oracle channel; |
verify |
| hard violations always; |
outline |
| outline-first beats and a Chekhov ledger (foreshadow with overdue tracking) |
nlp |
| mechanism prose extraction — draft canon facts from a chapter, or cross-check the LLM's self-report |
To drive the tools from unattended agents / Claude Code subagents, allowlist the whole server
(mcp__noveletary) rather than individual tools — see AGENTS.md.
License
MIT. See LICENSE.
Maintenance
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
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/penta2himajin/noveletary'
If you have feedback or need assistance with the MCP directory API, please join our Discord server