filebridge

MCP server and CLIMITPython 3.12+v0.2.0

Upload any-size files into the browser you're already signed in to, from an AI agent.

filebridge is an MCP server and CLI for Claude Code, Codex and friends. Upload files larger than 10 MB from Claude Code, attach a local file to an <input type=file> when Claude in Chrome's file_upload is not available, and move files anywhere else: cloud storage through rclone, a headless upload browser, drives and the clipboard.

Add it to Claude Code
claude mcp add filebridge --scope user -- uvx --from git+https://github.com/vincesector/filebridge filebridge mcp

Nothing to install up front: uvx runs it. Developed and tested on macOS. Linux and Windows are best effort and untested.

"Upload this video to my Drive" fails for agents in three boring ways

filebridge hands real disk paths to something that reads the file itself, so there is no size cap.

Extension uploads stop at about 10 MB

The file is pushed through the extension instead of being read from disk, so big files do not fit.

Headless browsers have no logins

A fresh automation browser is signed out of everything you use.

Native file pickers cannot be driven

There is nothing for an agent to click, and dragging a file from Finder is not possible.

Four paths around the problem

The agent calls filebridge over MCP or the CLI. filebridge picks the path that fits where the file needs to go.

How filebridge connects an agent to four upload paths An agent such as Claude Code or Codex calls filebridge. filebridge offers four paths. One: browser_upload_own, with one-time localhost links and a JavaScript snippet, ending at a website upload form in your signed-in browser. Two: a CDP browser that sets files, drops files or clicks, ending at a website upload form. Three: rclone transfer, ending at cloud storage or a NAS. Four: local helpers, rsync copy and clipboard files, ending at drives and desktop apps. Agent Claude Code, Codex filebridge MCP tools or CLI 1 browser_upload_own one-time localhost links + JS snippet into YOUR browser 2 CDP browser set files / drop files / click dedicated profile or attach 3 rclone transfer copy, move, sync to a configured remote 4 local helpers rsync copy clipboard files Website upload form in your signed-in browser Website upload form headless, or your Chrome Cloud storage or NAS S3, R2, SFTP, Drive, Dropbox, OneDrive Drives and desktop apps iCloud Drive folder, Slack / Finder via Cmd+V How filebridge connects an agent to four upload paths An agent such as Claude Code or Codex calls filebridge. filebridge offers four paths. One: browser_upload_own, ending at a website upload form in your signed-in browser. Two: a CDP browser, ending at a website upload form. Three: rclone transfer, ending at cloud storage or a NAS. Four: local helpers, ending at drives and desktop apps. Agent Claude Code, Codex filebridge MCP tools or CLI browser_upload_own one-time localhost links + JS snippet into YOUR browser CDP browser set files / drop files / click, headless or attached rclone transfer copy, move, sync to a configured remote local helpers rsync copy clipboard files Website upload form your signed-in tab Website upload form headless or yours Cloud or NAS S3, R2, SFTP, Drive, Dropbox Drives, apps iCloud Drive folder, Cmd+V into apps
Every path passes real disk paths to the thing that reads the file, so no size cap applies.
Path 1

Your own signed-in browser

browser_upload_own (CLI: filebridge serve) starts a server on 127.0.0.1 and returns one-time links plus a JavaScript snippet. The agent runs the snippet in your signed-in tab. The page fetches each file from localhost, then fills the <input type=file> or drops the files on the page.

Path 2

CDP browser

browser_set_files, browser_drop_files and browser_click(files=...) hand disk paths to the browser over DevTools, and a file chooser is intercepted so a native picker never appears. Use the dedicated headless profile, or attach to your own Chrome or Brave.

Path 3

rclone transfer

transfer copies, moves or syncs between local paths and any rclone remote: S3, R2, SFTP/NAS, Drive, Dropbox, OneDrive. It runs as a background job you can check on. Needs a remote that a human configured.

Path 4

Local helpers

local_copy runs an rsync copy to a drive, NAS mount or iCloud Drive folder. clipboard_files puts files on the clipboard so you can paste them into Slack, Telegram, Mail or Finder with Cmd+V.

Safety

Every tool that reads a local file resolves the real path, following symlinks, and checks it against ~/.filebridge/config.toml.

Allowed folders

Files inside allowed_roots go through. The defaults are ~/Projects, ~/Movies, ~/Downloads, ~/Documents and the folder your client started in.

Approval for everything else

A file outside those folders triggers an approval prompt through MCP elicitation. Say yes and that one call proceeds. Say no, or use a client that cannot ask, and you get PathNotAllowed.

A hard denylist

Paths such as .ssh, .env, keys and browser cookies are refused with PathBlocked. Approval cannot lift it, and the built-in patterns apply even if you delete them from the config.

Single-use links on localhost

The server binds 127.0.0.1 only. Every URL carries a random token and works exactly once. The server stops when every file was fetched or the TTL runs out (default 1800 s).

No delete tool, by design. A move removes the source only after rclone verified the copy, and a sync needs a prior dry run or confirm=true. One caveat: a client in a bypass-permissions mode may auto-accept approval prompts, so treat the allowlist as a convenience and the denylist as the hard floor.

Quickstart

Requires Python 3.12+, and uv installs one if needed. Optional: rclone for transfer, Brave or Chrome for the browser tools.

Claude Code

claude mcp add filebridge --scope user -- uvx --from git+https://github.com/vincesector/filebridge filebridge mcp

Only need uploads? Add --slim after mcp to expose just the upload tools and save context. With uv tool install, the command is just filebridge mcp.

Codex

In ~/.codex/config.toml:

[mcp_servers.filebridge]
command = "uvx"
args = ["--from", "git+https://github.com/vincesector/filebridge", "filebridge", "mcp"]

First upload

Ask the agent: upload ~/Movies/final.mp4 to my Drive. It calls browser_upload_own, gets one-time links and a snippet, and runs the snippet in your signed-in tab with any tool that can execute JavaScript there, for example the Claude in Chrome extension's JavaScript tool.

The same from the CLI. It prints the URLs and snippet, and exits once every file was fetched:

filebridge serve ~/Movies/final.mp4

FAQ

Why not just use the browser extension's upload tool?

It caps files at about 10 MB. browser_upload_own exists for exactly that case: your signed-in tab pulls the file from localhost, no extension cap involved.

Does it work with Claude in Chrome?

Yes. browser_upload_own returns a JavaScript snippet, and the agent runs it in your signed-in tab with the extension's JavaScript tool. The tab fetches the file from localhost, so the extension's size cap does not apply.

Does set_files really have no size limit?

The browser reads the file from disk itself. A 300 MB file went through every browser path with a matching page-side SHA-256.

Will a window pop up on my screen?

Not unless you launch with --visible, attach to your own browser, or call reveal. The automation browser runs --headless=new.

Can I use it without MCP?

Yes, every action is a CLI command, so scripts and cron/launchd jobs can use it.

Do I need rclone?

Only for transfer, remotes, ls, link, mkdir, stat and setup_instructions.

Why does it ask me before uploading a file?

The file is outside your allowed folders. Add the folder to allowed_roots in ~/.filebridge/config.toml to stop the questions for it.

Does it run on Linux or Windows?

It is developed and tested on macOS. Linux and Windows support is best effort and untested.

Can the agent delete my files?

There is no delete tool, by design. A move removes the source only after rclone verified the copy, and a sync can delete on the destination but requires a prior dry run or confirm=true.