list_filesLABSCO SUMMARY
File operations an agent can perform, with the delete made safe.
The read side is unremarkable and useful; the interesting choices are on the write side — a recoverable delete rather than a permanent one, and tokens encrypted at rest with a key you supply. That is the difference between a file tool you would let an agent use and one you would not.
What it is
An MCP server for Dropbox built on its public API. It is an independent project, not affiliated with or endorsed by Dropbox.
What you get
- Folders listed and files searched, so a path does not have to be known in advance
- File contents and file metadata read separately — the second is enough when you only need size, type or modification time
- Files uploaded and downloaded, folders created
- Items copied and moved within the account
- A safe delete that keeps the operation recoverable rather than removing outright
- Sharing links generated for a file
- Account information, for confirming which Dropbox the server is actually attached to
Requirements
Register a Dropbox app with scoped access, grant it the permissions you intend to use (files.metadata.read, files.content.read, files.content.write, sharing.write, account_info.read) and add http://localhost as a redirect URI. Then clone, npm install, npm run build and npm run setup. Four environment variables are required: the app's key and its secret, the redirect URI, and a long key of your own for encrypting stored tokens. Authentication is OAuth with PKCE.
Setup effort
Build from source — git clone https://github.com/amgadabdelhafez/dbx-mcp-server.git
USE CASES
Finding a file you cannot remember the path to
Search by name and list the folder around the hit, so the right file is identified before anything is opened.
Reading a document into the conversation
Pull the file's contents directly, or just its metadata when size and modification time answer the question.
Putting a generated file where your team will find it
Create the folder if it is missing and upload into it, in one exchange rather than through the web interface.
Reorganising a folder that has drifted
Move and copy items into the structure you want, working from the listing rather than a drag-and-drop session.
Sending someone a file
Generate a sharing link for the file instead of attaching a copy to an email.
Clearing out what you no longer need
Delete through the safe path, so a mistaken removal during a bulk tidy-up is recoverable.
12 tools
Listed in project docs. Your client may show a different list.
upload_filedownload_filesafe_delete_itemcreate_foldercopy_itemmove_itemget_file_metadatasearch_file_dbget_sharing_linkget_file_contentget_account_infoBEFORE YOU INSTALL
What to know first
Tools you get
12 tools named in the project's documentation.
Requires
- node and npm, plus a local clone
- A Dropbox app (Scoped access) with http://localhost as a redirect URI
- DROPBOX_APP_KEY in your environment
- DROPBOX_APP_SECRET in your environment
- DROPBOX_REDIRECT_URI in your environment
- TOKEN_ENCRYPTION_KEY in your environment
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
You clone and build this one yourself.
Server setup
git clone https://github.com/amgadabdelhafez/dbx-mcp-server.git
cd dbx-mcp-server
npm install
npm run build
npm run setupMCP Clients
Any MCP client
{
"mcpServers": {
"dbx": {
"command": "node",
"args": [
"<YOUR_PATH_TO_DBX_MCP_SERVER>/build/src/index.js"
],
"env": {
"DROPBOX_APP_KEY": "<YOUR_DROPBOX_APP_KEY>",
"DROPBOX_APP_SECRET": "<YOUR_DROPBOX_APP_SECRET>",
"DROPBOX_REDIRECT_URI": "http://localhost",
"TOKEN_ENCRYPTION_KEY": "<YOUR_TOKEN_ENCRYPTION_KEY>",
"TOKEN_STORE_PATH": "<YOUR_PATH_TO_DBX_MCP_SERVER>/.tokens.json"
}
}
}
}npm run setup asks for your Dropbox app key and secret, opens the Dropbox sign-in in your browser, and writes DROPBOX_APP_KEY, the encrypted DROPBOX_APP_SECRET and a generated TOKEN_ENCRYPTION_KEY to .env in your clone. Copy those values into env above; <YOUR_PATH_TO_DBX_MCP_SERVER> is the full path of your clone. Or answer 1 (Claude Desktop) or 2 (Cline) at the end of setup and it writes this entry for you. The server reads them from env, not from .env, because your client does not start it inside the clone.