About
Command line interface and MCP for OneDrive
README
Cross-platform command line interface for OneDrive (Personal)
Development
A Nix flake provides the package and a dev shell with all
dependencies. Run nix develop (or use Direnv's use flake)
for the shell, and nix build / nix run to build or run the CLI. The legacy
shell.nix still works with nix-shell.
Update the dependency hash
After changing package-lock.json, refresh npmDepsHash in flake.nix:
nix run nixpkgs#prefetch-npm-deps -- package-lock.json
Installation
From source:
$ git clone https://github.com/lionello/onedrive-cli.git
$ cd onedrive-cli
$ npm install
$ bin/onedrive login
Or use npm:
npm install @lionello/onedrive-cli
Or use nix-env:
nix-env -if https://github.com/lionello/onedrive-cli/archive/master.tar.gz -A package
Usage
usage: onedrive COMMAND [arguments]
This little utility supports the following commands:
album- list, create, or edit photo albums (ls/create/add/rm)cat- dumps the contents of a file to stdoutchmod- change sharing permissionscp- copies local file(s) to OneDrive or vice-versadf- shows OneDrive storage usage statsfind- find file(s) or folder(s) by name, optionally separated byNULgrep- full-text search across the drive, listing matching pathshelp- shows list of supported commandsln- create a link to the remote itemlogin- request/store an OAuth access tokenls- list the contents of a foldermcp- run a read-only MCP server over stdiomkdir- create a remote foldermv- move a local file to OneDrive or vice-versarm- delete a file from OneDrive (not implemented)sendmail- send an invitation email for editing to recipientsstat- dump all information for particular file(s)wget- copy a remote URL to OneDrive (server side)
Examples
List the contents of the Public folder
onedrive ls Public
Grep one file
onedrive cat Documents/passwords | grep boa
Let OneDrive upload a file server side
onedrive wget http://mega.com/somehugepublicfile Documents/somehugepublicfile
Upload files recursively
find * -type f -print0 | xargs -0 -n1 -I{} onedrive cp "./{}" "Shared Favorites/{}"
Move remote files to a new folder
onedrive find 'Pictures/Camera Roll' -regex 2015 -type f -print0 | xargs -0 onedrive mv -t :/Pictures/2015/
Create an album and add photos to it
onedrive album create 'Summer 2026'
onedrive album add 'Summer 2026' 'Pictures/Camera Roll/IMG_1234.jpg'
onedrive albums # list all albums
onedrive albums 'Summer 2026' # list the photos in one album
Albums are OneDrive bundles:
they live outside the folder hierarchy and only reference the files, so
album rm removes a photo from the album without deleting the file.
Deleting an album itself is not supported by the API — use the OneDrive
web UI for that.
MCP server
onedrive mcp starts a read-only Model Context Protocol
server over stdio, so an MCP client (Claude, etc.) can browse and read your
OneDrive. It reuses the stored access token, so login first — ideally with
login -r for a read-only token. The server only issues GET requests and
cannot modify the drive. It exposes these tools:
list_onedrive_folder- list the direct children of a foldersearch_onedrive_content- full-text search across the whole drivefind_onedrive_files- recursively find items by name globlist_onedrive_albums- list the photo albums, or the items in one albumread_onedrive_file- read a file's contents as textstat_onedrive_item- return full metadata for an itemonedrive_storage- report storage quota for the available drives
Register it with your MCP client, e.g. in claude_desktop_config.json:
{
"mcpServers": {
"onedrive": {
"command": "onedrive",
"args": ["mcp"]
}
}
}
FAQ
Access token was not found; 'login' first.
The onedrive utility needs an access token in order to read/write to your OneDrive storage.
Use theonedrive login command to get the address of the Microsoft login page. After login,
this page will redirect to the file oauthcallbackhandler.html (https://github.com/lionello/onedrive-cli/blob/master/docs/oauthcallbackhandler.html)
and extract the access_token from the URL parameters. Copy-paste this token into the command line.
This will save the token in a file called ~/.onedrive-cli-token. These tokens have a validity of 1 hour.
"An item with the same name already exists under the parent"
Currently, a copy will fail if a file with the same it already exists. Change the name of the target, or use other means to delete/rename the existing file in your OneDrive.
Invalid source name
You cannot copy folders. Specify a source file instead, or use wildcards.
Invalid target name
The target file name cannot be determined from the source path. Specify a target file name.
Use ./ or :/ path prefix for local or remote paths.
The cp command supports both local->remote as well as remote->local copy.
To make it clear which path is remote and which is local, either use ./ as a prefix for
the local path, or use :/ as a prefix for the remote path. Either one will suffice.
chmod: Invalid file mode
The chmod command currently only supports -w or -rw. The former tried to downgrade write
shares to read-only, whereas the latter removes all shares for the given item(s). Octal modes are accepted (for example 644, 0700) as well as og-rw or g-w.
TODO
- Implement
rm - Support gzip/deflate encoding for downloads
- Uploads larger than 100MiB are not yet supported (needs range API)
- Support OneDrive for Business
- Ability to get the link for a file
- Skip upload/download if the SHA1 matches
- Adding write permissions (+w) to existing share links
DONE
- Register with NPM (@lionello/onedrive-cli)
- Fixed OAuth redirect on Safari (https://bugs.webkit.org/show_bug.cgi?id=24175)
- Use XDG path spec for token file (https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html)
- Using
async/await
Installing Onedrive Cli
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/lionello/onedrive-cliFAQ
Is Onedrive Cli MCP free?
Yes, Onedrive Cli MCP is free — one-click install via Unyly at no cost.
Does Onedrive Cli need an API key?
No, Onedrive Cli runs without API keys or environment variables.
Is Onedrive Cli hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Onedrive Cli in Claude Desktop, Claude Code or Cursor?
Open Onedrive Cli on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
GitHub
PRs, issues, code search, CI status
by GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
by mcpdotdirectCompare Onedrive Cli with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All development MCPs
