Skip to main content

Raindrop.io MCP Server

Code style: crackerjack Runtime: oneiric Framework: FastMCP uv Python: 3.13+

FastMCP-based Model Context Protocol server that exposes the Raindrop.io API to AI assistants. The server focuses on rich bookmark, collection, tag, highlights, filters, batch operations, and account operations while following the latest Raindrop REST documentation.

Key Capabilities

  • Modern Raindrop API coverage – typed models for collections, bookmarks, tags, highlights/annotations, account profile, and cross-collection search.
  • Batch operations – tools for moving, deleting, updating, tagging, and untagging multiple bookmarks at once.
  • Advanced filtering – tools for applying complex filters to search and organize bookmarks.
  • Import/Export – functionality to import bookmarks from external sources and export them in various formats.
  • FastMCP tooling – tools registered with rich metadata so assistants can browse, filter, create, update, and delete Raindrop entities in natural flows.
  • Typed configurationRaindropSettings validates environment variables and exposes toggles for stdio or streamable HTTP transports.
  • Reusable HTTP client – retry-aware, rate-limit friendly RaindropClient with explicit error mapping and pagination helpers.
  • Tested implementation – pytest suite covering the client, tools, and entrypoints with coverage guardrails (≥80%).

Architecture Overview

!Architecture diagram showing MCP client connecting through FastMCP tools to Raindrop API

Getting Started

Prerequisites

Installation

# clone and install dependencies
git clone https://github.com/lesleslie/raindropio-mcp.git
cd raindropio-mcp
uv sync

Configuration

Set the RAINDROP_TOKEN environment variable before launching the server. You can export the value or place it inside a .env file next to the project root.

export RAINDROP_TOKEN="your-raindrop-token"

Optional environment variables (all prefixed with RAINDROP_):

Variable Default Description
RAINDROP_BASE_URL https://api.raindrop.io/rest/v1 Raindrop REST API root URL
RAINDROP_USER_AGENT raindropio-mcp/0.1.0 HTTP user agent header
RAINDROP_REQUEST_TIMEOUT 30.0 Seconds before an HTTP request times out
RAINDROP_MAX_CONNECTIONS 10 Maximum concurrent HTTP connections
RAINDROP_ENABLE_HTTP_TRANSPORT false Enable streamable HTTP transport
RAINDROP_HTTP_HOST 127.0.0.1 HTTP bind host when enabled
RAINDROP_HTTP_PORT 3034 HTTP port when enabled
RAINDROP_HTTP_PATH /mcp HTTP path for the MCP endpoint
RAINDROP_CACHE_DIR <unset> Optional persistent cache directory for Oneiric runtime snapshots

Note: Nested configuration fields use the pydantic-settings default delimiter of __ (double underscore). Use RAINDROP_OBSERVABILITY__LOG_LEVEL and RAINDROP_OBSERVABILITY__STRUCTURED_LOGGING to override nested observability settings.

Running the Server

# stdio (default)
uv run python -m raindropio_mcp

# or via the console script
uv run raindropio-mcp

# HTTP mode
uv run python -m raindropio_mcp --http --http-port 3034

example.mcp.dev.json demonstrates how to wire the server into MCP-enabled clients such as Claude Desktop or PowerShell integrations.

Quick Start Flowchart

!Quick start flowchart showing installation, configuration, and server startup steps

Available Tools

All tools are declared in raindropio_mcp/tools and registered automatically by register_all_tools.

Category Tool Description
Collections list_collections Fetch every collection visible to the token
get_collection Load metadata for a specific collection
create_collection Create a new collection/folder
update_collection Update title, description, or appearance
delete_collection Remove a collection (items move to Inbox)
Bookmarks list_bookmarks List bookmarks inside a collection with paging/search
search_bookmarks Full-text search across all collections
get_bookmark Retrieve a bookmark by id
create_bookmark Add a bookmark to a collection
update_bookmark Edit bookmark metadata or move between collections
delete_bookmark Delete a bookmark
Highlights list_highlights List all highlights for a specific bookmark
get_highlight Fetch a single highlight by its ID
create_highlight Create a new highlight for a bookmark
update_highlight Update an existing highlight
delete_highlight Delete a highlight by its ID
Batch batch_move_bookmarks Move multiple bookmarks to a different collection
batch_delete_bookmarks Delete multiple bookmarks
batch_update_bookmarks Update multiple bookmarks with the same changes
batch_tag_bookmarks Add tags to multiple bookmarks
batch_untag_bookmarks Remove tags from multiple bookmarks
Filters apply_filters Apply various filters to search and organize bookmarks across all collections
get_filtered_bookmarks_by_collection Apply filters to bookmarks within a specific collection
Import/Export import_bookmarks Import bookmarks from an external source into Raindrop.io
export_bookmarks Export bookmarks from Raindrop.io in a specified format
Tags list_tags Fetch tag usage counts
rename_tag Rename a tag globally
delete_tag Remove a tag across all bookmarks
Account get_account_profile Return the authenticated account profile
System ping Lightweight heartbeat including timestamp

Each tool returns JSON-serialisable payloads closely matching the official API shapes so downstream agents can consume data without additional parsing.

Tool Categories Overview

!Mind map showing nine tool categories: Collections, Bookmarks, Tags, Highlights, Search (Filters), Batch, Utils (Import/Export), Account, and System

Observability & Shutdown

Logging defaults to structured JSON. Set RAINDROP_OBSERVABILITY__STRUCTURED_LOGGING=false (or override via .env) to switch to classic text formatting.

Note: Nested configuration fields use the pydantic-settings default delimiter of __ (double underscore). Use RAINDROP_OBSERVABILITY__LOG_LEVEL and RAINDROP_OBSERVABILITY__STRUCTURED_LOGGING to override nested observability settings.

The FastMCP app registers a shutdown hook that gracefully closes the shared RaindropClient, ensuring HTTP connection pools are released when the server terminates.

Development Workflow

# lint + type-check + tests + security
uv run crackerjack

# individual tasks
uv run ruff check --fix
uv run mypy .
uv run pytest --cov=. --cov-report=term-missing

Test fixtures live in tests/ and automatically inject RAINDROP_TOKEN so unit execution never reaches the live API.

Installation via Bodai Marketplace

This repo ships as a Bodai-style Claude Code plugin. Add the marketplace locally and install raindropio to expose the MCP server plus three slash commands (/raindrop-search, /raindrop-add, /raindrop-collections) to Claude Code. The HTTP server must be running on localhost:3034 (start with uv run python -m raindropio_mcp --http --http-port 3034) before the commands can reach the underlying tools. See bodai-plugins for marketplace validation helpers.

Roadmap

  • Add optional caching middleware for high-volume assistant workflows
  • Implement sharing functionality when Raindrop exposes those endpoints
  • Enhance filter capabilities with additional options

Contributions and feature suggestions are welcome via issues or pull requests.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

raindropio_mcp-0.4.0.tar.gz (402.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

raindropio_mcp-0.4.0-py3-none-any.whl (47.2 kB view details)

Uploaded Python 3

File details

Details for the file raindropio_mcp-0.4.0.tar.gz.

File metadata

  • Download URL: raindropio_mcp-0.4.0.tar.gz
  • Upload date:
  • Size: 402.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for raindropio_mcp-0.4.0.tar.gz
Algorithm Hash digest
SHA256 f28ea2a8c22b4b3def5ceb693526d543c3c2d7a9ff16f24fb1523920d225214e
MD5 6a1bb93b87866d22d3ec00314caab042
BLAKE2b-256 c136d07f9145dcdc37d89fa4a804a07ae4532f75c01042a579736d79f7e2f7e8

See more details on using hashes here.

File details

Details for the file raindropio_mcp-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: raindropio_mcp-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 47.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for raindropio_mcp-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c458c2264d82ffdaa8b0f5dd8de2d82d8542141cc9ed77edd9a20acbe14bbb95
MD5 377de2ed210b2811a7306f6fc1b1b125
BLAKE2b-256 8538a2d19eef6a63d711e10484dc7d6bd3db4cb7b56429c5c452d01095bab01d

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 files

0.3.1

2 files

0.3.0

2 files

0.2.6

2 files

0.2.5

2 files

0.2.4

2 files

0.2.3

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page