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.
claude mcp add filebridge --scope user -- uvx --from git+https://github.com/vincesector/filebridge filebridge mcpNothing 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.
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.
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.
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.
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 mcpOnly 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.mp4FAQ
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.