MCP server for interacting with WeRead (微信读书) data, providing tools to access books, highlights, reading progress, and reviews from a WeRead account
WeRead MCP has 10 tools with consistent naming (verb_noun pattern: get_*, authenticate, search_*) and basic descriptions. However, parameter descriptions are minimal or absent for most tools. Input schemas are present but lack detail, most parameters have only type and description, no constraints (enums, ranges, patterns). Output schemas are inferred from Pydantic models but not explicitly documented in tool definitions. Error handling is minimal; most tools raise generic exceptions without recovery guidance. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite all being read-only operations.
Test if your WeRead cookie is valid.
Get and format highlights for a book into a nicely formatted string.
Get bookmarks/highlights for a specific book.
Get chapter information for a specific book.
Get detailed information for a specific book.
Get reading information for a specific book.
Parameter descriptions missing or trivial. Most tools accept book_id with only 'Book ID' as description, no guidance on format, constraints, or how to obtain one. Violates pattern:tool-description requirement that every parameter have a non-empty, actionable description.
No input constraints (enums, ranges, patterns) on parameters. book_id and query parameters accept free-form strings with no validation hints. LLMs cannot infer valid formats and may pass invalid values.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | 2026-07-28+ | v2 |
Get reviews and notes for a specific book.
Get a list of all books in your WeRead library.
Get the WeRead web URL for a specific book.
Search for books in your WeRead library by title or author.
Output schemas not documented in tool definitions. Tools return Pydantic models (BookListResponse, BookInfoResponse, etc.) but LLMs cannot see the field structure. Violates pattern:tool requirement for documented return types.
No tool annotations despite all tools being read-only. Missing readOnlyHint annotations prevent LLMs from understanding safety properties and optimizing caching/retry strategies.
Error handling lacks recovery guidance. Tools raise generic exceptions ('Failed to fetch books', 'Book not found') without suggesting next steps. Violates pattern:recovery-guide, errors should tell LLMs what to do next.