Skip to main content
Glama

drop2run-cli

Source for the two Drop2Run packages that run on your machine: the drop2run command line tool and the @drop2run/mcp server.

Both are installed globally and then handed a credential. This repository exists so you can read what you are giving that credential to.

npm i -g drop2run          # https://www.npmjs.com/package/drop2run
npx @drop2run/mcp          # https://www.npmjs.com/package/@drop2run/mcp

Using them

The command line tool signs in through a browser and publishes a folder:

drop2run login
drop2run deploy dist

login needs a browser on the same machine; drop2run login --device covers a remote shell, and CI uses a DROP2RUN_TOKEN from https://dropto.run/account/tokens. The other commands are init, ls, open, rollback, rm, token list, whoami and where, and --json on any of them prints machine-readable output.

The MCP server is registered with a client rather than run by hand — one command for Claude Code:

claude mcp add drop2run -s user -- npx -y @drop2run/mcp

It exposes three tools — publish_files, publish_dir and list_sites — and reads its token from the same place the CLI stores one, so signing in once covers both.

Each package documents itself in full, including the sign-in flows and what happens without a site: packages/cli/README.md and packages/mcp/README.md. The hosted documentation is at dropto.run/docs/cli and dropto.run/docs/mcp.

Related MCP server: Demox MCP Server

What is in here

Package

Published

What it is

packages/cli

drop2run

The command line tool: login, deploy, ls, rollback, rm

packages/mcp

@drop2run/mcp

An MCP server, so an agent can publish what it just wrote

packages/core

no

The deploy engine — manifest, hashing, upload, go-live. No Node APIs, no browser APIs

packages/node

no

The parts that need fs: reading a folder, the config file, the token store

core and node are not published. They are bundled into each package's dist/ at build time, which is why drop2run installs with no runtime dependencies at all — an intentional choice for something that holds a token. @drop2run/mcp has two, both required by the protocol: @modelcontextprotocol/sdk and zod.

Building and testing

Each package stands alone — there is no workspace root, and internal imports resolve through the relative paths in each tsconfig.json.

cd packages/cli     # or mcp, or node
npm ci
npm run typecheck
npm test
npm run build       # writes dist/, which is what npm ships

packages/core has no dependencies and no build of its own; it is typechecked by the packages that bundle it.

Where the rest is

This repository is an export of the four packages above, with their full history. The Drop2Run service itself — the API, the edge router, the dashboard — is not here and is not open source. What that means in practice: the code that decides what happens to a file after it leaves your machine is not something this repository lets you audit. What it does let you audit is everything that happens to your files and your token before that point, which is the part that runs with your privileges.

Issues about the CLI or the MCP server are welcome here. Anything about the hosted service belongs at dropto.run/contact.

Pull requests are welcome too, with one thing worth knowing first: this repository is generated, so a pull request is not merged here. The change is applied in the source repository and reaches this one in the next export, with your commit and its authorship carried along; the pull request is then closed with a link to the commit. Merging it here instead would put a commit in this history that no future export contains, and the two would diverge on the very next update.

Licence

MIT.

Available Tools

3 tools
list_sitesList sitesA

Lists the sites on this account, so a publish can go to one of them.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of disclosing behavior. It indicates the operation reads the account's sites and is scoped to the account, implying a read-only list. However, it does not disclose return format, pagination, or potential errors, so it is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The entire description is one short, front-loaded sentence that says exactly what the tool does and why someone would use it. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter list tool with no output schema, the description covers the core purpose and connects it to the sibling tools. It could be slightly more specific about output format, but the use case is well expressed, making this adequate for an agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, and the schema description coverage is 100%. The description adds no parameter-level information, but with zero parameters a baseline of 4 is appropriate, and the description still clarifies what the tool returns in terms of publishing sites.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'lists' and the resource 'sites on this account', distinguishing it from the sibling publishing tools by framing it as a prerequisite for publishing. It gives a concrete purpose rather than just repeating the name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear usage context through the phrase 'so a publish can go to one of them', telling the agent when to use it (before a publish operation). It does not explicitly name alternatives or exclusions, but the context is clear enough that the agent can infer it is not a publishing tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

publish_dirPublish a folderA

Publishes a folder of static files and returns its URL. The folder needs an index.html at its root, or .md and .pdf files, which are served through the reader.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesAbsolute path of the folder to publish.
siteNoSubdomain or site id to publish over. Omit to create a new site.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It discloses that the folder must contain index.html or .md/.pdf files and that they are served through the reader, which is useful behavioral context. However, it doesn't mention whether publishing overwrites an existing site, whether the operation is reversible, or any rate limits or auth requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no wasted words. The core action and return value are front-loaded, and the content requirements are stated efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is adequate for a simple publish operation with 2 parameters and no output schema. It explains what the tool does and the folder content requirements. However, it lacks details about what happens when 'site' is omitted (creates a new site) versus when it's provided (overwrites?), and doesn't describe the URL format or any side effects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters. The description adds context about the folder content requirements but doesn't add meaning beyond the schema for the 'path' and 'site' parameters themselves. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'publishes', the resource 'a folder of static files', and the outcome 'returns its URL'. It also specifies the required content (index.html or .md/.pdf files), which distinguishes it from sibling tools like publish_files.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool: when you have a folder of static files with an index.html or markdown/PDF files. It doesn't explicitly name alternatives or exclusions, but the content requirements provide clear context for when this tool is appropriate versus publish_files.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

publish_filesPublish files you wroteA

Publishes one or more files written here — markdown, HTML, CSS, JSON — as a site, and returns its URL. A single page goes at index.html; a single .md, .markdown or .pdf file is a site on its own, served through the documents viewer. Text only: a PDF or an image has to be published from disk with publish_dir.

ParametersJSON Schema
NameRequiredDescriptionDefault
siteNoSubdomain or site id to publish over. Omit to create a new site.
filesYesThe files to publish.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries the full burden. It discloses useful behavioral facts: the site's URL is returned, a single file becomes the site itself, and .md/.pdf files are served through the viewer. However, it leaves out any effects on existing sites (create vs. overwrite) and does not clarify the contradictory statement about PDFs being text-only, which reduces transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact sentences with zero filler. The most important information is front-loaded, and supporting details are grouped logically. Despite minor ambiguity in the 'Text only' phrase, the description is efficiently structured and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given there is no output schemacomm, the description usefully explains both the return value (URL) and the acceptance criteria. It still omits some call-relevant behavior, such as overwrite semantics and whether multiple files create a multi-page site, but for simple invocations it contains what an agent needs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers both parameters descriptively, but the description adds behavioral semantics beyond the schema, such as accepted source types and how a single file maps to the site root. It does not compensate for all parameter nuance (e.g., what happens when an existing site is named), but it meaningfully enriches the schema's parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Publishes'), names the file types, explains the output ('as a site', 'returns its URL'), and gives concrete behavior examples (index.html, single .md/.pdf). This clearly communicates what the tool does and how it differs from a generic file upload.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit routing guidance: text files belong here, whereas a PDF or an image must go through publish_dir. This identifies the alternative sibling tool. However, the 'Text only' clause is worded confusingly (since PDFs were just mentioned as supported), slightly muddying the boundary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updatesv0.2.0
    • First observedlist_sites
    • First observedpublish_dir
    • First observedpublish_files

TDQS

A4/5.0

Scored across 3 tools

Disambiguation4/5

publish_files and publish_dir are clearly distinguished by input type (individual files vs. a folder), and list_sites serves a distinct listing purpose. The only minor ambiguity is that publish_files can also handle PDFs/images from disk, which slightly overlaps with publish_dir's domain.

Naming Consistency4/5

All tool names follow a consistent verb_noun pattern: publish_files, publish_dir, list_sites. The verbs are consistent (publish, publish, list) and the nouns clearly indicate the target, with only a minor deviation in that publish_files and publish_dir share the same verb but differ by object.

Tool Count4/5

Three tools is a minimal but reasonable set for a focused publishing server: two publish actions and one listing action. It is slightly thin but each tool serves a distinct, necessary function with no redundancy.

Completeness3/5

The core publish and list lifecycle is covered, but there are notable gaps: no delete/update/unpublish tool, no way to manage or inspect a specific site's contents, and no way to create a new site/account. Agents can publish and list but cannot manage or remove published sites.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    B
    maintenance
    Enables code agents to interact with Netlify services through the Model Context Protocol, allowing them to create, build, deploy, and manage Netlify resources using natural language prompts.
    9
    15,090
    61
    ISC
  • A
    license
    A
    quality
    A
    maintenance
    Enables AI assistants to deploy static websites to the Demox platform with automatic directory packaging and cloud storage integration. It includes tools for managing deployments, such as listing, viewing, and deleting websites.
    7
    23
    MIT