MCP server for monitoring remote file sources, detecting new files, and extracting content. Works with any storage backend via rclone (70+ providers) or custom commands.
- Multi-source monitoring — track multiple remote locations (Google Drive, S3, SFTP, local dirs, etc.)
- New file detection — state-based diffing detects new and changed files
- Content extraction — extracts text from DOCX, PDF, and plain text files
- Auto-cleanup — downloaded files are deleted after content extraction
- Hybrid transport — built-in rclone support + custom shell commands
- Node.js >= 18
- npm
- rclone (if using the rclone transport — the installer can install it for you)
The interactive installer handles dependencies, build, configuration, and Claude Code registration:
cd remote-files
bash install.shThe installer will:
- Verify Node.js and npm are available
- Ask you to choose a transport mode (rclone or custom)
- Install rclone if needed (via brew, apt, pacman, or the official install script)
- Walk you through rclone remote configuration if no remotes exist yet
- Install npm dependencies and build the project
- Create the config file at
~/.config/remote-files/config.json - Register the MCP server with Claude Code (if the CLI is available)
If you prefer to set things up yourself:
cd remote-files
npm install
npm run build
claude mcp add --transport stdio remote-files -- node /absolute/path/to/remote-files/dist/index.jsThen create ~/.config/remote-files/config.json manually (see Configuration below).
Create ~/.config/remote-files/config.json:
{
"sources": {
"my-drive": {
"provider": "rclone",
"remote": "gdrive:",
"path": "Documents/Reports",
"flags": ["--drive-shared-with-me"],
"exclude": ["*.tmp"],
"excludeFrom": "/path/to/exclude-patterns.txt"
},
"my-server": {
"provider": "custom",
"listCommand": "ssh server 'find /data -type f -printf \"%s %P\\n\"'",
"downloadCommand": "scp server:/data/$FILE $DEST/"
}
},
"settings": {
"tempDir": "/tmp/remote-files",
"stateDir": "~/.local/share/remote-files/state",
"autoCleanup": true,
"maxContentLength": 102400
}
}Override config path with REMOTE_FILES_CONFIG env var.
Requires rclone installed and configured. Fields:
| Field | Required | Description |
|---|---|---|
remote |
yes | rclone remote name (e.g. gdrive:, s3:) |
path |
yes | Path within the remote |
flags |
no | Extra rclone flags |
exclude |
no | Exclude patterns |
excludeFrom |
no | Path to exclude file |
For any backend not covered by rclone. Fields:
| Field | Required | Description |
|---|---|---|
listCommand |
yes | Shell command that outputs <size> <path> lines |
downloadCommand |
yes | Shell command with $FILE and $DEST variables |
Check for new/changed files without downloading.
Parameters:
source? — specific source name (omit for all)
include_pattern? — glob filter (e.g. "*.docx")
Initialize a source baseline. All current files are marked as known.
Parameters:
source — source name to initialize
Download a file, extract text, and auto-delete the local copy.
Parameters:
source — source name
path — file path (from check_sources)
keep_local — if true, keep file on disk (default: false)
Returns extracted text for DOCX/PDF/TXT. For unknown formats, returns local_path for Claude to read directly.
- First time: Claude calls
init_sourceto create a baseline - Ongoing: Claude calls
check_sourcesto find new files - Per file: Claude calls
fetch_fileto get content and summarize - Files are auto-deleted after extraction
claude mcp remove remote-files
rm -rf ~/.config/remote-files
rm -rf ~/.local/share/remote-files