Provides comprehensive database management capabilities including connection management, SQL operations (CRUD), batch operations, transaction processing, and automatic schema initialization for novel and writing project data storage.
MCP Novel Assistant - 小说管理助手
基于Model Context Protocol (MCP)的小说管理工具,使用SQLite数据库存储小说信息。
🎉 项目状态
✅ 已完成功能
- 完整的数据库结构设计(17个表 + 4个视图)
- 9个 MCP 工具(数据库管理、SQL操作、小说管理、人物管理、地点管理、分卷管理、章节管理、事件管理、冲突检测、纲要生成)
- 可靠的数据库初始化系统
- 智能数据导出功能
- 完整的示例数据创建
- 所有功能通过 MCP 工具测试验证
🔧 技术特性
- 使用 Zod 进行参数验证
- 支持复杂的表关系和外键约束
- 智能冲突检测系统
- 自动纲要生成功能
- 完整的日志记录系统
功能特性
数据库管理 (dbHelper)
- 自动创建目录和数据库
- 连接、断开、初始化数据库
- 智能导出数据为Markdown格式
- 支持完整的表结构文档生成
- 包含详细的字段注释和表关系说明
- 可靠的数据库初始化,确保使用最新表结构
SQL操作 (sqlHelper)
- 增删改查操作
- 批量操作和事务处理
- 支持独立数据库连接
小说管理 (novelHelper)
- 小说的增删改查操作
- 支持按名称、作者、类型等字段搜索
- 分页查询和列表展示
- 完整的小说信息管理
人物管理 (characterHelper)
- 人物的增删改查操作
- 支持按姓名、重要性等级等字段搜索
- 完整的人物属性管理(性别、年龄、性格、冲突等)
- 人物关系管理
地点管理 (locationHelper)
- 地点的增删改查操作
- 支持按名称、类型等字段搜索
- 完整的地点属性管理(类型、氛围、气候等)
- 地点关系管理
分卷管理 (volumeHelper)
- 分卷的增删改查操作
- 支持按名称等字段搜索
- 分卷顺序管理
章节管理 (chapterHelper)
- 章节的增删改查操作
- 支持按名称、状态等字段搜索
- 章节状态管理(未完成/已完成)
事件管理 (eventHelper)
- 事件的增删改查操作
- 支持按名称、类型、重要性等级等字段搜索
- 完整的事件属性管理(类型、情感基调、后果等)
冲突检测 (conflictDetectionHelper)
- 检测时间冲突(时间段重叠等)
- 检测人物存在冲突(开篇不存在但出现在事件中)
- 检测地点存在冲突
- 检测事件逻辑冲突
纲要生成 (outlineGeneratorHelper)
- 生成章节细纲
- 生成分卷总纲
- 生成小说总纲
- 导出纲要到Markdown文件
完整的小说结构管理
- 分层结构管理: 小说 → 分卷 → 章节 → 事件
- 时间线管理: 世界 → 时期 → 时间段 → 事件
- 人物管理: 支持人物出场/离场权重控制,开篇存在状态
- 人物属性: 性别、年龄、性格、外在冲突、内在冲突、外貌、职业、重要性等级、人物弧线、动机、恐惧
- 人物关系: 有方向性的社会关系(如A是B的父亲,B是A的儿子)
- 双向亲密度系统: 支持A对B和B对A的双向亲密度和关系类型
- 地点管理: 事件发生地点管理,支持地点类型、氛围、气候、层级关系
- 物品道具管理: 支持物品的创建、获取、使用、丢失等状态跟踪
- 情节线索管理: 支持多条情节线索的并行发展
- 人物发展轨迹: 记录人物在不同时期的发展变化
- 地点关系管理: 管理地点之间的空间关系
- 内容管理: 叙事风格、主题思想、背景设定、故事主线、结局走向、核心冲突
- 全局字数管理: 统一设置每章节的预计字数
- 章节状态管理: 简化的完成/未完成状态
高级功能特性
数据库视图系统
- 存在状态视图: 动态计算人物和地点在各时间段的存在状态
- 出场统计视图: 分析人物出场频率和重要性
- 情节密度视图: 分析各时间段的情节密度分布
智能分析功能
- 人物关系分析: 支持复杂的人物关系网络分析
- 情节线索跟踪: 多条情节线索的并行发展管理
- 人物发展轨迹: 记录和分析人物成长变化
- 地点关系管理: 空间关系的层次化管理
纲要生成支持
- 章节细纲: 基于章节-事件关系生成详细章节大纲
- 分卷总纲: 基于分卷结构生成分卷总纲
- 小说总纲: 基于完整结构生成小说总纲
- 字数规划: 全局统一的字数管理和进度跟踪
日志系统
- 自动记录所有操作
- 分级日志:info、debug、error、warn
- 存储到数据库目录
工具说明
dbHelper
参数:
targetDirectory
: 数据库目录路径operation
: connect|disconnect|init|export
示例:
sqlHelper
参数:
operation
: select|insert|update|delete|batch|transactionsql
: SQL语句params
: 参数数组databasePath
: 数据库路径
示例:
novelHelper
参数:
operation
: create|read|update|delete|list|searchnovelId
: 小说ID(用于读取、更新、删除)name
: 小说名称description
: 小说简介volumeCount
: 卷数chapterCount
: 章节数novelType
: 小说类型author
: 作者narrativeStyle
: 叙事风格theme
: 主题思想backgroundSetting
: 背景设定mainStoryline
: 故事主线endingDirection
: 结局走向coreConflict
: 核心冲突targetWordCount
: 每章节预计字数searchKeyword
: 搜索关键词searchField
: 搜索字段(name|author|description|novel_type)limit
: 返回结果数量限制(默认50)offset
: 结果偏移量(默认0)
示例:
characterHelper
参数:
operation
: create|read|update|delete|list|searchcharacterId
: 人物ID(用于读取、更新、删除)novelId
: 所属小说IDname
: 人物姓名description
: 人物描述gender
: 性别(男/女/其他/未知)age
: 年龄personality
: 性格描述externalConflict
: 外在冲突internalConflict
: 内在冲突appearance
: 外貌描述occupation
: 职业importanceLevel
: 重要性等级(主角/重要配角/配角/龙套)characterArc
: 人物弧线motivation
: 动机fear
: 恐惧existsAtStart
: 开篇是否存在searchKeyword
: 搜索关键词searchField
: 搜索字段limit
: 返回结果数量限制(默认50)offset
: 结果偏移量(默认0)
示例:
locationHelper
参数:
operation
: create|read|update|delete|list|searchlocationId
: 地点ID(用于读取、更新、删除)novelId
: 所属小说IDname
: 地点名称description
: 地点描述locationType
: 地点类型(城市/乡村/山脉/森林/海洋/建筑/其他)atmosphere
: 氛围climate
: 气候parentLocationId
: 父地点IDexistsAtStart
: 开篇是否存在searchKeyword
: 搜索关键词searchField
: 搜索字段limit
: 返回结果数量限制(默认50)offset
: 结果偏移量(默认0)
示例:
volumeHelper
参数:
operation
: create|read|update|delete|list|searchvolumeId
: 分卷ID(用于读取、更新、删除)novelId
: 所属小说IDname
: 分卷名称description
: 分卷描述orderIndex
: 分卷顺序searchKeyword
: 搜索关键词searchField
: 搜索字段limit
: 返回结果数量限制(默认50)offset
: 结果偏移量(默认0)
示例:
chapterHelper
参数:
operation
: create|read|update|delete|list|searchchapterId
: 章节ID(用于读取、更新、删除)volumeId
: 所属分卷IDname
: 章节名称description
: 章节描述orderIndex
: 章节顺序status
: 章节状态(未完成/已完成)searchKeyword
: 搜索关键词searchField
: 搜索字段limit
: 返回结果数量限制(默认50)offset
: 结果偏移量(默认0)
示例:
eventHelper
参数:
operation
: create|read|update|delete|list|searcheventId
: 事件ID(用于读取、更新、删除)timeSegmentId
: 所属时间段IDlocationId
: 发生地点IDname
: 事件名称plot
: 情节描述eventType
: 事件类型(战斗/对话/探索/情感/转折/日常/其他)importanceLevel
: 重要性等级(1-10)emotionalTone
: 情感基调(紧张/悲伤/欢乐/愤怒/恐惧/平静/其他)consequences
: 后果描述orderIndex
: 事件顺序searchKeyword
: 搜索关键词searchField
: 搜索字段limit
: 返回结果数量限制(默认50)offset
: 结果偏移量(默认0)
示例:
conflictDetectionHelper
参数:
operation
: check_all|check_time|check_character|check_location|check_eventnovelId
: 小说IDcharacterId
: 人物ID(用于特定人物检测)locationId
: 地点ID(用于特定地点检测)eventId
: 事件ID(用于特定事件检测)databasePath
: 数据库路径
示例:
outlineGeneratorHelper
参数:
operation
: generate_chapter|generate_volume|generate_novel|export_chapterchapterId
: 章节ID(用于生成章节细纲)volumeId
: 分卷ID(用于生成分卷总纲)novelId
: 小说ID(用于生成小说总纲)outputDir
: 输出目录databasePath
: 数据库路径
示例:
数据库结构
核心表结构
novels (小说表)
字段 | 类型 | 说明 |
---|---|---|
id | INTEGER | 主键 |
name | TEXT | 小说名称 |
description | TEXT | 简介 |
volume_count | INTEGER | 卷数 |
chapter_count | INTEGER | 章节数 |
novel_type | TEXT | 类型 |
author | TEXT | 作者 |
narrative_style | TEXT | 叙事风格 |
theme | TEXT | 主题思想 |
background_setting | TEXT | 背景设定 |
main_storyline | TEXT | 故事主线 |
ending_direction | TEXT | 结局走向 |
core_conflict | TEXT | 核心冲突 |
volume_name_length | INTEGER | 卷名称长度(默认5) |
chapter_name_length | INTEGER | 章节名称长度(默认7) |
target_word_count | INTEGER | 每章节预计字数(默认3000) |
created_at | DATETIME | 创建时间 |
updated_at | DATETIME | 更新时间 |
volumes (分卷表)
字段 | 类型 | 说明 |
---|---|---|
id | INTEGER | 主键 |
novel_id | INTEGER | 所属小说ID(外键) |
name | TEXT | 分卷名称 |
description | TEXT | 分卷描述 |
order_index | INTEGER | 分卷顺序 |
created_at | DATETIME | 创建时间 |
updated_at | DATETIME | 更新时间 |
chapters (章节表)
字段 | 类型 | 说明 |
---|---|---|
id | INTEGER | 主键 |
volume_id | INTEGER | 所属分卷ID(外键) |
name | TEXT | 章节名称 |
description | TEXT | 章节描述 |
order_index | INTEGER | 章节顺序 |
status | TEXT | 章节状态(未完成/已完成) |
created_at | DATETIME | 创建时间 |
updated_at | DATETIME | 更新时间 |
characters (人物表)
字段 | 类型 | 说明 |
---|---|---|
id | INTEGER | 主键 |
novel_id | INTEGER | 所属小说ID(外键) |
name | TEXT | 人物姓名 |
description | TEXT | 人物描述 |
gender | TEXT | 性别(男/女/其他/未知) |
age | INTEGER | 年龄 |
personality | TEXT | 性格描述 |
external_conflict | TEXT | 外在冲突(与外部环境的矛盾) |
internal_conflict | TEXT | 内在冲突(内心的矛盾斗争) |
appearance | TEXT | 外貌描述 |
occupation | TEXT | 职业 |
importance_level | INTEGER | 重要性等级(1-10) |
character_arc | TEXT | 人物弧线 |
motivation | TEXT | 动机 |
fear | TEXT | 恐惧 |
exists_at_start | BOOLEAN | 开篇是否存在(默认1) |
created_at | DATETIME | 创建时间 |
updated_at | DATETIME | 更新时间 |
时间线管理表
- worlds (世界表) - 小说中的世界设定
- periods (时期表) - 世界中的不同时期(如远古、现代、清朝等)
- time_segments (时间段表) - 时期下的时间段和时间点
- events (事件表) - 具体事件,发生在特定时间段和地点
实体管理表
- characters (人物表) - 小说中的所有人物
- locations (地点表) - 小说中的所有地点
- items (物品道具表) - 小说中的物品和道具
关系管理表
- event_characters (事件-人物关系表) - 记录人物在事件中的出场/离场
- character_relationships (人物关系表) - 记录人物之间的社会关系和双向亲密度
- event_entity_status (事件实体状态表) - 记录人物/地点在事件中的进入/离开状态
- chapter_events (章节-事件关系表) - 记录章节包含的事件及其顺序
辅助管理表
- plot_threads (情节线索表) - 管理多条情节线索的并行发展
- character_development (人物发展轨迹表) - 记录人物在不同时期的发展变化
- location_relationships (地点关系表) - 管理地点之间的空间关系
分析视图
- character_existence_view - 人物存在状态视图
- location_existence_view - 地点存在状态视图
- character_appearance_stats - 人物出场统计视图
- plot_density - 情节密度分析视图
表关系图
导出功能
数据库支持完整的结构导出,生成以下文件:
01_数据库总结构.md
- 完整的表结构和关系说明02_novels.md
到18_location_relationships.md
- 各表的数据文件(按固定顺序)
导出文件顺序:
01_数据库总结构.md
- 完整的表结构和关系说明02_novels.md
- 小说表03_volumes.md
- 分卷表04_chapters.md
- 章节表05_characters.md
- 人物表06_locations.md
- 地点表07_worlds.md
- 世界表08_periods.md
- 时期表09_time_segments.md
- 时间段表10_events.md
- 事件表11_event_characters.md
- 事件-人物关系表12_character_relationships.md
- 人物关系表13_event_entity_status.md
- 事件实体状态表14_chapter_events.md
- 章节-事件关系表15_items.md
- 物品道具表16_plot_threads.md
- 情节线索表17_character_development.md
- 人物发展轨迹表18_location_relationships.md
- 地点关系表
安装使用
文件结构
返回格式
所有工具返回MCP标准格式:
快速开始
1. 初始化数据库
2. 创建小说
3. 创建人物
4. 导出数据
开发说明
在你开发的时候,如果context7可用,请善用context7查询文档。
This server cannot be installed
local-only server
The server can only run on the client's local machine because it depends on local resources.
A novel management tool that uses SQLite database to store and manage novel information including chapters, characters, and plot outlines. Provides database operations and SQL query capabilities for writers to organize their creative work through natural language.