Skip to main content

DragDropDo MCP server

The DragDropDo MCP server exposes the same capabilities as the Business API—upload, convert, compress, merge, zip, PDF password tools, and status polling—as MCP tools. Clients connect over Streamable HTTP (HTTPS).

Prerequisites

  • A D3 API key from the dashboard (sign in → Account → generate API key). This is the same key used for Authorization: Bearer on /api/v1.
  • The MCP endpoint URL for your environment. Replace the example below with the URL shown in your deployment or docs (production commonly follows https://mcp.dragdropdo.com/mcp; some environments use a host such as https://mcp-dev.dragdropdo.com/mcp).
Authentication: send the raw API key in the MCP HTTP Authorization header:
Authorization: Bearer <YOUR_D3_API_KEY>
The server validates this key the same way as REST requests (see Authentication).

Claude Code

Claude Code supports remote MCP servers over HTTP. Prefer --transport http (SSE is deprecated). Add the server and pass your API key on the Authorization header:
claude mcp add --transport http d3 https://mcp.dragdropdo.com/mcp \
  --header "Authorization: Bearer YOUR_D3_API_KEY"
Useful commands: claude mcp list, claude mcp get d3, claude mcp remove d3. Scopes: add --scope project to store the entry in the project’s .mcp.json, or --scope user for your user config. See Connect Claude Code to tools via MCP.

JSON configuration

Claude Code merges MCP entries from ~/.claude.json and, for project scope, .mcp.json. An HTTP server entry looks like this (structure may vary slightly by Claude Code version—use claude mcp get <name> after adding to see the exact shape):
{
  "mcpServers": {
    "d3": {
      "type": "http",
      "url": "https://mcp.dragdropdo.com/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_D3_API_KEY"
      }
    }
  }
}
You can use environment substitution in values where your tooling supports it (for example Bearer ${D3_API_KEY}), so secrets are not committed to git.

Cursor

In Cursor, MCP servers are defined in the MCP config file (often user: ~/.cursor/mcp.json, or project .cursor/mcp.json depending on your setup). Add an entry with url and headers:
{
  "mcpServers": {
    "d3": {
      "url": "https://mcp.dragdropdo.com/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_D3_API_KEY"
      }
    }
  }
}
Restart Cursor or reload MCP servers so the new server is picked up. The assistant can then call DragDropDo tools (for example initiate_upload, convert_file, poll_status) when appropriate.

Custom MCP clients

Use any official Model Context Protocol client that supports Streamable HTTP. Pass the MCP URL and send Authorization: Bearer with your D3 API key on every HTTP request (SDKs differ in how they expose headers or token providers). The examples below connect, run the MCP initialize handshake, and list tools. Adjust package versions and import paths to match your SDK release.
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";

const url = new URL("https://mcp.dragdropdo.com/mcp");
const transport = new StreamableHTTPClientTransport(url, {
  authProvider: {
    token: async () => process.env.D3_API_KEY!,
  },
});

const client = new Client({ name: "my-app", version: "1.0.0" });
await client.connect(transport);
await client.listTools();
// await client.callTool({ name: "supported_operation", arguments: { ext: "pdf" } });
SDK references: TypeScript, Python, PHP mcp/sdk, Ruby mcp gem, Go mark3labs/mcp-go, Java io.modelcontextprotocol.sdk:mcp.

Available tools (summary)

Typical tool names include: initiate_upload, complete_upload, supported_operation, convert_file, compress_file, merge_files, zip_files, lock_pdf, unlock_pdf, reset_pdf_password, get_status, poll_status, get_download_link. The server also sends instructions describing the upload and operation workflow. Use list_tools from your client after connecting to see the canonical list and schemas for your session.