Skip to main content
Glama
penta2himajin

noveletary

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, branching, merge, audit, and MCP server are implemented and tested. The Japanese NLP extraction layer (GiNZA reconciliation; KWJA zero-anaphora adapter) is optional and advisory; the KWJA path awaits its upstream model host. 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 Code

SQLite state persists in data/narrative.db (run from the repo root; override with NARRATIVE_DB).

Tools (LLM-facing)

Tool

Purpose

get_state / get_log

state before writing (chapter-sliced, subject-focused), history

add_fact / add_facts

register facts (hard-gated) — writing from scratch

import_facts

bulk-load an existing work (not gated) — then audit surfaces issues

update_fact / delete_fact

supersession (+retcon check) / delete (orphan check)

audit

hard violations always; include_soft=True adds NLI-based author questions

create_branch / merge_branches / rollback_branch

parallel drafts, structural merge, non-destructive rollback

list_open_questions / answer_question

the author-oracle channel

extract_facts / reconcile_facts

independent prose extraction; cross-check the LLM's self-report

License

MIT. See LICENSE.

A
license - permissive license
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

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