readwise-mcp

readwise-mcp

Exposes Readwise and Reader operations as MCP tools, enabling AI agents to save URLs, search documents, retrieve full content and highlights, and manage tags and locations.

Category
访问服务器

README

readwise-mcp

CI coverage PyPI version Python versions License: MIT

An MCP server that exposes Readwise and Reader operations as tools for AI agents — Claude Code, Claude Desktop, or any MCP client.

Built on readwise-plus. This server is a thin, agent-friendly layer over readwise-plus, a comprehensive async Python SDK for the Readwise (v2) and Reader (v3) APIs. readwise-plus does the real work — auth, pagination, typed models, retries — and readwise-mcp maps it to MCP tools. If you want to script Readwise directly in Python, use readwise-plus; if you want an agent to do it for you, use this.

It gives an agent nine tools for saving, searching, reading, and organizing your Reader documents and Readwise highlights — so you can ask it to "find that article I archived last week" or "save this URL to my reading list" and have it actually do it.

Requirements

Authentication

The server reads READWISE_API_KEY from the environment, falling back to a READWISE_API_KEY= line in ~/.env. Provide it either way — via the MCP client config (below), an exported shell variable, or ~/.env. See .env.example.

Install & register

Claude Code

claude mcp add readwise --env READWISE_API_KEY=your-token -- uvx readwise-mcp

(Omit --env ... if you already keep READWISE_API_KEY in ~/.env.)

Any MCP client (Claude Desktop, etc.)

Add this to the client's MCP server config (e.g. claude_desktop_config.json or ~/.claude.json):

{
  "mcpServers": {
    "readwise": {
      "command": "uvx",
      "args": ["readwise-mcp"],
      "env": { "READWISE_API_KEY": "your-token" }
    }
  }
}

uvx readwise-mcp fetches and runs the latest published version on demand — no manual install step. Prefer a pinned install? Use uv tool install readwise-mcp and point command at readwise-mcp.

From source

git clone https://github.com/EvanOman/readwise-mcp
cd readwise-mcp
uv sync --dev

Then register the local checkout:

{
  "mcpServers": {
    "readwise": {
      "command": "uv",
      "args": ["run", "--project", "/absolute/path/to/readwise-mcp", "python", "-m", "readwise_mcp"],
      "env": { "READWISE_API_KEY": "your-token" }
    }
  }
}

Verify it connected: claude mcp list should show readwise: ... Connected.

How to use

Once the server is registered, you don't call the tools directly — you talk to your agent in plain language and it picks the right tool. Some things you can ask:

You say… The agent uses…
"Save https://example.com/post to my reading list and tag it ai." save_to_reader
"Find the article about vector databases I archived last week." search_documents → get_document
"Summarize the top 3 unread articles in my inbox." search_documents(location="new") → get_document
"Export my highlights from Thinking, Fast and Slow." get_books → export_highlights
"Archive that document." / "Move it to my reading list." update_document
"Save this quote as a highlight under Deep Work." create_highlight

Walkthrough: "find and read that article"

You: Find the article I saved about the OpenAI harness engineering post and give me the key points.

Behind the scenes the agent:

  1. Calls search_documents(query="harness engineering") — a title substring search across your library — and gets back compact summaries (id, title, author, location), no body text.
  2. Picks the best match and calls get_document(document_id=...) to pull the full HTML content.
  3. Reads the content and answers you.

Notes on behavior

  • Search is title-substring, client-side. query filters on the document title, not full text. To narrow the set first, combine it with location (new/later/archive), category, or tags.
  • get_document is the only call that returns full content. search_documents deliberately returns summaries so the agent can scan cheaply, then fetch the one it wants.
  • Uploads: save_to_reader can save a plain URL, or upload your own HTML by passing html= alongside a synthetic url (used as the unique id).
  • Errors are data, not exceptions. Tools return {"error": "..."} so the agent can read the problem and recover rather than crashing.
  • Deletes are permanent. delete_document cannot be undone.
  • Documents saved through this server are tagged saved_using="readwise-mcp" in Reader.

Tools

Documents (Reader v3)

Tool Description
save_to_reader Save a URL to Reader, or upload HTML content with a synthetic URL. Supports title, author, summary, tags, notes, category, and location overrides.
search_documents List/filter documents by location (inbox/later/archive), category, tags, updated_after. Client-side title substring search via query. Returns compact summaries (no content).
get_document Fetch a single document by ID with full HTML content.
update_document Update metadata, move between locations (inbox/later/archive), or replace tags.
delete_document Permanently delete a document.

Highlights (Readwise v2)

Tool Description
get_highlights List highlights with filters (book_id, updated_after, text query).
export_highlights Bulk export highlights grouped by book — more efficient for pulling all highlights from multiple books.
create_highlight Push a new highlight to Readwise. Auto-creates the book/source if it does not exist.

Books (Readwise v2)

Tool Description
get_books List books/sources with category, source, and title query filters.

Design

Tools are shaped for agent ergonomics: a small set of well-composed tools rather than a thin wrapper per endpoint. Results are returned as compact JSON strings, and errors come back as {"error": ...} payloads instead of exceptions, so an agent can read and react to them. All Readwise access goes through the readwise-plus SDK's async client.

Development

just fc         # format, lint-fix, lint, type-check, test (run before every commit)
just test       # unit tests (mocked HTTP, no network)
just test-live  # live tests against the real Readwise API (requires READWISE_API_KEY)
just ci         # what CI runs: lint, format-check, type, test

Stack: uv · ruff · ty · pytest · just.

Releases are automated with release-please: merging the release PR tags a version and publishes to PyPI via trusted publishing.

License

MIT — see LICENSE. Built on readwise-plus, also 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 模型以安全和受控的方式获取实时的网络信息。

官方
精选