About remote-filesystem
Remote Filesystem is an MCP server for file operations on cloud storage. It currently supports Google Cloud Storage, with S3 and Cloudflare R2 planned. It suits users who need to upload, download and manage files in a bucket from MCP clients.
Key features
- 01Upload files with public or private access
- 02Download files as text or base64
- 03List files and directories by prefix
- 04Modify file properties and metadata
- 05Toolset groups for read-only or read-write access
Use cases
- 01Uploading generated screenshots to GCS and sharing public links
- 02Browsing bucket contents in read-only mode
MCP support
This is an MCP server that exposes upload, download, list_files, modify and delete_file tools to MCP clients for managing files in cloud storage.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
npx -y remote-filesystem-mcp-serverGCS_BUCKETGoogle Cloud Storage bucket name.GCS_PROJECT_IDGoogle Cloud project ID.GCS_CLIENT_EMAILService account email for inline credentials.GCS_PRIVATE_KEYSecretService account private key for inline credentials.GOOGLE_APPLICATION_CREDENTIALSSecretPath to Google Cloud service account key file.GCS_ROOT_PATHRoot path prefix to restrict access within bucket.GCS_MAKE_PUBLICMake uploaded files publicly accessible.ENABLED_TOOLGROUPSComma-separated tool groups: readonly or readwrite.Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.
Tools
5Saved tool list · updated 2w ago
| Parameter | Type | Required | Description |
|---|---|---|---|
| path | string | Yes | Path to the file in the remote filesystem (relative to root). Example: "screenshots/pr-123.png" |
| asBase64 | boolean | No | If true, return the file contents as a base64-encoded string. Useful for binary files like images. Default: false (returns as text). |
Details
From the project READMERemote Filesystem MCP Server
An MCP server for remote filesystem operations on cloud storage providers. Currently supports Google Cloud Storage (GCS), with plans for S3, Cloudflare R2, and more.
Features
- Upload files to cloud storage with public/private access control
- Download files as text or base64 (for binary files)
- List files and directories with prefix filtering
- Modify file properties (public/private, content type, metadata)
- Delete files from remote storage
- Root path constraint to restrict access within bucket
- Toolset groups for permission-based access control
- Inline credentials support (no JSON key file needed)
- Signed URL generation for private files
Installation
npm install remote-filesystem-mcp-server
Or run directly with npx:
npx remote-filesystem-mcp-server
Configuration
Environment Variables
| Variable | Required | Description | Default |
|---|---|---|---|
GCS_BUCKET | Yes | GCS bucket name | - |
GCS_PROJECT_ID | No | Google Cloud project ID | Auto |
GCS_CLIENT_EMAIL | No* | Service account email (inline creds) | - |
GCS_PRIVATE_KEY | No* | Service account private key (inline) | - |
GOOGLE_APPLICATION_CREDENTIALS | No* | Path to service account key file | - |
GCS_ROOT_PATH | No | Root path prefix - restricts access | None |
GCS_MAKE_PUBLIC | No | Make files publicly accessible | false |
ENABLED_TOOLGROUPS | No | Tool groups: readonly, readwrite | All |
* One authentication method required: inline credentials OR key file OR ADC
Claude Desktop Configuration
{
"mcpServers": {
"remote-filesystem": {
"command": "npx",
"args": ["-y", "remote-filesystem-mcp-server"],
"env": {
"GCS_BUCKET": "your-bucket-name",
"GCS_CLIENT_EMAIL": "[email protected]",
"GCS_PRIVATE_KEY": "-----BEGIN PRIVATE KEY-----\n...",
"GCS_ROOT_PATH": "uploads/"
}
}
}
}
Tools
upload
Upload a file to the remote filesystem.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
source | string | Yes | File path (file://...) or base64 data |
path | string | No | Destination path (auto-generated if none) |
contentType | string | No | MIME type (auto-detected if not provided) |
makePublic | boolean | No | Override default public/private setting |
Example:
upload({
source: 'file:///tmp/screenshot.png',
path: 'screenshots/pr-123.png',
makePublic: true,
});
download
Download a file from the remote filesystem.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
path | string | Yes | Path to the file |
asBase64 | boolean | No | Return as base64 (for binary data) |
Example:
download({
path: 'screenshots/pr-123.png',
asBase64: true,
});
list_files
List files and directories in the remote filesystem.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
prefix | string | No | Directory prefix to list |
maxResults | number | No | Maximum files to return |
Example:
list_files({
prefix: 'screenshots/',
maxResults: 100,
});
modify
Modify file properties.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
path | string | Yes | Path to the file |
makePublic | boolean | No | Make file public |
makePrivate | boolean | No | Make file private |
contentType | string | No | New MIME type |
metadata | object | No | Custom metadata key-value |
Example:
modify({
path: 'reports/doc.pdf',
makePublic: true,
metadata: { author: 'claude' },
});
delete_file
Delete a file from the remote filesystem.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
path | string | Yes | Path to the file |
Example:
delete_file({
path: 'temp/old-file.txt',
});
Toolset Groups
The server supports permission-based access control via tool groups:
readonly: Onlydownloadandlist_filestools are availablereadwrite: All tools are available (includes readonly tools)
Set ENABLED_TOOLGROUPS=readonly to restrict to read-only operations.
Authentication
The server supports multiple authentication methods:
1. Inline Credentials (Recommended)
[email protected]
GCS_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n"
2. Key File
GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json
3. Application Default Credentials (ADC)
gcloud auth application-default login
License
MIT
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.