Atlas / MCP servers / drop-to-run / drop2run-cli

drop2run-cliCAUTION

mcp/drop-to-run/drop2run-cli

Source for the drop2run CLI and MCP server — publish a static site or an agent's output to an HTTPS link, no git and no build config.

Verdict
CAUTION
Grade
B
Trust score
89 /100
Exposed tools
19 14r · 3w · 2d
Transport
stdio
License
MIT
Stars
1
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

[](https://glama.ai/mcp/servers/Drop-to-run/drop2run-cli) [](https://mcpservers.org/servers/dropto-run-publish)

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 . 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. Claude for macOS and Windows installs it from a bundle — download `drop2run.mcpb` and open it, and there is no config file and nothing to install first. Claude Code takes one command:

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

It exposes publish_files, publish_dir, list_sites, list_folders, delete_site, get_site, update_site, pause_site, resume_site and rollback_site, and login / login_code to get a token without leaving the chat. The publishes answer with structured fields beside the sentence, so a URL does not have to be read back out of prose; delete_site is permanent and asks for the site's subdomain repeated back before it runs. The t

Read from source at commit 419fdddece96OBSERVED · 2026-10-11
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code (npm)
claude mcp add mcp -- npx -y @drop2run/[email protected]
03

Exposed tools (19)

14 read · 3 write · 2 destructive. Blast radius: 2 tools can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.

ToolRiskDescription
delete_sitedestructive
get_siteread
invite_peopleread
list_commentsread
list_foldersread
list_peopleread
list_sitesread
loginread
login_coderead
pause_siteread
publish_dirwrite
publish_fileswrite
remove_persondestructive
reopen_commentread
reply_commentread
resolve_commentread
resume_siteread
rollback_siteread
update_sitewrite
04

Trust audit

CAUTIONgrade B · trust 89/100 Install with care. The audit found things worth knowing before you trust its output.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeWARN
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfaceWARN
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (1 observation(s))
Network
declared (6 observation(s))
Shell
none-observed
Dependencies
not all pinned
Secrets in source
none-found

Findings (12)

MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
packages/node/src/login.ts:159
const url = new URL(request.url ?? "/", "http://127.0.0.1");
MEDIUMFilesystem / path · mcp.destructive_tools · CWE-22, CWE-59
delete_site, remove_person
Why it matters. 2 tool(s) can delete or overwrite
Fix. prefer a read-only mode or scoped tokens; the page states the blast radius
LOWFilesystem / path · fs.credential_store · CWE-22, CWE-59
packages/node/test/publish.test.ts:558
publishFiles(credentials, [{ path: "../../.ssh/id_rsa", content: "x" }]),
Why it matters. touches a credential store
LOWFilesystem / path · fs.credential_store · CWE-22, CWE-59
packages/node/test/source.test.ts:93
symlinkSync(join(outside, "private-key"), join(root, "id_rsa"));
Why it matters. touches a credential store
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
packages/node/test/publish.test.ts:558
publishFiles(credentials, [{ path: "../../.ssh/id_rsa", content: "x" }]),
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
packages/node/test/login.test.ts:118
`http://127.0.0.1:${listener.port}/cb?code=d2c_test&state=${encodeURIComponent(attempt.state)}`,
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
packages/node/test/login.test.ts:138
`http://127.0.0.1:${listener.port}/cb?code=d2c_test&state=wrong`,
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
packages/node/test/login.test.ts:157
`http://127.0.0.1:${listener.port}/cb?state=${encodeURIComponent(attempt.state)}`,
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
packages/node/test/login.test.ts:171
expect((await fetch(`http://127.0.0.1:${listener.port}/`)).status).toBe(404);
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
packages/cli/package.json
@biomejs/biome, @types/node, typescript, vite, vitest
Why it matters. 5 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
packages/mcp/package.json
@modelcontextprotocol/sdk, zod, @biomejs/biome, @types/node, typescript, vite, vitest
Why it matters. 7 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
packages/node/package.json
@biomejs/biome, @types/node, typescript, vitest
Why it matters. 4 dependency range(s) float
Fix. pin exact versions or ship a lockfile

Gates applied: no_behavioural_pass.

Audited 2026-10-11 · audit v0.4.1 · source sha 419fdddece96full audit observations/trust-audit/mcp-server/drop-to-run__drop2run-cli.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-11419fdddece96CAUTIONB89first audit
06

Questions

What is the drop2run-cli MCP server?

Source for the drop2run CLI and MCP server — publish a static site or an agent's output to an HTTPS link, no git and no build config.

What tools does drop2run-cli expose?

19 in total: 14 read-only, 3 that write, and 2 that can delete or overwrite (delete_site, remove_person). Every one is listed on this page with its risk.

Is drop2run-cli safe to connect to an agent?

With care. The audit graded it B (89/100) and found 12 things worth knowing before you trust this server, listed below with the exact line each was found on. Separately from the audit: 2 of its tools can destroy data, so scope the token you give it to what you actually need.

What credentials does drop2run-cli need?

It reads DROP2RUN_TOKEN from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does drop2run-cli run?

It speaks stdio, so it runs as a local process your client starts. It is published on npm as @drop2run/node at 0.0.0.

How current is this page?

The grade is for one exact copy of the source (419fdddece96), read on 2026-10-11. The repository is watched and re-audited when it changes.

Advertisement