Skip to main content
Glama
index.html31.8 kB
<!DOCTYPE html><html class="default" lang="en" data-base="./"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>@adeze/raindrop-mcp - v2.0.12</title><meta name="description" content="Documentation for @adeze/raindrop-mcp"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="assets/style.css"/><link rel="stylesheet" href="assets/highlight.css"/><script defer src="assets/main.js"></script><script async src="assets/icons.js" id="tsd-icons-script"></script><script async src="assets/search.js" id="tsd-search-script"></script><script async src="assets/navigation.js" id="tsd-nav-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="index.html" class="title">@adeze/raindrop-mcp - v2.0.12</a><div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-menu"></use></svg></a></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><h1>@adeze/raindrop-mcp - v2.0.12</h1></div><div class="tsd-panel tsd-typography"><h1 id="raindropio-mcp-server" class="tsd-anchor-link"><a href="http://Raindrop.io">Raindrop.io</a> MCP Server<a href="#raindropio-mcp-server" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h1><p><a href="https://smithery.ai/server/@adeze/raindrop-mcp"><img src="https://smithery.ai/badge/@adeze/raindrop-mcp" alt="smithery badge"></a></p> <p>This project provides a Model Context Protocol (MCP) server for interacting with the <a href="https://raindrop.io/">Raindrop.io</a> bookmarking service. It allows Language Models (LLMs) and other AI agents to access and manage your <a href="http://Raindrop.io">Raindrop.io</a> data through the MCP standard.</p> <p><a href="https://www.npmjs.com/package/@adeze/raindrop-mcp"><img src="https://badge.fury.io/js/%40adeze%2Fraindrop-mcp.svg" alt="npm version"></a></p> <h2 id="features" class="tsd-anchor-link">Features<a href="#features" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><ul> <li><strong>CRUD Operations</strong>: Create, Read, Update, and Delete collections and bookmarks.</li> <li><strong>Advanced Search</strong>: Filter bookmarks by various criteria like tags, domain, type, creation date, etc.</li> <li><strong>Tag Management</strong>: List, rename, merge, and delete tags.</li> <li><strong>Highlight Access</strong>: Retrieve text highlights from bookmarks.</li> <li><strong>Collection Management</strong>: Reorder, expand/collapse, merge, and remove empty collections.</li> <li><strong>File Upload</strong>: Upload files directly to <a href="http://Raindrop.io">Raindrop.io</a>.</li> <li><strong>Reminders</strong>: Set reminders for specific bookmarks.</li> <li><strong>Import/Export</strong>: Initiate and check the status of bookmark imports and exports.</li> <li><strong>Trash Management</strong>: Empty the trash.</li> <li><strong>MCP Compliance</strong>: Exposes <a href="http://Raindrop.io">Raindrop.io</a> functionalities as MCP resources and tools.</li> <li><strong>Optimized Tools</strong>: Enhanced tool structure with 35% fewer tools (24 vs 37+) following MCP 2025 best practices.</li> <li><strong>AI-Friendly Interface</strong>: Clear naming conventions and comprehensive parameter documentation.</li> <li><strong>Streaming Support</strong>: Provides real-time SSE (Server-Sent Events) endpoints for streaming bookmark updates.</li> <li><strong>Built with TypeScript</strong>: Strong typing for better maintainability.</li> <li><strong>Uses Axios</strong>: For making requests to the <a href="http://Raindrop.io">Raindrop.io</a> API.</li> <li><strong>Uses Zod</strong>: For robust schema validation of API parameters and responses.</li> <li><strong>Uses MCP SDK</strong>: Leverages the official <code>@modelcontextprotocol/sdk</code>.</li> </ul> <h2 id="prerequisites" class="tsd-anchor-link">Prerequisites<a href="#prerequisites" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><ul> <li>Node.js (v18 or later recommended) or Bun</li> <li>A <a href="http://Raindrop.io">Raindrop.io</a> account</li> <li>A <a href="http://Raindrop.io">Raindrop.io</a> API Access Token (create one in your <a href="https://app.raindrop.io/settings/integrations">Raindrop.io settings</a>)</li> </ul> <h2 id="installation-and-usage" class="tsd-anchor-link">Installation and Usage<a href="#installation-and-usage" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><h3 id="using-npx-recommended" class="tsd-anchor-link">Using NPX (Recommended)<a href="#using-npx-recommended" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p>You can run the server directly using npx without installing it:</p> <pre><code class="bash"><span class="hl-0"># Set your API token as an environment variable</span><br/><span class="hl-1">export</span><span class="hl-2"> </span><span class="hl-3">RAINDROP_ACCESS_TOKEN</span><span class="hl-2">=</span><span class="hl-3">YOUR_RAINDROP_ACCESS_TOKEN</span><br/><br/><span class="hl-0"># Run the server</span><br/><span class="hl-4">npx</span><span class="hl-2"> </span><span class="hl-5">@adeze/raindrop-mcp</span> </code><button type="button">Copy</button></pre> <h3 id="from-source" class="tsd-anchor-link">From Source<a href="#from-source" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><ol> <li> <p><strong>Clone the repository:</strong></p> <pre><code class="bash"><span class="hl-4">git</span><span class="hl-2"> </span><span class="hl-5">clone</span><span class="hl-2"> </span><span class="hl-5">https://github.com/adeze/raindrop-mcp.git</span><br/><span class="hl-4">cd</span><span class="hl-2"> </span><span class="hl-5">raindrop-mcp</span> </code><button type="button">Copy</button></pre> </li> <li> <p><strong>Install dependencies:</strong></p> <pre><code class="bash"><span class="hl-4">bun</span><span class="hl-2"> </span><span class="hl-5">install</span> </code><button type="button">Copy</button></pre> </li> <li> <p><strong>Configure Environment Variables:</strong> Create a <code>.env</code> file in the root directory by copying the example:</p> <pre><code class="bash"><span class="hl-4">cp</span><span class="hl-2"> </span><span class="hl-5">.env.example</span><span class="hl-2"> </span><span class="hl-5">.env</span> </code><button type="button">Copy</button></pre> <p>Edit the <code>.env</code> file and add your <a href="http://Raindrop.io">Raindrop.io</a> API Access Token:</p> <pre><code class="env">RAINDROP_ACCESS_TOKEN=YOUR_RAINDROP_ACCESS_TOKEN </code><button type="button">Copy</button></pre> </li> <li> <p><strong>Build and Run:</strong></p> <pre><code class="bash"><span class="hl-4">bun</span><span class="hl-2"> </span><span class="hl-5">run</span><span class="hl-2"> </span><span class="hl-5">build</span><br/><span class="hl-4">bun</span><span class="hl-2"> </span><span class="hl-5">start</span> </code><button type="button">Copy</button></pre> </li> </ol> <h2 id="inspector-cli--vs-code-integration" class="tsd-anchor-link">Inspector CLI &amp; VS Code Integration<a href="#inspector-cli--vs-code-integration" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><p>This project is designed for seamless debugging and protocol inspection using the <a href="https://github.com/modelcontextprotocol/inspector">MCP Inspector CLI</a>. For full instructions and best practices, see <a href=".github/prompts/inspector.prompt.md"><code>./github/prompts/inspector.prompt.md</code></a>.</p> <h3 id="mcp-inspector-cli-usage" class="tsd-anchor-link">MCP Inspector CLI Usage<a href="#mcp-inspector-cli-usage" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><ul> <li><strong>List available tools:</strong><pre><code class="bash"><span class="hl-4">npx</span><span class="hl-2"> </span><span class="hl-1">-y</span><span class="hl-2"> </span><span class="hl-5">@modelcontextprotocol/inspector</span><span class="hl-2"> </span><span class="hl-1">--cli</span><span class="hl-2"> </span><span class="hl-5">node</span><span class="hl-2"> </span><span class="hl-5">build/index.js</span><span class="hl-2"> </span><span class="hl-1">--method</span><span class="hl-2"> </span><span class="hl-5">tools/list</span> </code><button type="button">Copy</button></pre> </li> <li><strong>Send protocol requests (e.g., ping):</strong><pre><code class="bash"><span class="hl-4">npx</span><span class="hl-2"> </span><span class="hl-1">-y</span><span class="hl-2"> </span><span class="hl-5">@modelcontextprotocol/inspector</span><span class="hl-2"> </span><span class="hl-1">--cli</span><span class="hl-2"> </span><span class="hl-5">node</span><span class="hl-2"> </span><span class="hl-5">build/index.js</span><span class="hl-2"> </span><span class="hl-1">--method</span><span class="hl-2"> </span><span class="hl-5">ping</span> </code><button type="button">Copy</button></pre> </li> <li><strong>Debug with Inspector:</strong> <ul> <li>For STDIO server:<pre><code class="bash"><span class="hl-4">npx</span><span class="hl-2"> </span><span class="hl-1">-y</span><span class="hl-2"> </span><span class="hl-5">@modelcontextprotocol/inspector</span><span class="hl-2"> </span><span class="hl-5">node</span><span class="hl-2"> </span><span class="hl-5">build/index.js</span> </code><button type="button">Copy</button></pre> </li> <li>For HTTP server:<pre><code class="bash"><span class="hl-4">npx</span><span class="hl-2"> </span><span class="hl-1">-y</span><span class="hl-2"> </span><span class="hl-5">@modelcontextprotocol/inspector</span><span class="hl-2"> </span><span class="hl-5">node</span><span class="hl-2"> </span><span class="hl-5">build/server.js</span> </code><button type="button">Copy</button></pre> </li> </ul> </li> </ul> <p>You can automate these flows in VS Code using launch configurations and tasks. See the prompt file for more advanced scenarios and flags.</p> <hr> <p>The server uses standard input/output (stdio) for communication by default, listening for requests on stdin and sending responses to stdout.</p> <h2 id="usage-with-mcp-clients" class="tsd-anchor-link">Usage with MCP Clients<a href="#usage-with-mcp-clients" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><p>Connect your MCP client (like an LLM agent) to the running server process via stdio. The server exposes the following resource URIs:</p> <ul> <li><code>collections://all</code> - All collections</li> <li><code>collections://{parentId}/children</code> - Child collections</li> <li><code>tags://all</code> - All tags</li> <li><code>tags://collection/{collectionId}</code> - Tags filtered by collection</li> <li><code>highlights://all</code> - All highlights</li> <li><code>highlights://raindrop/{raindropId}</code> - Highlights for a specific bookmark</li> <li><code>highlights://collection/{collectionId}</code> - Highlights filtered by collection</li> <li><code>bookmarks://collection/{collectionId}</code> - Bookmarks in a collection</li> <li><code>bookmarks://raindrop/{id}</code> - Specific bookmark by ID</li> <li><code>user://info</code> - User information</li> <li><code>user://stats</code> - User statistics</li> </ul> <p>It also provides numerous tools for operational tasks such as collection management, bookmark operations, tag management, highlight operations, and user operations. For a detailed list of all available tools, refer to <code>CLAUDE.md</code> or check <code>src/services/mcp.service.ts</code> for definitions of resources and tools.</p> <h3 id="mcp-configuration" class="tsd-anchor-link">MCP Configuration<a href="#mcp-configuration" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p>To use the Raindrop MCP server with your AI assistant or MCP-compatible client, you can add the following configuration to your <code>.mcp.json</code> file:</p> <pre><code class="json"><span class="hl-5">&quot;raindrop&quot;</span><span class="hl-2">: {</span><br/><span class="hl-2"> </span><span class="hl-6">&quot;command&quot;</span><span class="hl-2">: </span><span class="hl-5">&quot;npx&quot;</span><span class="hl-2">,</span><br/><span class="hl-2"> </span><span class="hl-6">&quot;args&quot;</span><span class="hl-2">: [</span><br/><span class="hl-2"> </span><span class="hl-5">&quot;@adeze/raindrop-mcp@latest&quot;</span><br/><span class="hl-2"> ],</span><br/><span class="hl-2"> </span><span class="hl-6">&quot;env&quot;</span><span class="hl-2">: {</span><br/><span class="hl-2"> </span><span class="hl-6">&quot;RAINDROP_ACCESS_TOKEN&quot;</span><span class="hl-2">: </span><span class="hl-5">&quot;YOUR_RAINDROP_API_TOKEN&quot;</span><br/><span class="hl-2"> }</span><br/><span class="hl-2">}</span> </code><button type="button">Copy</button></pre> <p>For Claude Code or other MCP-compatible clients, this will register the Raindrop server under the name &quot;raindrop&quot; and make all of its resources and tools available to your AI assistant.</p> <h2 id="development" class="tsd-anchor-link">Development<a href="#development" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><ul> <li><strong>Testing:</strong> <code>bun test</code></li> <li><strong>Type checking:</strong> <code>bun run type-check</code></li> <li><strong>Build:</strong> <code>bun run build</code></li> <li><strong>Development:</strong> <code>bun run dev</code></li> <li><strong>Debug:</strong> <code>bun run debug</code> or <code>bun run inspector</code></li> <li><strong>HTTP server:</strong> <code>bun run start:http</code></li> </ul> <h2 id="contributing" class="tsd-anchor-link">Contributing<a href="#contributing" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><p>Contributions are welcome! Please open an issue or submit a pull request.</p> <h2 id="license" class="tsd-anchor-link">License<a href="#license" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><p>This project is licensed under the MIT License - see the <a href="media/LICENSE">LICENSE</a> file for details.</p> <h2 id="architecture-overview" class="tsd-anchor-link">Architecture Overview<a href="#architecture-overview" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><h3 id="project-structure" class="tsd-anchor-link">Project Structure<a href="#project-structure" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><ul> <li><strong>Source:</strong> <code>src/</code> <ul> <li><code>index.ts</code>, <code>server.ts</code>: Entrypoints for STDIO and HTTP MCP servers.</li> <li><code>connectors/</code>: External service connectors (e.g., OpenAI).</li> <li><code>services/</code>: Business logic for <a href="http://Raindrop.io">Raindrop.io</a> and MCP protocol (<code>raindrop.service.ts</code>, <code>raindropmcp.service.ts</code>).</li> <li><code>types/</code>: TypeScript types and schemas (MCP, Raindrop, OAuth, Zod).</li> <li><code>utils/</code>: Logging and shared utilities.</li> </ul> </li> <li><strong>Build:</strong> <code>build/</code> <ul> <li>Compiled output for deployment and inspection.</li> </ul> </li> <li><strong>Tests:</strong> <code>tests/</code> <ul> <li>All Vitest test files for services, connectors, and protocol compliance.</li> </ul> </li> </ul> <h3 id="key-technologies--patterns" class="tsd-anchor-link">Key Technologies &amp; Patterns<a href="#key-technologies--patterns" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><ul> <li><strong>TypeScript:</strong> Type-safe, modular codebase.</li> <li><strong>Zod:</strong> Schema validation for all API inputs/outputs.</li> <li><strong>Bun:</strong> Package management, scripts, and runtime.</li> <li><strong>Vitest:</strong> Testing framework for all logic and integration tests.</li> <li><strong>MCP Protocol:</strong> Implements Model Context Protocol via STDIO and HTTP, exposing <a href="http://Raindrop.io">Raindrop.io</a> as MCP resources and tools.</li> <li><strong>Inspector Tool:</strong> Integrated for protocol debugging and inspection.</li> <li><strong>Defensive Programming:</strong> Centralized error handling, explicit types, and robust validation.</li> <li><strong>Declarative Tooling:</strong> Tools and resources are defined with clear schemas and documentation, following MCP and DXT specifications.</li> </ul> <h3 id="tool--resource-design" class="tsd-anchor-link">Tool &amp; Resource Design<a href="#tool--resource-design" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><ul> <li><strong>Resources:</strong> Exposed as MCP URIs (e.g., <code>collections://all</code>, <code>tags://all</code>, <code>highlights://raindrop/{id}</code>).</li> <li><strong>Tools:</strong> Modular, context-aware, and AI-friendly. Reduced redundancy and grouped by category/action.</li> <li><strong>Service Layer:</strong> Centralized business logic, endpoint construction, and error handling.</li> <li><strong>Connector Layer:</strong> Handles external integrations (e.g., OpenAI).</li> </ul> <h3 id="development--release" class="tsd-anchor-link">Development &amp; Release<a href="#development--release" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><ul> <li><strong>Scripts:</strong> All build, test, and release scripts use Bun.</li> <li><strong>DXT Manifest:</strong> Automated packaging and release via GitHub CLI.</li> <li><strong>Continuous Integration:</strong> Version tagging and manifest publishing are fully automated.</li> </ul> <h2 id="📋-recent-enhancements-v200" class="tsd-anchor-link">📋 Recent Enhancements (v2.0.0)<a href="#📋-recent-enhancements-v200" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><h3 id="service-layer-refactoring" class="tsd-anchor-link"><strong>Service Layer Refactoring</strong><a href="#service-layer-refactoring" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><ul> <li><strong>25-30% code reduction</strong> through extracted common functions and patterns</li> <li><strong>Consistent error handling</strong> with standardized response processing</li> <li><strong>Enhanced type safety</strong> with generic response handlers</li> <li><strong>Centralized endpoint building</strong> for better API consistency</li> </ul> <h3 id="tool-optimization" class="tsd-anchor-link"><strong>Tool Optimization</strong><a href="#tool-optimization" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><ul> <li><strong>35% reduction</strong> in tool count (37+ → 24 tools) with enhanced AI-friendly descriptions</li> <li><strong>Hierarchical naming</strong> with <code>category_action</code> pattern for better organization</li> <li><strong>Comprehensive documentation</strong> with detailed parameter descriptions and examples</li> <li><strong>Dynamic tools</strong> providing context-aware recommendations</li> </ul> <h3 id="developer-experience" class="tsd-anchor-link"><strong>Developer Experience</strong><a href="#developer-experience" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><ul> <li><strong><a href="https://github.com/adeze/raindrop-mcp/issues/3">VS Code Configuration</a></strong>: Enterprise-grade testing &amp; debugging support</li> <li><strong>Enhanced error messages</strong> with actionable suggestions</li> <li><strong>Standardized resource patterns</strong> for consistent API interactions</li> <li><strong>Comprehensive diagnostic tools</strong> for monitoring and debugging</li> </ul> <h2 id="automated-release--tagging" class="tsd-anchor-link">Automated Release &amp; Tagging<a href="#automated-release--tagging" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h2><p>This project uses Bun scripts and GitHub CLI to automate version tagging and DXT manifest release.</p> <h3 id="tagging-the-current-version" class="tsd-anchor-link">Tagging the Current Version<a href="#tagging-the-current-version" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p>Tags the current commit with the version from <code>package.json</code> and pushes it to GitHub:</p> <pre><code class="bash"><span class="hl-0"># Bump version locally</span><br/><span class="hl-4">bun</span><span class="hl-2"> </span><span class="hl-5">run</span><span class="hl-2"> </span><span class="hl-5">bump:patch</span><span class="hl-2"> </span><span class="hl-0"># 2.0.10 → 2.0.11</span><br/><br/><span class="hl-0"># Then either:</span><br/><span class="hl-0"># Option A: Let workflow handle publishing</span><br/><span class="hl-4">bun</span><span class="hl-2"> </span><span class="hl-5">run</span><span class="hl-2"> </span><span class="hl-5">tag:version</span><span class="hl-2"> </span><span class="hl-0"># Creates tag, triggers workflow</span><br/><br/><span class="hl-0"># Option B: Publish manually </span><br/><span class="hl-4">bun</span><span class="hl-2"> </span><span class="hl-5">run</span><span class="hl-2"> </span><span class="hl-5">build</span><br/><span class="hl-4">bun</span><span class="hl-2"> </span><span class="hl-5">run</span><span class="hl-2"> </span><span class="hl-5">bun:publish:npm</span><br/><span class="hl-4">bun</span><span class="hl-2"> </span><span class="hl-5">run</span><span class="hl-2"> </span><span class="hl-5">bun:publish:github</span> </code><button type="button">Copy</button></pre> <h3 id="publishing-the-dxt-manifest-to-github-releases" class="tsd-anchor-link">Publishing the DXT Manifest to GitHub Releases<a href="#publishing-the-dxt-manifest-to-github-releases" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="assets/icons.svg#icon-anchor"></use></svg></a></h3><p>Creates a GitHub release for the current version and attaches the <code>raindrop-mcp.dxt</code> manifest:</p> <pre><code class="bash"><span class="hl-4">bun</span><span class="hl-2"> </span><span class="hl-5">run</span><span class="hl-2"> </span><span class="hl-5">release:dxt</span> </code><button type="button">Copy</button></pre> <p><strong>Requirements:</strong></p> <ul> <li><a href="https://cli.github.com/">GitHub CLI</a> (<code>gh</code>) must be installed and authenticated.</li> <li><a href="https://stedolan.github.io/jq/"><code>jq</code></a> must be installed (<code>brew install jq</code> on macOS).</li> <li>The <code>raindrop-mcp.dxt</code> file must exist in the project root.</li> </ul> <p><strong>Scripts (in <code>package.json</code>):</strong></p> <pre><code class="json"><span class="hl-5">&quot;tag:version&quot;</span><span class="hl-2">: </span><span class="hl-5">&quot;git tag v$(jq -r .version package.json) &amp;&amp; git push origin v$(jq -r .version package.json)&quot;</span><span class="hl-2">,</span><br/><span class="hl-5">&quot;release:dxt&quot;</span><span class="hl-2">: </span><span class="hl-5">&quot;gh release create v$(jq -r .version package.json) raindrop-mcp.dxt --title </span><span class="hl-7">\&quot;</span><span class="hl-5">Release v$(jq -r .version package.json)</span><span class="hl-7">\&quot;</span><span class="hl-5"> --notes </span><span class="hl-7">\&quot;</span><span class="hl-5">DXT manifest for MCP</span><span class="hl-7">\&quot;</span><span class="hl-5">&quot;</span> </code><button type="button">Copy</button></pre> <p>See <a href="https://modelcontextprotocol.io/">Model Context Protocol documentation</a> and <a href="https://developer.raindrop.io">Raindrop.io API docs</a> for more details.</p> </div></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="assets/icons.svg#icon-chevronDown"></use></svg><h3>On This Page</h3></summary><div class="tsd-accordion-details"><a href="#raindropio-mcp-server"><span>Raindrop.io <wbr/>MCP <wbr/>Server</span></a><ul><li><a href="#features"><span>Features</span></a></li><li><a href="#prerequisites"><span>Prerequisites</span></a></li><li><a href="#installation-and-usage"><span>Installation and <wbr/>Usage</span></a></li><li><ul><li><a href="#using-npx-recommended"><span>Using <wbr/>NPX (<wbr/>Recommended)</span></a></li><li><a href="#from-source"><span>From <wbr/>Source</span></a></li></ul></li><li><a href="#inspector-cli--vs-code-integration"><span>Inspector <wbr/>CLI &amp; <wbr/>VS <wbr/>Code <wbr/>Integration</span></a></li><li><ul><li><a href="#mcp-inspector-cli-usage"><span>MCP <wbr/>Inspector <wbr/>CLI <wbr/>Usage</span></a></li></ul></li><li><a href="#usage-with-mcp-clients"><span>Usage with <wbr/>MCP <wbr/>Clients</span></a></li><li><ul><li><a href="#mcp-configuration"><span>MCP <wbr/>Configuration</span></a></li></ul></li><li><a href="#development"><span>Development</span></a></li><li><a href="#contributing"><span>Contributing</span></a></li><li><a href="#license"><span>License</span></a></li><li><a href="#architecture-overview"><span>Architecture <wbr/>Overview</span></a></li><li><ul><li><a href="#project-structure"><span>Project <wbr/>Structure</span></a></li><li><a href="#key-technologies--patterns"><span>Key <wbr/>Technologies &amp; <wbr/>Patterns</span></a></li><li><a href="#tool--resource-design"><span>Tool &amp; <wbr/>Resource <wbr/>Design</span></a></li><li><a href="#development--release"><span>Development &amp; <wbr/>Release</span></a></li></ul></li><li><a href="#📋-recent-enhancements-v200"><span>📋 <wbr/>Recent <wbr/>Enhancements (v2.0.0)</span></a></li><li><ul><li><a href="#service-layer-refactoring"><span>Service <wbr/>Layer <wbr/>Refactoring</span></a></li><li><a href="#tool-optimization"><span>Tool <wbr/>Optimization</span></a></li><li><a href="#developer-experience"><span>Developer <wbr/>Experience</span></a></li></ul></li><li><a href="#automated-release--tagging"><span>Automated <wbr/>Release &amp; <wbr/>Tagging</span></a></li><li><ul><li><a href="#tagging-the-current-version"><span>Tagging the <wbr/>Current <wbr/>Version</span></a></li><li><a href="#publishing-the-dxt-manifest-to-github-releases"><span>Publishing the <wbr/>DXT <wbr/>Manifest to <wbr/>Git<wbr/>Hub <wbr/>Releases</span></a></li></ul></li></ul></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="modules.html">@adeze/raindrop-mcp - v2.0.12</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/adeze/raindrop-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server