Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
WEREAD_API_KEYNo服务端默认 API Key
WEREAD_MCP_HOSTNo监听地址127.0.0.1
WEREAD_MCP_PORTNo监听端口8000
WEREAD_MCP_SSE_PATHNoSSE 路径/sse
WEREAD_MCP_HTTP_PATHNoStreamable HTTP 路径/mcp
WEREAD_MCP_LOG_LEVELNo日志级别INFO
WEREAD_MCP_TRANSPORTNoMCP 传输方式: sse / streamable-http / stdiosse
WEREAD_SKILL_VERSIONNo上报给网关的 skill 版本1.0.4
WEREAD_REQUEST_TIMEOUTNo网关请求超时(秒)30
WEREAD_MCP_MESSAGE_PATHNoSSE 消息路径/messages/
WEREAD_ALLOW_CLIENT_API_KEYNo是否允许请求头覆盖 Keytrue

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
search_booksA

在微信读书书城搜索(/store/search)。

    用户说书名时先用本工具拿 bookId,再调用其它工具。

    注意:请求参数 `scope` 和回包 `results[].scope` 不是一回事——请求 `scope=10` 时
    电子书分组回包可能是 `scope=17`,**不要**用 `results[].scope == 10` 过滤结果;
    标题为「电子书」或含 `books` 的分组都可以展示。

    翻页:`hasMore=1` 时,用最后一条的 `searchIdx` 作为下一次的 `max_idx`。
    搜索结果只是分页片段,表述用「为您找到」,不要说「共有/一共/总共」。
    空结果时回复:抱歉,没有找到与「{keyword}」相关的结果。
    
get_book_infoA

获取书籍基本信息(/book/info):书名、作者、译者、简介、分类、出版社、 出版时间、ISBN、字数、评分(newRating 为百分制)等。

    回包若含 `deepLink`,展示为 `[打开阅读]({deepLink})`。
    失败时回复:暂时无法获取书籍信息,请稍后再试~
    
get_book_chaptersA

获取书籍章节目录(/book/chapterinfo)。

    `chapters[].level` 是目录层级(1=一级标题),展示时按层级缩进并标注字数与付费状态
    (`price=0` 免费、`paid=1` 已购买)。

    `chapters[].chapterUid` 是 `get_chapter_underlines` / `get_best_highlights` /
    `get_highlight_reviews` 的入参,需要按章节查划线时先用本工具取得。
    
get_reading_progressA

获取某本书的阅读进度(/book/getprogress)。

    关键口径:
    - `book.progress` 是 0-100 的**整数百分比**,1 表示 1%(不是 100%);展示必须带 `%`。
      只有 `progress=100` 且存在 `book.finishTime` 才代表读完。
    - 累计阅读时长看 `book.readingTime`(秒),展示转「X小时Y分钟」。
      `book.recordReadingTime` 是朗读/记录类时长,普通阅读通常为 0,**不要**拿它当阅读时长。
    - `book.updateTime` / `book.finishTime` 是 Unix 时间戳,展示转 `YYYY-MM-DD`。

    返回中的 `_computed` 是本服务端按上述规则算好的展示值。
    
get_shelfA

获取当前用户书架(/shelf/sync,无参数,身份由 API Key 决定)。

    数量口径(**强制**):
    - 书架条目总数 = `books.length + albums.length + (mp 非空 ? 1 : 0)`;
      `albums[]` 是专辑/有声书,在书架里同样按「书」管理,必须计入总数,
      不能用「另外还有」把专辑或文章收藏排除在总数之外。
    - 「电子书数」才用 `bookCount` / `books.length`。
    - 私密阅读数 = `books[].secret==1` + `albums[].albumInfoExtra.secret==1` + (`mp` 非空 ? 1 : 0)。
    - 不要遍历 `books` 逐个调 `get_book_info` 去判断有声书,直接用 `albums`。

    本服务端已按上述公式把结果算好放在 `_computed` 字段里,直接引用即可。
    失败时回复:书架信息暂时没拉到,请稍后再试~
    
list_notebooksA

列出所有有笔记的书(/user/notebooks)。

    字段口径:
    - `books[].noteCount` 是**划线(高亮原文)条数**,不是该书总笔记数。
    - 单本书总笔记数 = `reviewCount + noteCount + bookmarkCount`。
    - `reviewCount` 已包含个人点评/书评想法,不要再额外加「点评数」,否则重复计算。
    - 本接口不返回 `highlightCount`;「高亮数/划线数」对应的是 `noteCount`。

    分页只支持游标:首次只传 `count`,`hasMore=1` 时取本页最后一项的 `sort`
    作为下一次的 `last_sort`;**不支持** offset/limit。需要完整排行时循环到 `hasMore=0`。

    `_computed.noteCountByBook` 是本服务端按公式算好并降序排序的结果。
    
get_book_highlightsA

获取我在某本书里的划线内容(/book/bookmarklist)。

    接口已自动过滤书签(type=0),只返回划线(type=1);书签内容当前无法导出,
    书签**数量**见 `list_notebooks` 的 `bookmarkCount`。

    用 `chapters[].chapterUid` / `title` 把 `updated[]` 里的划线按章节分组展示,
    原文用引用格式 `>` 标注,`createTime` 转 `YYYY-MM-DD`。

    用户说「导出这本书的所有笔记」时,必须同时调用本工具和 `get_my_reviews`,
    只返回划线是不完整的。
    
get_my_reviewsA

获取我在某本书里的个人想法与点评(/review/list/mine), 包含划线想法、章节点评和整本书评。

    - `reviews[].review.abstract` / `range` 是条件字段:只有能定位到原文的想法才有值;
      有值时按「原文 + 想法」展示,整本书评/章节点评可能没有。
    - `star` 为评分(0-5,-1=无评分),`chapterName` 仅章节点评有值。
    - 翻页:`hasMore=1` 时把回包的 `synckey` 传回本工具。

    与 `get_book_highlights` 配合才是完整的「单本书笔记内容」。
    
get_chapter_underlinesA

获取某章节内每条划线的热度统计(/book/underlines)。

    只有人数/得分/位置范围,**不含划线文本**,用于展示「X人划线」标签。
    需要划线原文请用 `get_best_highlights`。
    
get_best_highlightsA

获取书籍/章节的热门划线(/book/bestbookmarks),含划线原文 markText 和划线人数 items[].totalCount,按热度排序。

    服务端固定返回前 20 条,不支持分页。
    `items[].range` 可以传给 `get_highlight_reviews`,查看该条划线下面的想法。
    
get_highlight_reviewsA

获取指定划线范围下面的想法/评论(/book/readreviews)。

    本工具会把 `ranges` 组装成网关要求的 `reviews` 数组
    (这是少数允许作为数组传入的业务字段)。

    回包 `reviews[].pageReviews[].review` 里有 `abstract`(划线原文)、
    `content`(想法内容)、`author`、`createTime`。
    需要单条想法的完整详情(含评论/点赞)时再调 `get_review_detail`。
    
get_review_detailA

获取单条想法的完整详情(/review/single),含内容、作者、评论与点赞。

get_read_statsA

获取个人阅读统计(/readdata/detail):时长、天数、排行、偏好分析。

    **单位与口径(极易出错,必须遵守)**:
    - `totalReadTime` 是该周期总阅读/收听时长,单位**秒**,禁止当成分钟或小时;
      统计总时长优先用它,`readTimes` 只用于明细或交叉校验。
    - `dayAverageReadTime` 是按**自然日**平均的秒数,分母不是 `readDays`;
      需要「阅读日均」要自己用 `totalReadTime / readDays` 算并说明。
    - `readDays` 是有效阅读天数(单日满 1 分钟)。
    - `compare` 是与上一周期日均的比例,0.2 表示约增长 20%。
    - `preferAuthor[].readTime` 是格式化字符串(如「5小时30分钟」),不是秒。
    - `preferTime` 是 24 小时时段分布(秒),顺序从 6 点开始到次日 5 点,不是从 0 点。

    本接口只支持固定自然周期,不能传任意起止日期。跨区间要组合:
    整年用 `annually` 逐年查询并累加,整月用 `monthly`;边界不完整时优先用
    `dailyReadTimes` 做日级扣减,没有日级明细就用月级近似并在回答中说明口径。

    `_computed` 里给出了换算好的「X小时Y分钟」文案。
    失败时回复:阅读数据暂时无法获取,请稍后再试~
    
list_book_reviewsA

获取书籍的公开点评/review/list)——其他读者的评价, 不是个人笔记(个人笔记用 get_my_reviews)。

    结构注意:存在双层嵌套,点评内容在 `reviews[].review.review.content`、
    `...star`、`...author.name`、`...book.title`。

    评分换算:20=⭐,40=⭐⭐,60=⭐⭐⭐,80=⭐⭐⭐⭐,100=⭐⭐⭐⭐⭐。
    长点评截取前 200 字并提示可展开;`createTime` 转 `YYYY-MM-DD`。
    无结果回复:这本书暂时还没有公开点评哦~
    
recommend_booksA

基于个人阅读记录的个性化推荐(/book/recommend), 与 App 首页「为你推荐」一致。

    每本书含 `reason`(推荐理由)、`newRating`(0-100)、`readingCount`(在读人数)。
    翻页用最后一条的 `searchIdx` 作为下次的 `max_idx`。
    无结果回复:暂时没有找到合适的推荐,换个关键词试试?
    
similar_booksA

基于某本书的相似推荐(/book/similar),与 App 书籍详情页「相似推荐」一致。

    底层转发到 `/book/detailinfo?listtypes=2`,要求 count / maxIdx 必须显式传入,
    不能依赖默认值,否则结果异常。

    结果在 `booksimilar.books[].book.bookInfo`,翻页用最后一条的 `idx` 作为 `max_idx`,
    并带上 `booksimilar.sessionId`。
    
get_reading_overviewA

一次性汇总用户阅读概况(对应官方 profile.md 的工作流): 书架总览 + 最近阅读的前 N 本电子书进度 + 笔记概览。

    内部依次调用 `/shelf/sync`、按 `readUpdateTime` 降序取前 N 本调 `/book/getprogress`、
    再调 `/user/notebooks`。只对 `books[]` 里的电子书查进度,不对 `albums[]` 专辑调用。

    书架为空时回复:你的书架还没有书哦,要不要去发现页看看推荐?
    失败时回复:阅读概况暂时无法获取,请稍后再试~
    
list_gateway_apisA

列出微信读书网关当前可用的全部接口及参数定义({"api_name": "/_list"})。

    用于排查「某个能力是否还存在 / 参数是否变化」,日常问答不需要调用。
    
call_gatewayA

直连网关的兜底工具:当某个接口还没有对应的专用工具时使用。

    本工具会自动补上 `skill_version` 与鉴权头,并把 `params` 平铺到 body 顶层。
    能用专用工具时优先用专用工具——它们的说明里带有字段口径与避坑规则。
    

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription
weread-skill-index总纲:统一入口、鉴权、请求/响应格式与通用规则(官方 SKILL.md)
weread-skill-search搜索:scope 选择指引、关键词提取规则、回包字段与翻页
weread-skill-book书籍信息:详情、章节目录、阅读进度(progress 口径)
weread-skill-shelf书架:books / albums / mp 的数量口径与公开私密统计
weread-skill-notes笔记划线:统计口径与导出口径、游标分页、热门划线与想法
weread-skill-readdata阅读统计:字段单位(秒)、周期组合、日均口径
weread-skill-review书籍公开点评:双层嵌套结构、评分星级换算、筛选类型
weread-skill-discover推荐发现:个性化推荐与相似书推荐的必填参数
weread-skill-profile阅读概况:书架 + 最近进度 + 笔记的组合工作流

TDQS

A4/5.0

Scored across 19 tools

Disambiguation4/5

Most tools map cleanly to distinct API endpoints or user workflows, but the review/highlight cluster (get_book_highlights, get_best_highlights, get_highlight_reviews, get_my_reviews, list_book_reviews, get_review_detail) creates some overlap risk. The detailed descriptions do a good job of separating them, so misselection should be rare.

Naming Consistency4/5

The dominant get_/list_/search_ snake_case pattern is consistent and readable. Minor deviations exist—recommend_books and similar_books lack a get_/list_ prefix, and get_reading_progress vs get_read_stats uses inconsistent root wording—but these do not seriously hinder prediction.

Tool Count4/5

19 tools is on the heavier side, but each one covers a meaningful facet of the WeChat Reading domain: discovery, shelf, progress, highlights, reviews, stats, and recommendations. The two gateway-level meta tools add some noise but serve a legitimate fallback purpose.

Completeness4/5

The tool surface covers the core read-only workflows well: searching books, viewing shelf/progress, exporting highlights and reviews, pulling reading statistics, and getting recommendations. Mutating actions like adding to shelf or updating progress are absent, but they are likely outside the API's scope, and call_gateway provides a raw escape hatch for missing endpoints.

Maintenance

ActivityMaintained
ResponsivenessNo issues