drop-mcp
by Transmitt0r
README.md
# drop-mcp
A tiny remote MCP server with a single tool, `drop`, that saves a file — from
local content or a URL — into a directory it has mounted. It doesn't know or
care what happens to the file afterward; that's the mounted directory owner's
job (e.g. a watch-folder importer).
## Tool
### `drop`
| Parameter | Required | Description |
| --- | --- | --- |
| `filename` | yes | Destination filename, e.g. `example.epub`. No path separators. |
| `content_base64` | one of these two | Base64-encoded file content. |
| `source_url` | one of these two | URL to fetch server-side. |
Returns `{ status: "dropped", filename, bytes }` on success.
## Configuration
See `.env.example`. `DROP_MCP_TOKEN` is required — the server checks
`Authorization: Bearer <token>` on every `/mcp` request. `DROP_DIR` is where
the mounted target directory should be pointed to inside the container.
## Run
### Prebuilt image (recommended for deployment)
Every [GitHub release](https://github.com/Transmitt0r/drop-mcp/releases) publishes a
container image to GHCR via `.github/workflows/release.yml` — no local build needed:
```bash
docker run -p 3000:3000 \
-e DROP_MCP_TOKEN=... \
-v /host/path/to/target/dir:/drop \
ghcr.io/transmitt0r/drop-mcp:latest # or a pinned version, e.g. :v0.1.0
```
Or in a `docker-compose.yml`:
```yaml
services:
drop-mcp:
image: ghcr.io/transmitt0r/drop-mcp:v0.1.0
restart: unless-stopped
environment:
DROP_MCP_TOKEN: "..."
DROP_DIR: /drop
volumes:
- /host/path/to/target/dir:/drop
ports:
- "3000:3000"
```
### From source
```bash
pnpm install
pnpm run build
DROP_MCP_TOKEN=... DROP_DIR=/drop pnpm start
```
Or build the image yourself:
```bash
docker build -t drop-mcp .
docker run -p 3000:3000 \
-e DROP_MCP_TOKEN=... \
-v /host/path/to/target/dir:/drop \
drop-mcp
```
This server cannot be deployed
Maintenance
ActivitySlowing
ResponsivenessNo issues