raindrop-mcp
This server lets AI tools search, read, and manage Raindrop.io bookmarks through a small set of MCP tools.
List collections – view root and nested collections with bookmark counts and parent IDs.
Search or list bookmarks – use Raindrop.io search syntax, pagination, sorting, per-page limits, and collection filtering; results are compact summaries.
Get bookmark details – retrieve a single bookmark by ID with useful fields like title, link, tags, note, excerpt, cover, domain, and timestamps.
Create bookmarks – add a bookmark with optional title, tags, note, cover, excerpt, collection, importance, and metadata parsing.
Update bookmarks – modify only the supplied fields on one bookmark, optionally reparse metadata, and receive a compact confirmation of updated fields.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@raindrop-mcp search my bookmarks for MCP servers"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Raindrop.io MCP server
A small local Python MCP server I built to search and manage my Raindrop.io bookmarks from AI tools without exposing more account functionality than necessary.
I wanted the interface to stay deliberately small and auditable: a handful of explicit read/write tools, credentials kept outside the repository, and tests that never touch a real account.
Tools
Tool | Access | Description |
| Read | List root and nested collections. |
| Read | List tag names and bookmark counts, optionally for one collection. |
| Read | List bookmarks or search with Raindrop.io's native syntax. |
| Read | Get one bookmark by ID. |
| Write | Create a bookmark. |
| Write | Update supplied fields on a bookmark. |
Related MCP server: Raindrop.io MCP Server
Design decisions
Small, explicit tool surface: each operation has a clear purpose and read/write boundary.
Official REST API: the server talks directly to Raindrop.io rather than adding another integration layer.
Credentials via environment only: tokens stay outside the repository and tool arguments.
No implicit reads after writes: mutations return compact acknowledgements without making a second API request.
Fake transports in tests: the test suite never touches a real account.
Requirements
Python 3.10 or newer
A Raindrop.io test token for your own account
Install
uv sync --extra test
cp .env.example .envOpen the Raindrop.io integrations settings,
create an application, and select Create test token. Add that token to your
local .env file:
RAINDROP_ACCESS_TOKEN=your-test-tokenUse the test token, not the Client ID or Client Secret. Never commit or share
the populated .env file.
Configure Codex
Add the following to ~/.codex/config.toml, replacing the working directory
with the absolute path to your clone:
[mcp_servers.raindrop]
command = "uv"
args = ["run", "--env-file", ".env", "raindrop-mcp"]
cwd = "/absolute/path/to/raindrop-mcp-server"
enabled = true
default_tools_approval_mode = "writes"
[mcp_servers.raindrop.tools.list_collections]
approval_mode = "approve"
[mcp_servers.raindrop.tools.list_tags]
approval_mode = "approve"
[mcp_servers.raindrop.tools.search_bookmarks]
approval_mode = "approve"
[mcp_servers.raindrop.tools.get_bookmark]
approval_mode = "approve"Restart Codex after saving. The listed read tools are approved automatically; create and update still require write approval.
Security
.envand other local environment files are ignored by Git; only the empty.env.exampletemplate is tracked.API response bodies are not included in raised error messages.
Tool behavior
Omit
queryto list bookmarks, or provide Raindrop.io's native search syntax.Searches default to relevance; listings default to newest first.
Search results are compact summaries; use
get_bookmarkfor full detail.Write tools do not perform implicit follow-up reads and return compact acknowledgements instead of full API responses.
MCP tool annotations describe read and mutation behavior, but are hints rather than access controls.
See Tool behavior for pagination, collection semantics, request mappings, and response shapes.
Test
uv run pytestLicense
This project is licensed under the MIT License.
API references
Available Tools
6 toolscreate_bookmarkA
Create a bookmark; link is required and metadata parsing is enabled.
Inputs: link (required), note, tags, cover, +5 more. Returns: Single normalized bookmark result.
get_bookmarkARead-only
Get one bookmark by its positive Raindrop.io ID.
Inputs: bookmark_id (required). Returns: Single normalized bookmark result.
list_collectionsARead-only
List Raindrop.io collections, including nested collections by default.
Inputs: include_children. Returns: Collection list returned by the MCP tool.
list_tagsARead-only
List tags with bookmark counts; collection_id 0 lists all tags.
A nonzero ID scopes the request to that collection. No child collections are fetched separately. The top-level count is the number of tags, not the number of bookmarks.
Inputs: collection_id. Returns: Tag summaries and the number of tags returned.
search_bookmarksARead-only
List bookmarks or search with native Raindrop.io syntax.
collection_id 0 searches all bookmarks; page numbering starts at zero. Results default to relevance for searches and newest first for listings.
Inputs: page, sort, query, nested, +2 more. Returns: Normalized, paginated bookmark summaries.
update_bookmarkADestructive
Update only the supplied fields on one bookmark.
Inputs: bookmark_id (required), link, note, tags, +6 more. Returns: Compact confirmation for a successful bookmark update.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 6 tools
Each tool maps to a distinct resource-action pair: tags, collections, and bookmarks are cleanly separated, and get_bookmark is clearly different from search_bookmarks. No two tools appear to do the same thing.
All tool names follow the same lowercase verb_noun pattern: list, create, get, search, update. This is a predictable and consistent convention across the entire set.
Six tools is well-scoped for a Raindrop.io integration covering bookmarks, collections, and tags. Each tool has a clear purpose and the set is not bloated or overly thin.
Bookmark reading, creation, updating, and searching are covered, but there is no delete_bookmark, which is a notable lifecycle gap. Collections and tags are read-only, so collection/tag management operations are missing, though this may be intentional for a read-focused MCP server.
Maintenance
Related MCP Connectors
Save, search, read, tag, and organize your bookmarks from AI assistants with OAuth sign-in.
All your bookmarks in one library. Share them with your AI agents. Read-only search over your saves.
Search, save, tag, and summarize the links in your Link Crypt bookmark library.
Read-it-later for AI agents. Save links, bookmarks, notes, and videos as Markdown and search them.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to access and manage Raindrop.io bookmarks, collections, tags, and highlights through the Model Context Protocol. Supports CRUD operations, advanced search, file uploads, and bulk editing of bookmarks.238 npmMIT
- FlicenseAqualityDmaintenanceEnables to manage Raindrop.io bookmarks programmatically—add, search, and organize bookmarks from LLM apps.414-
- AlicenseNot gradedqualityDmaintenanceEnables language models to access and manage Raindrop.io bookmarks, collections, tags, and highlights through the Model Context Protocol.16 npmMIT
- AlicenseAqualityDmaintenanceEnables Claude Code and other MCP clients to manage bookmarks, collections, and tags in Raindrop.io accounts via natural language.152MIT