sageread-mcp

sageread-mcp

Read-only MCP server that lets AI agents query SageRead data: books, reading progress, stats, notes, AI chats, papers, and semantic vector search, with API keys staying inside the app. Supports both Better SageRead and upstream SageRead data directories.

Category
访问服务器

README

sageread-mcp

Better SageRead 阅读数据的 MCP server(只读):让任何支持 MCP 的 AI Agent 查询你的书库、阅读进度、阅读时长、划线标注、AI 对话与论文库,并对向量库做语义检索。

Better SageRead 是基于上游 xincmm/sageread 发展的独立维护版;本 MCP 同时兼容两者的数据目录(优先读 Better SageRead,见「数据目录」一节)。

  • 数据安全:以 readonly 模式打开 SageRead 的 SQLite 数据库,不会以任何形式写入,不影响 SageRead 运行
  • 密钥不出 app:语义检索的嵌入调用经 SageRead 本地通道转发,本进程不读取/不持有任何 API Key
  • SageRead 不在运行时只读工具可用(数据是本地文件);semantic_search 需应用运行(嵌入在 app 内执行)
  • 论文支持:读取论文目录、正文与分组,列出论文标注(含星标/类别/来源)
  • 语义检索:基于 SageRead 的向量库(sqlite-vec)做自然语言近邻检索
  • 跨应用联动:配合其他 MCP(如知识库类),可以让 Agent 完成"把某段阅读对话归档到知识库"这类操作

工具(tools)

工具 说明 参数
list_books 书库全部书籍(含进度状态) include_trashed?
get_book_progress 单本书进度 query 书名(模糊)或 id
get_reading_stats 阅读时长/次数统计 period: today / week / month / total
list_threads AI 对话列表 book? 可按书过滤;starred_only? 只看星标;scope? 按作用域
get_thread 对话完整内容 threadId
list_book_notes 划线/标注/书签(论文标注含星标/类别/来源,位置渲染为可读形式) booktype?
list_notes 读书笔记面板的 Markdown 笔记(notes 表,与划线标注不同源),按书/星标过滤 book?starred?
export_thread_markdown 对话导出为 Markdown threadId
list_tags 书库所有标签
list_skills AI 技能库(可选返回完整内容) include_content?
get_paper_info 论文书目元数据(frontmatter + 中文标题/摘要 + 收藏文件夹,字段保持 Pandoc/CSL 原义) paper 标题(模糊)或 id
get_paper_toc 论文目录(解析 paper.md 的标题层级) paper 标题(模糊)或 id
read_paper 论文正文切片(offset/limit 分段阅读) paperoffset?limit?(默认 30000,上限 60000)
read_paper_section 按小节标题读论文章节(超 30000 字符截断并标注小节总长度) paperheading
list_paper_folders 论文分组(文件夹/颜色/包含论文)
list_papers 批量文献卡片(书目信息一览,供初筛) collection?include_abstract?limit?(默认 50,上限 200)
export_paper_citation 导出参考文献引用(8 种格式,见下),单篇或整个收藏文件夹 paper?collection?(两者至少给一个),format?(默认 bibtex)
semantic_search 向量库语义检索(默认论文库) queryscope?(papers/books/all),paper_id?collection?(收藏文件夹过滤),book_id?top_k?(默认 8,上限 30)
get_chunk_context 取语义检索命中块的上下文(前后各扩 radius 块,当前块有标记) paper_idchunk_orderradius?(默认 1,上限 3)

论文工具(get_paper_info / get_paper_toc / read_paper / read_paper_section)仅支持 MARKDOWN 格式的论文书籍,其他格式会返回明确错误。

export_paper_citationformat 支持 8 种格式:

  • bibtex(默认):@article{} 条目,key 为「第一作者姓+年份+标题首实词」,缺字段省略对应行
  • gbt7714:GB/T 7714-2015 期刊格式,超 3 位作者用 et al.
  • apa:APA 第 7 版,Zhao, C., ... & Hu, Y.-S. (2020). 形式,附 doi.org 链接
  • mla:MLA 第 9 版,3 位及以上作者只写第一作者 + et al.,题名转 Title Case 加引号
  • chicago:Chicago 参考文献表格式,第一作者倒置其余正序,超 10 位取前 7 + et al.
  • ieee:IEEE 格式,名首字母 + 姓,超 6 位只写第一作者 + et al.
  • vancouver:Vancouver 格式,姓 + 名首字母连写,超 6 位取前 6 + et al.,尾页缩写(708-711 → 708-11)
  • ris:RIS 机器可读格式(Zotero/EndNote 可直接导入)

Title Case 转换(mla/chicago)做了保守处理:化学式/公式/含数字或内部大写的词(Na-ion、P2-type、$x$ 等)原样保留。

语义检索说明

semantic_search 需要:① SageRead 应用正在运行(启动时会写 mcp-local.json 本地通道凭据); ② 已在「设置 → 向量模型」配置并选中向量模型;③ 对论文/书籍执行过向量化。

查询文本的向量化由 SageRead 应用内执行(用当前选中模型与 keyring 密钥),sageread-mcp 只发文本、只收回向量——API Key 绝不进入本进程。未启动应用/未配置模型时,工具返回带引导的降级提示而非崩溃。

  • 查询向量维度与向量索引维度不一致时,会提示在 SageRead 中重建向量索引
  • collection 按收藏文件夹过滤论文(仅影响论文域),与 paper_id 同给时取交集

安装与构建

npm install
npm run build        # 产物在 dist/
npm run smoke        # 冒烟测试(连真实开发版数据库走一遍)
SAGEREAD_SMOKE_EMBED=1 npm run smoke   # 追加 semantic_search 的真实嵌入调用

要求 Node.js >= 18;目前仅支持 Windows(数据目录路径按 %APPDATA% 解析)。

数据目录

  • 默认读 Better SageRead 发行版%APPDATA%\com.bettersageread\database\app.db;不存在时回退上游 SageRead(com.xincmm.sageread
  • --dev 参数或 SAGEREAD_DEV=1:读开发版(com.bettersageread.dev,回退 com.xincmm.sageread.dev
  • SAGEREAD_DB_PATH:完全自定义 db 路径

客户端配置

Claude Desktop

claude_desktop_config.json

{
  "mcpServers": {
    "sageread": {
      "command": "npx",
      "args": ["-y", "sageread-mcp"]
    }
  }
}

--dev 仅当你使用开发版数据目录时加(放在 args 末尾)。

Cherry Studio

设置 → MCP 服务器 → 添加:

{
  "mcpServers": {
    "sageread": {
      "command": "npx",
      "args": ["-y", "sageread-mcp"]
    }
  }
}

从源码构建(备选)

git clone https://github.com/Feplus2/sageread-mcp.git
cd sageread-mcp
npm install
npm run build

然后以 node 直接启动(路径按实际位置替换):

{
  "mcpServers": {
    "sageread": {
      "command": "node",
      "args": ["<path-to>/sageread-mcp/dist/index.js"]
    }
  }
}

Kimi CLI

config.tomlmcp_servers 一节(stdio 类型,command + args 同上)。

许可证

MIT

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选