drop2run-mcp
OfficialThis server lets an agent publish content to Drop2Run sites and manage publishing through three MCP tools.
publish_files: Publish one or more in-memory files (markdown, HTML, CSS, JSON, etc.) directly to a site; a single page becomes index.html, and a single .md/.markdown/.pdf is served through the documents viewer. Optionally target an existing site by subdomain/site id, or create a new site by omitting
site.publish_dir: Publish a folder of static files from an absolute path; requires an index.html or .md/.pdf files at the root, served through the reader. Can target an existing site or create a new one.
list_sites: List the sites on the account so a publish can be directed to one of them.
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/mcpUsing them
The command line tool signs in through a browser and publishes a folder:
drop2run login
drop2run deploy distlogin 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/mcpIt 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 |
| The command line tool: | |
| An MCP server, so an agent can publish what it just wrote | |
| no | The deploy engine — manifest, hashing, upload, go-live. No Node APIs, no browser APIs |
| no | The parts that need |
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 shipspackages/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 toolslist_sitesList sitesA
Lists the sites on this account, so a publish can go to one of them.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute path of the folder to publish. | |
| site | No | Subdomain or site id to publish over. Omit to create a new site. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| site | No | Subdomain or site id to publish over. Omit to create a new site. | |
| files | Yes | The files to publish. |
TDQS
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.
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.
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.
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.
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.
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.
3 tool updates
v0.2.0- First observed
list_sites - First observed
publish_dir - First observed
publish_files
TDQS
Scored across 3 tools
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.
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.
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.
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
Related MCP Connectors
Deploy static sites from AI agents: deploy_site publishes files and returns a live URL in seconds.
Deploy the small apps your agent builds: one tool call returns a live, private shareable HTTPS link.
Instant web publishing for AI agents. POST HTML, get a live URL. No account needed.
Deploy AI-generated HTML/CSS/JS to instant public HTTPS URLs from any MCP-compatible agent.
Related MCP Servers
AlicenseBqualityBmaintenanceEnables 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.915,09061ISC- AlicenseAqualityAmaintenanceEnables 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.723MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to deploy static websites to StaticX, including creating sites, uploading builds, publishing releases, and managing domains.19MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to edit and serve a static website via natural language, providing file management tools over MCP and HTTP hosting.-