原文地址:微信读书MCP Server:当AI遇上你的私人图书馆,智能阅读时代开启!
微信读书凭借海量资源和社交化阅读体验,在咱们国内已成为数亿用户的“掌上图书馆”,随着人工智能技术的渗透,读书行业也自然面临着AI的强制改造。
这不,最近超级火爆的MCP Server(Model Context Protocol Server)的创新工具正在暗地里悄悄的改变我们的阅读方式。
下面我们将深度解析微信读书MCP Server如何通过AI技术,让你我的阅读管理更智能、更高效。
再啰嗦几句,啥是MCP Server?
为了避免有些小伙伴还不知道MCP是啥,这里再简单啰嗦几句,MCP(Model Context Protocol)是一种专为AI与应用程序交互设计的协议。
它允许用户通过自然语言指令直接调用API功能。比如,通过Claude等AI助手,我们不需要手动操作客户端,即可完成数据查询、任务管理等复杂操作。
简单说,你用的所有工具或应用就像一个插头,而MCP就是个插座,一个让所有插头(你的应用)连接到AI世界的插座。
微信读书MCP Server就是这个协议在阅读领域“插座”,它充当了微信读书API与AI工具之间的“翻译官”,把用户的语音或文字指令转化为具体的API请求,实现书籍搜索、笔记整理、阅读进度同步等功能的自动化管理。
微信读书MCP Server有哪些核心功能?
- 智能书籍检索:我们可以通过自然语言描述查找书籍,比如:“找一本2024年出版的悬疑小说,评分4.5以上”,并且支持按关键词、作者、分类等多维度筛选,并返回书籍详情及阅读推荐指数。
- 阅读进度管理: 自动同步多设备阅读进度,并生成阅读报告,比如过去一周每天阅读时长,设置阅读目标提醒,比如告诉AI提醒我们:“每周三晚8点提醒我读《AI未来简史》30分钟”等等。
3.笔记与批注整合:实现跨书籍提取高亮段落,按主题分类,比如,所有关于量子计算的笔记,并且支持将笔记一键导出为Markdown或PDF格式,方便知识复盘。
为什么选择微信读书MCP Server?
- 隐私保护: 与云端AI服务不同,MCP Server允许用户将数据存储在本地,并通过权限控制限制第三方访问范围,尤其适合企业用户处理敏感书单和内部资料。
- 零代码高效操作: 传统API开发需编写复杂代码,而MCP Server通过自然语言交互降低使用门槛。我们普通用户只需输入“整理我上个月的经济学书单”,就可以让AI自动生成分类目录和思维导图。
- 低成本扩展性: 用户不要自建AI模型,就能够直接利用现有大模型(如Claude)的能力,同时,开源社区提供了丰富的功能插件,比如与Notion同步笔记、与Kindle跨平台同步进度。
WeRead MCP Server详细设计方案
作为微信读书与Claude Desktop之间的桥梁,WeRead MCP Server实现了阅读笔记与AI深度交互的轻量级服务器。
核心目标是实现微信读书数据的实时获取与格式化,通过MCP协议与Claude Desktop无缝集成,支持基于读书笔记的深度对话与知识提取,构建完整的"输入-整理-沉淀"知识工作流。
微信读书的价值主张是将碎片化的阅读笔记转化为系统化的知识体系,并且通过AI辅助深化对阅读内容的理解与应用,减少知识管理的复杂性,实现轻量级知识沉淀,提升阅读效率与阅读质量。
WeRead MCP Server Tools 实现清单
1. 获取书架工具 (get_bookshelf),获取用户的完整书架信息:
参数: 无
返回: 格式化的书籍列表,包括书名、作者等基本信息;
实现逻辑:
def get_bookshelf(): """获取用户的完整书架信息""" # 直接调用WeReadApi中的get_bookshelf方法 weread_api = WeReadApi() bookshelf_data = weread_api.get_bookshelf()
# 处理返回数据,提取有用信息 books = [] if "books" in bookshelf_data: for book in bookshelf_data["books"]: books.append({ "bookId": book.get("bookId", ""), "title": book.get("title", ""), "author": book.get("author", ""), "cover": book.get("cover", ""), "category": book.get("category", ""), "finished": book.get("finished", False), "updateTime": book.get("updateTime", 0) })
return {"books": books}
2. 获取笔记本列表工具 (get_notebooks),获取所有带有笔记的书籍列表:
参数: 无
返回: 带有笔记的书籍列表,按排序顺序
实现逻辑:
def get_notebooks(): """获取所有带有笔记的书籍列表""" # 直接调用WeReadApi中的get_notebooklist方法 weread_api = WeReadApi() notebooks = weread_api.get_notebooklist()
# 处理返回数据,提取有用信息 formatted_notebooks = [] for notebook in notebooks: formatted_notebooks.append({ "bookId": notebook.get("bookId", ""), "title": notebook.get("title", ""), "author": notebook.get("author", ""), "cover": notebook.get("cover", ""), "noteCount": notebook.get("noteCount", 0), "sort": notebook.get("sort", 0), "bookUrl": weread_api.get_url(notebook.get("bookId", "")) })
return {"notebooks": formatted_notebooks}
3. 获取书籍笔记工具 (get_book_notes),获取特定书籍的所有笔记内容:
参数: bookId (字符串) - 书籍ID
返回: 按章节组织的笔记内容,包括划线和评论
实现逻辑:
def get_book_notes(bookId): """获取特定书籍的所有笔记内容""" weread_api = WeReadApi()
# 1. 获取章节信息 chapter_info = weread_api.get_chapter_info(bookId)
# 2. 获取划线(书签) bookmarks = weread_api.get_bookmark_list(bookId) or []
# 3. 获取评论/感想 reviews = weread_api.get_review_list(bookId) or []
# 4. 获取书籍基本信息 book_info = weread_api.get_bookinfo(bookId) or {}
# 处理章节信息 chapters = {} for uid, chapter in chapter_info.items(): chapters[uid] = { "title": chapter.get("title", ""), "level": chapter.get("level", 0), "chapterIdx": chapter.get("chapterIdx", 0) }
# 处理划线和评论数据,按章节组织 organized_notes = {}
# 添加划线 for bookmark in bookmarks: chapter_uid = str(bookmark.get("chapterUid", "")) if chapter_uid not in organized_notes: organized_notes[chapter_uid] = { "chapterTitle": chapters.get(chapter_uid, {}).get("title", "未知章节"), "chapterLevel": chapters.get(chapter_uid, {}).get("level", 0), "highlights": [], "reviews": [] }
organized_notes[chapter_uid]["highlights"].append({ "text": bookmark.get("markText", ""), "createTime": bookmark.get("createTime", 0), "style": bookmark.get("style", 0) })
# 添加评论 for review in reviews: chapter_uid = str(review.get("chapterUid", "")) if chapter_uid not in organized_notes: organized_notes[chapter_uid] = { "chapterTitle": chapters.get(chapter_uid, {}).get("title", "未知章节"), "chapterLevel": chapters.get(chapter_uid, {}).get("level", 0), "highlights": [], "reviews": [] }
organized_notes[chapter_uid]["reviews"].append({ "content": review.get("content", ""), "createTime": review.get("createTime", 0), "type": review.get("type", 0) })
# 组织最终返回数据 return { "bookInfo": { "bookId": bookId, "title": book_info.get("title", ""), "author": book_info.get("author", ""), "cover": book_info.get("cover", ""), "url": weread_api.get_url(bookId) }, "notes": organized_notes }
4. 获取书籍详情工具 (get_book_info),获取书籍的详细信息:
参数: bookId (字符串) - 书籍ID
返回: 书籍的详细信息,包括标题、作者、简介等
实现逻辑:
def get_book_info(bookId): """获取书籍的详细信息""" weread_api = WeReadApi() book_info = weread_api.get_bookinfo(bookId)
# 处理并返回整理后的书籍信息 formatted_info = { "bookId": bookId, "title": book_info.get("title", ""), "author": book_info.get("author", ""), "cover": book_info.get("cover", ""), "intro": book_info.get("intro", ""), "category": book_info.get("category", ""), "publisher": book_info.get("publisher", ""), "publishTime": book_info.get("publishTime", ""), "isbn": book_info.get("isbn", ""), "bookScore": book_info.get("newRating", {}).get("score", 0), "url": weread_api.get_url(bookId) }
return formatted_info
5. 搜索笔记工具 (search_notes),搜索所有笔记中包含特定关键词的内容:
参数: keyword (字符串) - 搜索关键词
返回: 匹配关键词的笔记列表,包括来源书籍和内容
实现逻辑:
def search_notes(keyword): """搜索所有笔记中包含特定关键词的内容""" weread_api = WeReadApi()
# 1. 获取所有有笔记的书籍 notebooks = weread_api.get_notebooklist()
# 2. 遍历每本书的笔记,查找匹配关键词的内容 search_results = []
for notebook in notebooks: bookId = notebook.get("bookId", "") book_title = notebook.get("title", "")
# 获取划线 bookmarks = weread_api.get_bookmark_list(bookId) or [] # 获取评论 reviews = weread_api.get_review_list(bookId) or []
# 搜索划线内容 for bookmark in bookmarks: mark_text = bookmark.get("markText", "") if keyword.lower() in mark_text.lower(): search_results.append({ "bookId": bookId, "bookTitle": book_title, "chapterUid": bookmark.get("chapterUid", ""), "type": "highlight", "content": mark_text, "createTime": bookmark.get("createTime", 0) })
# 搜索评论内容 for review in reviews: review_content = review.get("content", "") if keyword.lower() in review_content.lower(): search_results.append({ "bookId": bookId, "bookTitle": book_title, "chapterUid": review.get("chapterUid", ""), "type": "review", "content": review_content, "createTime": review.get("createTime", 0) })
# 按时间排序 search_results.sort(key=lambda x: x["createTime"], reverse=True)
return {"results": search_results, "keyword": keyword, "count": len(search_results)}
6. 最近阅读工具 (get_recent_reads),获取用户最近阅读的书籍和相关数据:
参数: 无
返回: 最近阅读的书籍列表,包括阅读进度和时间信息
实现逻辑:
def get_recent_reads(): """获取用户最近阅读的书籍和相关数据""" weread_api = WeReadApi()
# 获取阅读历史数据 history_data = weread_api.get_api_data()
# 提取并格式化最近阅读数据 recent_books = []
if "recentBooks" in history_data: for book in history_data["recentBooks"]: # 获取每本书的阅读信息 read_info = weread_api.get_read_info(book["bookId"])
recent_books.append({ "bookId": book.get("bookId", ""), "title": book.get("title", ""), "author": book.get("author", ""), "cover": book.get("cover", ""), "readingTime": read_info.get("readingTime", 0), # 阅读时长(秒) "progress": read_info.get("progress", 0), # 阅读进度(%) "lastReadingDate": read_info.get("lastReadingDate", 0), "noteCount": read_info.get("noteCount", 0), "url": weread_api.get_url(book.get("bookId", "")) })
return {"recentBooks": recent_books}
技术实现注意事项
-
环境变量管理: 使用.env文件或系统环境变量管理敏感信息(Cookie),支持Cookie Cloud服务获取最新Cookie;
-
错误处理: 完善的异常处理机制,特别是API调用失败情况,Cookie过期提醒与自动刷新机制;
-
性能优化: 控制API调用频率,避免触发限制,考虑短期缓存机制,减少重复调用;
-
MCP协议适配: 确保工具输入输出符合Claude Desktop的MCP规范,提供清晰的工具描述和使用示例;
WeRead MCP Server后续拓展方向
-
增加笔记导出功能: 支持Markdown、JSON等多种格式导出,便于知识沉淀与分享;
-
添加笔记统计分析: 提供阅读与笔记行为的数据可视化,帮助用户了解自己的阅读模式;
-
个性化推荐: 基于用户阅读历史和笔记内容推荐相关书籍或文章,帮助用户拓展知识网络;
-
知识图谱构建: 自动构建用户阅读内容的知识关联网络,可视化展示不同概念和书籍之间的联系;
-
多平台整合: 接入其他阅读平台的数据(如Kindle、豆瓣等),构建统一的阅读笔记管理系统。
写在最后
微信读书MCP Server不仅是技术工具,对于我们每个阅读者来说更是一种“以人为本”的阅读理念升级。它将繁琐的操作转化为“一句话的事”,让我们能更专注于内容本身,正所谓,天堂应该是图书馆的模样,而有了MCP Server,这座图书馆正变得愈发触手可及。
Github学习地址1:GitHub - freestylefly/mcp-server-weread: 微信读书MCP
GitHub学习地址2:GitHub - ChenyqThu/mcp-server-weread
原文地址:微信读书MCP Server:当AI遇上你的私人图书馆,智能阅读时代开启!
友情提示:以上内容均为作者本人学习分享,旨在与大家学习交流,不代表任何官方平台观点(仅供学习参考),不构成任何工作建议、指导,请大家谨慎评估技术可行性后再做决策,感谢您对技术探索精神的理解与支持!