---
title: MCP Server
category: concept
slug: mcp
summary: "Streamable-HTTP MCP server for Claude Code integration."
---
# MCP Server

Streamable-HTTP MCP server for Claude Code integration.

The Drop MCP server lets Claude Code (and any MCP-compatible client) manage Droplets directly — creating, searching, editing, sharing, and versioning without leaving the conversation. No CLI install required on the agent's machine.

Drop ships **two** transports:

- **Remote (recommended)** — Streamable HTTP at `https://drop.himarley.ai/api/mcp`. Bearer-token auth, stateless, no install. Use this in Claude Code via `"type": "http"`.
- **Local stdio** — `npx @himarley/drop-mcp`. Adds support for reading local file paths (`filePath` arg) which the remote server can't do — useful when authoring a Droplet from a file on disk.

The CLI is still the most token-efficient surface for Claude Code; the MCP server is the right pick for non-CLI MCP clients or when you want tool-discovery without a shell.

## Available tools

| Tool | What it does |
|---|---|
| `drop_list` | List your Droplets (scope mine/shared/all, sort, order, limit) |
| `drop_get` | Get details for a specific Droplet |
| `drop_search` | Full-text search across all Droplets |
| `drop_create` | Create a Droplet from HTML or Markdown |
| `drop_redeploy` | Update an existing Droplet with new content |
| `drop_download` | Download the HTML source of any version |
| `drop_versions` | View version history |
| `drop_rollback` | Roll back to a previous version |
| `drop_duplicate` | Copy a Droplet to your own account |
| `drop_get_access` | View internal access settings |
| `drop_set_access` | Set PRIVATE / EVERYONE / SPECIFIC / SPACE access |
| `drop_share_links` | List external share links |
| `drop_create_share_link` | Create an internal or external share link |
| `drop_delete_share_link` | Remove a share link |
| `drop_comments` | List threaded comments on a Droplet (legacy shape) |
| `drop_comments_create` | Post a comment — page-level, pinned to an element, or a threaded reply |
| `drop_comments_list` | List comments with pin target, resolved state, and thumbs-up counts |
| `drop_comments_get` | Fetch a single comment by id |
| `drop_comments_resolve` / `drop_comments_unresolve` | Close or reopen a comment — **resolve is the AI-loop close verb**, not delete |
| `drop_comments_delete` | Permanently remove a comment + its replies (spam / mistakes only) |
| `drop_comments_thumbs_up` / `drop_comments_unthumbs_up` | Add or remove your thumbs-up reaction |
| `drop_state_get` | Read a Droplet's shared key/value state |
| `drop_state_set` | Write a Droplet's shared state — modify it directly, no JSON import step |
| `drop_signoff_list` | List [decisions](/docs/decisions) you can see, with sign-off state; filter by phase/role/tag |
| `drop_signoff_get` | Read a [decision](/docs/decisions)'s sign-off — state + the actions available to you |
| `drop_signoff_cast` | Cast your sign-off (agree / condition / disagree) |
| `drop_signoff_clear` | Remove your own sign-off response while the decision is open |
| `drop_signoff_finalize` | Record the decider's call (approve → decided, block → blocked) |
| `drop_signoff_reopen` | Clear a recorded call and reopen |
| `drop_signoff_open` / `drop_signoff_close` | Open a draft decision for sign-off, or return it to draft (editor) |
| `drop_signoff_set_proposition` | Set "what you're signing off on" (editor) |
| `drop_signoff_mine` | List the decisions across Drop that are waiting on you |


## Operations

### Configure Claude Code

Generate a token at **Settings → API Tokens** (it's only shown once — copy it). Then add the MCP server to Claude Code via `/settings`. Restart Claude Code and it auto-discovers every tool.

**CLI**

```json
{
  "mcpServers": {
    "drop": {
      "type": "http",
      "url": "https://drop.himarley.ai/api/mcp",
      "headers": {
        "Authorization": "Bearer drop_your_token_here"
      }
    }
  }
}
```

**HTTP**

```json
// Local stdio alternative — supports filePath for local files
{
  "mcpServers": {
    "drop": {
      "command": "npx",
      "args": ["@himarley/drop-mcp"],
      "env": {
        "DROP_TOKEN": "drop_your_token_here",
        "DROP_SERVER": "https://drop.himarley.ai"
      }
    }
  }
}
```

### Authenticate

The remote MCP server accepts the same Bearer tokens the CLI uses — either a Cognito JWT (issued by `drop login`) or a legacy `drop_*` token (deprecated but still accepted during the migration window). API tokens are managed at `/settings/tokens`. A PR preview (engineering) needs a token minted inside that preview: `eval "$(drop preview token <PR>)"` sets `DROP_SERVER` and `DROP_TOKEN` for it, and `drop preview exec <PR> -- <command>` runs a local MCP server (the PR's own, say) with them and an empty `HOME`. The local MCP server refuses a `drop login` token aimed at a PR preview, and refuses `DROP_SERVER` without `DROP_TOKEN` when it names a server other than your saved login's.

**CLI**

```bash
# Confirm a token works against the MCP endpoint
curl -X POST https://drop.himarley.ai/api/mcp \
  -H "Authorization: Bearer drop_your_token_here" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
```

### Call a tool

Each tool follows the standard MCP `tools/call` shape. Sample prompts that land cleanly: "Build a team dashboard and publish it as team-dashboard", "Roll my-dashboard back to v3", "Search Drop for anything related to onboarding", "Share the quarterly-report droplet with all of Hi Marley".

**CLI**

```json
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "drop_search",
    "arguments": { "query": "onboarding" }
  }
}
```

**HTTP**

```bash
curl -X POST https://drop.himarley.ai/api/mcp \
  -H "Authorization: Bearer $DROP_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{
    "jsonrpc": "2.0",
    "id": 2,
    "method": "tools/call",
    "params": {
      "name": "drop_search",
      "arguments": { "query": "onboarding" }
    }
  }'
```

