返回市场
编剧-MCP

编剧-MCP

作者:dcondrey4 星标更新:2025-09-14

项目介绍

<p align="center"> <img src="https://raw.githubusercontent.com/dcondrey/scrivener-mcp/main/assets/logo.svg" alt="Scrivener MCP Logo" width="200"/> </p> <h1 align="center">Scrivener MCP 服务器</h1> <p align="center"> <strong>一个用于无缝集成 Scrivener 和 Claude AI 的模型上下文协议(MCP)服务器。</strong> </p> <p align="center"> <a href="https://www.npmjs.com/package/scrivener-mcp"> <img src="https://img.shields.io/npm/v/scrivener-mcp.svg" alt="npm 版本"/> </a> <img src="https://img.shields.io/npm/dt/scrivener-mcp.svg" alt="npm 总下载量"/> <img src="https://img.shields.io/npm/dm/scrivener-mcp.svg" alt="npm 每月下载量"/> <a href="https://github.com/dcondrey/scrivener-mcp/actions"> <img src="https://github.com/dcondrey/scrivener-mcp/actions/workflows/ci.yml/badge.svg" alt="构建状态"/> </a> <a href="https://coveralls.io/github/dcondrey/scrivener-mcp"> <img src="https://coveralls.io/repos/github/dcondrey/scrivener-mcp/badge.svg" alt="覆盖率"/> </a> <img src="https://img.shields.io/github/license/dcondrey/scrivener-mcp" alt="许可证"/> <img src="https://img.shields.io/node/v/scrivener-mcp" alt="Node.js 版本"/> <img src="https://img.shields.io/badge/TypeScript-5.3-blue" alt="TypeScript"/> </p> <p align="center"> <a href="https://github.com/dcondrey/scrivener-mcp/stargazers"> <img src="https://img.shields.io/github/stars/dcondrey/scrivener-mcp?style=social" alt="GitHub 星数"/> </a> <a href="https://github.com/dcondrey/scrivener-mcp/network/members"> <img src="https://img.shields.io/github/forks/dcondrey/scrivener-mcp?style=social" alt="GitHub 分支"/> </a> <a href="https://buymeacoffee.com/davidcondrey"> <img src="https://img.shields.io/badge/Buy%20Me%20A%20Coffee-支持-yellow?logo=buy-me-a-coffee" alt="买我一杯咖啡"/> </a> </p> <p align="center"> <a href="#features">特性</a> • <a href="#installation">安装</a> • <a href="#usage">使用</a> • <a href="#api-reference">API</a> • <a href="#contributing">贡献</a> </p>

一个强大的模型上下文协议(MCP)服务器,使 Claude AI 能够与 Scrivener 项目无缝交互。此服务器提供了全面的文档管理、AI 助力的内容分析以及高级写作辅助功能——所有这些都不需要外部服务如 Redis。

🚀 快速开始

安装

npm install -g scrivener-mcp

特性:

  • 自动配置 Claude Desktop - 安装后只需重新启动 Claude Desktop
  • 无需 Redis 或其他外部服务 - 内置嵌入式队列系统
  • 零配置 - 开箱即用
  • 可选的 AI 提供商 - 核心功能无需 API 密钥即可工作

手动配置(可选)

如果自动设置未成功,可以手动配置:

# 运行设置脚本
npx scrivener-mcp setup

# 或者手动添加到 claude_desktop_config.json 中:
{
  "mcpServers": {
    "scrivener": {
      "command": "npx",
      "args": ["scrivener-mcp"]
    }
  }
}

卸载

# 移除包和配置
npm uninstall -g scrivener-mcp

✨ 特性

📚 核心 Scrivener 操作

  • 项目管理:打开和管理 Scrivener .scriv 项目
  • 文档 CRUD:读取、写入、创建、删除和移动文档及文件夹
  • 元数据管理:更新文档标题、关键词和自定义元数据
  • 项目结构:导航并操作分层绑定结构

📝 高级 RTF 支持

  • 完整的 RTF 解析:完全支持 Scrivener 的 RTF 文档格式
  • 格式化内容:保留并操作粗体、斜体、下划线等格式
  • Scrivener 注释:提取并保留 Scrivener 特定注释和评论
  • Unicode 支持:处理国际字符和特殊符号

🤖 AI 助力的内容分析

  • 深入写作分析:包括 Flesch 得分、可读性、节奏等综合指标
  • 风格评估:句子多样性、词汇复杂度、副词使用分析
  • 质量指标:识别陈词滥调、过滤词、重复性
  • 情感分析:跟踪情感弧线和紧张程度
  • 智能建议:可操作的改进建议
  • 遗产分析:基本可读性指标和被动语态检测

🧠 智能内存管理

  • 项目记忆:每个 Scrivener 项目的持久存储
  • 角色档案:跟踪角色细节、关系和弧线
  • 情节线索:管理多个故事线及其进展
  • 风格指南:保持一致的语气、声音、视角和时态
  • 写作统计:跟踪进度、字数和生产力
  • 自动保存:带有版本历史记录的自动备份

✍️ 智能内容增强

  • 智能编辑:12 种以上增强类型以提高散文质量
  • 过滤词消除:移除非必要的限定词
  • 动词强化:用强有力的替代词替换弱动词
  • 句子变化:改善节奏和流畅性
  • 感官增强:添加生动的感官细节
  • 展示而非讲述:将讲述转换为展示
  • 节奏控制:调整故事节奏
  • 内容扩展/压缩:达到目标字数

📖 文档编译与导出

  • 多文档编译:将多个文档合并为单个输出
  • 格式保留:选择保留或剥离 RTF 格式
  • 自定义分隔符:配置文档如何连接

🧠 全息超维记忆(HHM)

  • 语义搜索:按意义查找文档,而不仅仅是关键词
  • 类比推理:发现关系如“主角:英雄 :: 反派:?”
  • 自动记忆:文档自动存储在 10,000 维的语义空间中
  • GPU 加速:WebGPU 驱动的操作,CPU 回退
  • 多模态学习:文本、文档、关系和时间序列
  • 创意组合:梦模式生成新颖的概念关联
  • 记忆进化:后台学习和概念精炼
  • 一致性检查:检测文档之间的矛盾信息
  • SIMD 优化:向量化操作以实现最大性能
  • 向量缓存:LRU 缓存系统用于频繁访问的模式

🛠️ 可用工具

MCP 服务器提供 75 多种强大的工具,以实现全面的 Scrivener 集成:

📁 项目操作

  • open_project(path) - 打开 Scrivener 项目
  • get_structure(options?) - 获取项目的层次结构
    • 选项:maxDepth(限制树深度),folderId(获取特定文件夹),includeTrash(包含回收站),summaryOnly(仅返回计数)
  • get_document_info(documentId) - 获取文档元数据及其完整的父级层次结构和位置
  • get_project_metadata() - 获取项目级别的元数据

📄 文档操作

  • read_document(documentId) - 读取纯文本内容
  • read_document_formatted(documentId) - 保留 RTF 格式的读取
  • write_document(documentId, content) - 将内容写入文档
  • get_document_annotations(documentId) - 获取 Scrivener 注释

🗂️ 文件管理

  • create_document(parentId?, title, type?) - 创建新的文档或文件夹
  • delete_document(documentId) - 删除文档或文件夹
  • move_document(documentId, newParentId?) - 将文档移动到新位置

🔍 元数据 & 搜索

  • update_metadata(documentId, metadata) - 更新文档元数据
  • search_content(query, options?) - 在所有文档中搜索(排除回收站)
  • get_word_count(documentId?) - 获取单词/字符计数

🗑️ 回收站管理

  • list_trash() - 列出回收站中的所有文档
  • search_trash(query, options?) - 仅在已删除文档中搜索
  • recover_document(documentId, targetParentId?) - 从回收站恢复文档

📊 分析 & 编译

  • analyze_document(documentId) - 深度 AI 助力的内容分析
  • deep_analyze_content(documentId) - 综合写作指标和建议
  • critique_document(documentId, focusAreas?) - 获取建设性的反馈
  • compile_documents(documentIds, separator?, preserveFormatting?) - 编译多个文档

✨ 内容增强

  • enhance_content(documentId, enhancementType, options?) - 应用 AI 改进
    • 增强类型:eliminate-filter-wordsstrengthen-verbsvary-sentencesadd-sensory-detailsshow-dont-tellimprove-flowenhance-descriptionsstrengthen-dialoguefix-pacingexpandcondenserewrite

💾 记忆管理

  • save_character_profile(name, role, description?, traits?, arc?) - 存储角色数据
  • get_character_profiles() - 检索所有角色档案
  • update_style_guide(tone?, voice?, pov?, tense?) - 设置写作偏好
  • get_style_guide() - 获取当前风格指南
  • save_plot_thread(name, description, status?, documents?) - 跟踪情节线索
  • get_plot_threads() - 查看所有情节线索
  • get_writing_stats() - 获取项目统计
  • export_project_memory() - 导出完整的记忆数据

🔧 额外工具

  • get_all_documents(includeTrash?) - 获取所有文档的扁平列表
  • save_project() - 保存项目中的任何待处理更改
  • is_project_modified() - 检查项目是否有未保存的更改
  • read_document_rtf(documentId) - 保留 RTF 格式的读取文档
  • update_document_context(documentId, summary?, themes?, pacing?) - 更新文档记忆上下文
  • add_custom_context(key, value) - 向项目记忆添加自定义上下文
  • get_custom_context(key?) - 从项目记忆获取自定义上下文
  • update_writing_session(wordsWritten, duration?) - 更新写作会话统计
  • extract_research_data(html, keywords?) - 从网络内容中提取研究数据
  • import_memory(memoryData) - 从导出的数据导入项目记忆
  • update_document_synopsis_notes(documentId, synopsis?, notes?) - 更新文档的概要和/或笔记
  • batch_update_synopsis_notes(updates) - 一次更新多个文档的概要和/或笔记

🧠 全息记忆(HHM)工具

  • semantic_search(query, k?, threshold?) - 按语义意义查找文档
  • find_analogies(a, b, c) - 发现类比关系(A:B :: C:?)
  • hhm/memorize/text(text, id?) - 将文本存储在语义记忆中
  • hhm/memorize/document(document) - 存储具有结构的文档
  • hhm/memorize/relationship(subject, relation, object) - 存储语义关系
  • hhm/query/text(text, k?) - 使用文本查询记忆
  • hhm/query/analogy(a, b, c) - 查找类比完成
  • hhm/concepts/generate() - 生成新颖的概念组合
  • hhm/dream(duration?) - 进入创意重组模式
  • hhm/consistency/check(memoryIds) - 验证记忆一致性
  • hhm/stats() - 获取 HHM 系统统计
  • hhm/benchmark/run(dimensions?) - 运行性能基准测试
  • hhm/benchmark/gpu() - 测试 GPU 加速能力
  • hhm/cache/clear() - 清除向量缓存
  • hhm/cache/stats() - 获取缓存性能指标

🗄️ 数据库工具(高级)

  • get_database_status() - 获取 SQLite 和 Neo4j 数据库的状态
  • query_database(query, params?) - 在 SQLite 数据库上执行 SELECT 查询
  • get_writing_statistics(days?) - 获取指定时间段的写作统计
  • record_writing_session(wordsWritten, durationMinutes?, documentsWorkedOn?, notes?) - 记录写作会话
  • analyze_story_structure() - 使用 Neo4j 分析文档流程、角色弧线和主题
  • find_character_relationships(characterId) - 查找角色的所有关系
  • create_relationship(fromId, fromType, toId, toType, relationshipType, properties?) - 在实体之间创建关系
  • get_content_analysis_history(documentId, analysisType?) - 获取历史分析数据
  • backup_databases(backupPath?) - 创建项目数据库的备份

📄 RTF 格式支持

此 MCP 服务器包括专门为 Scrivener 文档格式设计的全面 RTF(富文本格式)支持:

  • RTF 解析:将 RTF 转换为带格式保留的结构化内容
  • RTF 生成:从纯文本或格式化文本创建有效的 RTF
  • Scrivener 扩展:处理 Scrivener 特定的 RTF 扩展和注释
  • 字符编码:正确处理 Unicode 和特殊字符
  • 元数据提取:从 RTF 信息组中提取文档元数据

🏗️ 架构

核心组件

  • ScrivenerProject - 主项目操作类
  • RTFHandler - 全面的 RTF 解析和生成
  • DatabaseService - 管理 SQLite 和 Neo4j 数据库操作
  • MemoryManager - 持久的项目记忆和上下文存储
  • ContentAnalyzer - 深度写作分析和指标
  • ContentEnhancer - AI 助力的内容改进引擎
  • HolographicMemorySystem - 10,000 维的语义记忆,带有 GPU 加速
  • MCP 服务器 - 工具定义和请求处理

数据存储

  • SQLite 数据库 - 存储在每个项目内的 .scrivener-databases/scrivener.db
    • 文档、角色、情节线索、主题、写作会话
    • 内容分析历史和关系
  • Neo4j 图数据库 - 可选的图数据库用于关系分析
    • 文档流程、角色网络、主题进展
    • 如果不可用则优雅地回退
  • 内存文件 - 存储在 .ai-memory 文件夹中以便快速访问
  • 自动备份维护历史和数据完整性
  • 所有数据在会话之间持久存在,并随项目一起旅行

💻 使用示例

基本工作流

// 打开项目
open_project("/path/to/MyNovel.scriv")

// 获取项目结构
get_structure()

// 读取文档
read_document("UUID-OF-DOCUMENT")

// 分析内容
deep_analyze_content("UUID-OF-DOCUMENT")

// 应用增强
enhance_content("UUID-OF-DOCUMENT", "strengthen-verbs")

概要和笔记管理

// 更新单个文档的概要
update_document_synopsis_notes("UUID-OF-CHAPTER", {
  synopsis: "伊丽莎白在舞会上第一次见到达西先生,并对他产生了厌恶。",
  notes: "重要的第一印象场景 - 设立中心冲突"
})

// 批量更新多个文档
batch_update_synopsis_notes([
  {
    documentId: "UUID-OF-CHAPTER-1",
    synopsis: "介绍伊丽莎白和她的家人",
    notes: "角色建立章节"
  },
  {
    documentId: "UUID-OF-CHAPTER-2", 
    synopsis: "内瑟菲尔德舞会",
    notes: "主要社交活动 - 引入彬格莱和达西"
  }
])

数据库操作

// 检查数据库状态
get_database_status()

// 使用自定义 SQL 查询文档
query_database("SELECT title, word_count FROM documents WHERE word_count > 1000")

// 记录写作会话
record_writing_session({
  wordsWritten: 1250,
  durationMinutes:  45,
  documentsWorkedOn: ["UUID-1", "UUID-2"],
  notes: "富有成效的早晨会话"
})

// 获取写作统计
get_writing_statistics(30) // 最近 30 天

// 分析故事结构