@adeze/raindrop-mcp
Version:
MCP Server for Raindrop.io bookmark management
226 lines (153 loc) • 8.68 kB
Markdown
# Raindrop.io MCP Server
[](https://smithery.ai/server/@adeze/raindrop-mcp)
[](https://www.npmjs.com/package/@adeze/raindrop-mcp)
[](https://github.com/adeze/raindrop-mcp/releases)
Connect Raindrop.io to your AI assistant with a simple MCP server. Use it to organize, search, and manage bookmarks with natural language.
## What it can do
- Create, update, and delete collections and bookmarks
- Search bookmarks by tags, domain, type, date, and more
- Manage tags (list, rename, merge, delete)
- Read highlights from bookmarks
- Bulk edit bookmarks in a collection
- Audit broken links and duplicates, and manage trash
## Tools
- **diagnostics** - Server diagnostic information and library health metrics
- **collection_list** - List all collections as a flat list
- **get_collection_tree** - Hierarchical view of collections with full breadcrumb paths
- **collection_manage** - Create, update, or delete collections
- **bookmark_search** - Advanced search with filters, tags, and pagination
- **bookmark_manage** - Create, update, or delete bookmarks
- **get_raindrop** - Fetch a single bookmark by ID
- **list_raindrops** - List bookmarks for a collection with pagination
- **get_suggestions** - AI-powered organization advice (tags/collections) for a URL or bookmark
- **suggest_tags** - Suggest relevant tags from bookmark metadata using AI-assisted analysis
- **bulk_edit_raindrops** - Bulk update, move, or remove bookmarks in a specific collection
- **tag_manage** - Rename, merge, or delete tags
- **highlight_manage** - Create, update, or delete highlights
- **library_audit** - Scan library for broken links, duplicates, and untagged items
- **empty_trash** - Permanently empty the trash (requires confirmation)
- **cleanup_collections** - Remove empty collections (requires confirmation)
- **remove_duplicates** - Find and remove duplicate bookmarks with safe confirmation flow
## Install
### Quick Start (One-Liners)
| Tool | One-Liner Command |
| :----------------- | :----------------------------------------------------------------- |
| **Gemini CLI** | `gemini extensions install https://github.com/adeze/raindrop-mcp` |
| **Codex CLI** | `codex mcp add raindrop -- npx -y @adeze/raindrop-mcp` |
| **Claude Code** | `claude mcp add raindrop -- npx -y @adeze/raindrop-mcp` |
| **GitHub Copilot** | `gh copilot config mcp add raindrop -- npx -y @adeze/raindrop-mcp` |
| **Vercel Skills** | `npx skills add adeze/raindrop-mcp` |
> **Note**: For tools adding an MCP server via `npx`, you must have the `RAINDROP_ACCESS_TOKEN` environment variable set in your shell or the tool's environment config.
### Vercel Skills (npx skills)
This project is compatible with the [Vercel Skills](https://github.com/vercel/skills) system. All necessary manifests are present:
- `manifest.json`: Standard MCP manifest for server definition.
- `SKILL.md`: Standardized skill description for agent discovery.
- `mcp.json`: Root configuration for MCP clients and registries.
To add this server to your local skill directory:
```bash
npx skills add adeze/raindrop-mcp --global
```
To contribute this to the [Vercel Skills Registry](https://github.com/vercel/skills/tree/main/registry), submit a Pull Request adding this repository URL to the registry.
### Claude Desktop (MCPB)
Download the latest raindrop-mcp.mcpb from the GitHub Release and add it to Claude Desktop:
- Releases: https://github.com/adeze/raindrop-mcp/releases
In Claude Desktop, add the bundle and set this environment variable:
- RAINDROP_ACCESS_TOKEN (from your Raindrop.io integrations settings)
### NPX (CLI)
Set your API token as an environment variable and run:
```bash
export RAINDROP_ACCESS_TOKEN=YOUR_RAINDROP_ACCESS_TOKEN
npx @adeze/raindrop-mcp
```
### Manual MCP config (mcp.json)
Add this to your MCP client configuration:
```json
{
"servers": {
"raindrop": {
"type": "stdio",
"command": "npx",
"args": ["@adeze/raindrop-mcp@latest"],
"env": {
"RAINDROP_ACCESS_TOKEN": "YOUR_RAINDROP_ACCESS_TOKEN"
}
}
}
}
```
## Requirements
- A Raindrop.io account
- A Raindrop.io API Access Token: https://app.raindrop.io/settings/integrations
## Support
- Issues: https://github.com/adeze/raindrop-mcp/issues
## Release
This repository uses `semantic-release` as the only supported release flow.
### How publishing works
- Releases run from pushes to `master` via `.github/workflows/ci.yml`.
- `semantic-release` analyzes Conventional Commit messages, computes the next version, updates `CHANGELOG.md`, tags/releases on GitHub, and publishes npm.
- During release preparation, `.releaserc.json` syncs `manifest.json`, `mcp.json`, and `gemini-extension.json`, then builds `raindrop-mcp.mcpb` so the GitHub Release includes the bundle.
### Pre-release dry-run
- Run `.github/workflows/release-dry-run.yml` with **Run workflow** before cutting a public release.
- This validates semantic version calculation, registry auth, and release pipeline behavior without publishing.
### Required secrets
- `GITHUB_TOKEN` is provided by GitHub Actions for release automation.
### npm trusted publishing
- npm publishing is configured via GitHub Actions OIDC trusted publishing.
- `NPM_TOKEN` is not required for the standard CI release path.
### Local validation before merge
```bash
bun run lint
bun run type-check
bun run test
bun run build
```
### Commit message examples
- `fix: handle empty tag merge payload`
- `feat: add collection path filter`
- `feat!: remove deprecated search parameter`
Do not manually bump versions, push release tags, or run manual npm publish commands for normal releases.
## 📋 Recent Enhancements (v2.4.x)
### Smart Organization & Hierarchy
- **AI Suggestions**: New `get_suggestions` tool provides organizational advice using Raindrop's API and MCP Sampling.
- **Collection Tree**: `get_collection_tree` tool provides a hierarchical view with full breadcrumb paths.
- **Bulk Move**: Added `move` operation to `bulk_edit_raindrops` for efficient library organization.
- **Pagination Support**: Standardized `list_raindrops` and `bookmark_search` with pagination for large libraries.
### Safety & Quality
- **Confirmation Logic**: Destructive tools (`empty_trash`, `cleanup_collections`) now require explicit confirmation.
- **Standardized Naming**: All tools now use consistent snake_case naming conventions.
- **CI/CD Pipeline**: Enhanced GitHub Actions with automated linting, type-checking, and cross-transport tests.
- **Code Quality**: Established ESLint and Prettier configurations for maintainable development.
## 📋 Previous Enhancements (v2.3.3)
### Advanced Cleanup & Library Audit
## 📋 Previous Enhancements (v2.3.2)
### MCP Resource Links Implementation
- Modern `resource` content following current MCP SDK best practices
- Efficient data access: tools return lightweight links instead of full payloads
- Better performance: clients fetch full bookmark/collection data only when needed
- Seamless integration with dynamic resource system (`mcp://raindrop/{id}`)
### SDK & API Updates
- Updated to the latest supported MCP SDK in this repository
- Modern tool registration with improved descriptions
- Fixed API endpoints and path parameters
- All core tools fully functional
### Tool Optimization
- Resource-efficient responses for bookmark/collection lists
- Dynamic resource access via `mcp://collection/{id}` and `mcp://raindrop/{id}`
- Better client UX with lighter list payloads
- Full MCP compliance with official SDK patterns
### Service Layer Improvements
- Reduced code through extracted common helpers
- Consistent error handling and response processing
- Enhanced type safety with generic handlers
- Centralized endpoint building
### Testing Improvements
- Stronger end-to-end coverage for MCP tool execution
- Expanded integration tests for real-world client flows
### MCP 2.0 Preparation (Bulk Ops)
- Laying groundwork for MCP 2.0 bulk-operation workflows and tooling
### OAuth (Coming Soon)
- OAuth-based auth flow to simplify setup without manual tokens
### Note
Apologies to anyone affected by the last couple of builds. Thank you for the patience and reports.
## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.