From 3f73f64fc4db2ee2804ae65fab8ef6c28a2be1aa Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Tue, 25 Aug 2026 06:29:53 +0000 Subject: [PATCH] Add Readwise third-party MCP plugin Readwise ships an official remote MCP server over Streamable HTTP with per-user OAuth, so the plugin is a URL-only mcp.json with no variables block. Co-authored-by: Roshan Sadanani --- .cursor-plugin/marketplace.json | 5 ++ README.md | 1 + .../readwise/.cursor-plugin/plugin.json | 33 ++++++++++ third_party/readwise/CHANGELOG.md | 9 +++ third_party/readwise/LICENSE | 21 +++++++ third_party/readwise/README.md | 57 ++++++++++++++++++ third_party/readwise/assets/logo.png | Bin 0 -> 7216 bytes third_party/readwise/mcp.json | 8 +++ 8 files changed, 134 insertions(+) create mode 100644 third_party/readwise/.cursor-plugin/plugin.json create mode 100644 third_party/readwise/CHANGELOG.md create mode 100644 third_party/readwise/LICENSE create mode 100644 third_party/readwise/README.md create mode 100644 third_party/readwise/assets/logo.png create mode 100644 third_party/readwise/mcp.json diff --git a/.cursor-plugin/marketplace.json b/.cursor-plugin/marketplace.json index b468815..d5afdbf 100644 --- a/.cursor-plugin/marketplace.json +++ b/.cursor-plugin/marketplace.json @@ -292,6 +292,11 @@ "name": "mem", "source": "third_party/mem", "description": "Capture, search, and organize notes and collections." + }, + { + "name": "readwise", + "source": "third_party/readwise", + "description": "Search highlights and Reader documents, save articles." } ] } diff --git a/README.md b/README.md index bc69a94..6c8efbe 100644 --- a/README.md +++ b/README.md @@ -63,6 +63,7 @@ Official Cursor plugins for popular developer tools, frameworks, and SaaS produc | `fathom` | [Fathom](third_party/fathom/) | Cursor | Integrations | Search meetings and pull transcripts and summaries. | | `craft` | [Craft](third_party/craft/) | Cursor | Integrations | Search, create, and update documents and daily notes. | | `mem` | [Mem](third_party/mem/) | Cursor | Integrations | Capture, search, and organize notes and collections. | +| `readwise` | [Readwise](third_party/readwise/) | Cursor | Integrations | Search highlights and Reader documents, save articles. | Author values match each plugin’s `plugin.json` `author.name` (Cursor lists `plugins@cursor.com` in the manifest). ## Repository structure diff --git a/third_party/readwise/.cursor-plugin/plugin.json b/third_party/readwise/.cursor-plugin/plugin.json new file mode 100644 index 0000000..1f2bea8 --- /dev/null +++ b/third_party/readwise/.cursor-plugin/plugin.json @@ -0,0 +1,33 @@ +{ + "name": "readwise", + "displayName": "Readwise", + "version": "1.0.0", + "minClientVersions": { + "cursor": "3.13.0" + }, + "description": "Search highlights and Reader documents, save articles.", + "author": { + "name": "Cursor", + "email": "plugins@cursor.com" + }, + "homepage": "https://docs.readwise.io/tools/mcp", + "repository": "https://github.com/cursor/plugins", + "license": "MIT", + "logo": "assets/logo.png", + "keywords": [ + "readwise", + "reader", + "highlights", + "reading", + "notes", + "mcp" + ], + "category": "integrations", + "tags": [ + "readwise", + "reading", + "mcp", + "highlights" + ], + "mcpServers": "./mcp.json" +} diff --git a/third_party/readwise/CHANGELOG.md b/third_party/readwise/CHANGELOG.md new file mode 100644 index 0000000..8829e29 --- /dev/null +++ b/third_party/readwise/CHANGELOG.md @@ -0,0 +1,9 @@ +# Changelog + +All notable changes to this plugin will be documented here. + +## 1.0.0 — initial release + +- Added the `readwise` MCP server pointing at `https://mcp2.readwise.io/mcp`. +- Auth uses OAuth — no API key or client ID to configure. +- Logo: Readwise's official mark, from the `readwiseio` GitHub organization. diff --git a/third_party/readwise/LICENSE b/third_party/readwise/LICENSE new file mode 100644 index 0000000..ca2bba7 --- /dev/null +++ b/third_party/readwise/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 Cursor + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/third_party/readwise/README.md b/third_party/readwise/README.md new file mode 100644 index 0000000..88339d4 --- /dev/null +++ b/third_party/readwise/README.md @@ -0,0 +1,57 @@ +# Readwise + +Cursor plugin that connects agents to [Readwise](https://readwise.io) through Readwise's official remote [Model Context Protocol](https://modelcontextprotocol.io/) server. + +Search everything you have read — hybrid semantic and full-text search across Readwise highlights and Reader documents — and save, tag, and triage new material. + +## Install + +1. Open **Cursor Settings → Plugins**. +2. Search for **Readwise**. +3. Click **Install**, then complete the Readwise sign-in prompt. + +Or run `/add-plugin readwise` in chat. + +## MCP + +```json +{ + "mcpServers": { + "readwise": { + "type": "http", + "url": "https://mcp2.readwise.io/mcp" + } + } +} +``` + +Auth is OAuth. Cursor prompts for Readwise sign-in when the plugin connects — there is no API key to configure. + +## What agents can do + +| Category | Capabilities | +| --- | --- | +| Highlights | Search and list highlights, create new ones, and update or delete existing ones | +| Daily review | Pull the current daily review | +| Reader documents | Search, list, and read documents, and get their details and highlights | +| Triage | Save new documents, move between locations, and add or remove tags | + +The hosted runtime is the source of truth for tool names and schemas. Call `readwise_get_daily_review` as a read-only smoke test after connecting. + +## Notes + +- Tool calls run as the Readwise user who authorizes the connection. +- The host is `mcp2.readwise.io`, not `mcp.readwise.io`. +- The `@readwise/readwise-mcp` npm package is Readwise's own older local server. It is deprecated, has no Reader support, and should not be used for new setups. + +## Docs + +- Readwise MCP: https://docs.readwise.io/tools/mcp +- Readwise MCP landing page: https://readwise.io/mcp +- Server URL: https://mcp2.readwise.io/mcp + +Logo is Readwise's official mark, from the `readwiseio` GitHub organization. + +## License + +MIT diff --git a/third_party/readwise/assets/logo.png b/third_party/readwise/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..e7c993e91f9e75f89baba9fa850a5630b3b8cfa5 GIT binary patch literal 7216 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 TJ6&4fN+1AN)OdzbF#Y&HmEGS6 literal 0 HcmV?d00001 diff --git a/third_party/readwise/mcp.json b/third_party/readwise/mcp.json new file mode 100644 index 0000000..7559fbd --- /dev/null +++ b/third_party/readwise/mcp.json @@ -0,0 +1,8 @@ +{ + "mcpServers": { + "readwise": { + "type": "http", + "url": "https://mcp2.readwise.io/mcp" + } + } +}