Docs for your saved web MCP.

Raindrop MCP exposes bookmarks, collections, tags, highlights, and saved-page resources through OAuth-aware MCP clients. This page covers client setup, public endpoints, available tools, and the browser authorization flow.

Connect an MCP client

Use the hosted MCP endpoint with an OAuth-aware Streamable HTTP client. The client discovers protected-resource metadata, opens browser authorization, and stores the issued access token.

Claude Desktop / Cursor config
{
  "mcpServers": {
    "raindrop": {
      "url": "https://raindrop-mcp.anuragd.me/mcp",
      "transport": "streamable-http"
    }
  }
}

Codex CLI

Register the same hosted MCP endpoint from a terminal.

codex mcp add raindrop https://raindrop-mcp.anuragd.me/mcp

Generic client

Use name raindrop, URL https://raindrop-mcp.anuragd.me/mcp, and transport streamable-http.

HTTP endpoints

The Worker serves the public website, docs, OAuth authorization server, and MCP endpoint. Static pages are public; MCP calls require authorization unless a server operator explicitly enables a development token path.

GET/

Landing page with the copyable MCP endpoint and prompt examples.

GET/docs/

This documentation page.

GET/info

Public JSON server summary: links, endpoints, auth shape, tools, resources, and resource templates.

POST/mcp

Primary MCP Streamable HTTP endpoint. Supports direct JSON-RPC POST compatibility for gateway clients.

GET/.well-known/oauth-protected-resource

Protected-resource metadata used by MCP clients during OAuth discovery.

GET/.well-known/oauth-authorization-server

Authorization server metadata with authorize, token, and registration endpoints.

GET/POST/authorize

Browser authorization and consent flow for MCP clients.

POST/token

Authorization code and refresh token exchange.

POST/register

Dynamic client registration for OAuth-aware clients.

GET/auth/init

Internal Raindrop OAuth start used when a user has no Raindrop session.

MCP tools

The server exposes the real Raindrop tool surface. Read tools search or inspect saved content; write tools create, update, delete, bulk edit, or upload through the Raindrop API after authorization.

Collections

collection_list, collection_children_list, collection_manage, collection_bulk_delete, collection_reorder, collection_expand, collection_merge, collection_clean, collection_empty_trash, and collection_cover_upload.

Bookmarks

bookmark_search, bookmark_manage, bookmark_cache, bookmark_suggest_existing, bookmark_bulk_create, bookmark_bulk_delete, bookmark_file_upload, bookmark_cover_upload, bulk_edit_bookmarks, and bookmark_statistics.

Tags and highlights

tag_list reads the tag vocabulary, tag_manage renames, merges, or deletes tags, and highlight_manage creates, updates, deletes, or lists highlights.

User and stats

user_stats returns account-level totals, while bookmark_statistics can summarize saved content by collection, tag, type, and other Raindrop filters.

Prompt examples

These examples show how normal client requests map to concrete MCP tool calls. Bookmark IDs shown here stand in for values returned by earlier search calls.

bookmark_search

Find a saved article by memory

I saved something about OAuth resource metadata. Find the official spec and summarize why it matters for MCP clients.

bookmark_search
{
  "search": "OAuth Protected Resource Metadata",
  "collection": 0,
  "perPage": 5
}
bookmark_manage

Save a repo while working

Save the MCP TypeScript SDK repo, tag it mcp and sdk, and mark it important so I can find it later.

bookmark_manage
{
  "operation": "create",
  "url": "https://github.com/modelcontextprotocol/typescript-sdk",
  "tags": ["mcp", "sdk"],
  "important": true
}
bookmark_search -> highlight_manage

Use highlights as context

Find my saved Anthropic article and pull the highlights I left on it. Use the id returned by search in the second call.

bookmark_search
{
  "search": "Anthropic",
  "collection": 0,
  "perPage": 3
}

highlight_manage
{
  "operation": "list",
  "bookmarkId": 912345678
}

Resources and templates

Clients can also read MCP resources directly when they need a stable saved object rather than another tool call.

TypeNameURIWhat it does
Resourceuser_profileraindrop://user/profileRaindrop user profile for the authorized account.
Resourcecollectionsraindrop://collectionsCollection list with saved counts and hierarchy metadata.
Templatecollectionraindrop://collection/{id}Read a specific collection by numeric Raindrop collection id.
Templatebookmarkraindrop://bookmark/{id}Read a specific bookmark by numeric Raindrop bookmark id.

OAuth flow

Raindrop MCP uses a self-hosted authorization server in front of Raindrop.io. The MCP client gets a token scoped to the MCP resource, while the Worker stores the user Raindrop token encrypted in Cloudflare KV.

The client reads protected-resource metadata and discovers the authorization server.
The client registers dynamically, then opens browser authorization with PKCE and a resource indicator.
If no Raindrop session exists, the Worker sends the user through Raindrop login and callback.
The Worker encrypts and stores the Raindrop token, then returns the user to MCP consent.
The client exchanges the authorization code and calls the MCP endpoint with the issued bearer token.

For operator diagnostics, /info exposes the canonical URLs and tool/resource counts without exposing secrets.

Operations

The production server runs on Cloudflare Workers with static assets, Worker routes, and KV-backed OAuth storage. These public checks are safe to run without user credentials.

Health

GET /health returns service health JSON and is useful for deploy checks.

curl https://raindrop-mcp.anuragd.me/health

Server info

GET /info returns the public links, endpoints, tools, resources, and resource templates.

curl https://raindrop-mcp.anuragd.me/info

Source

The public implementation is available on GitHub.

github.com/Aarekaz/raindrop-mcp