Files (S3) MCP Server
Organization file storage via S3-compatible storage for workflow data
The Files MCP server provides organization-scoped file storage. Files are organized by organization and workspace, and can be read, written, listed, and shared via presigned download URLs.
How It Works
Files are stored in an S3 bucket with a structured key format:
org_{organizationId}/workspace_{workspaceId}/path/filename
This ensures strict isolation between organizations and workspaces. A file belonging to one organization cannot be accessed by another.
Setup
The Files server requires S3 credentials to be configured at the system level. Once configured, add the server to your organization:
- Go to Settings > MCP Servers > Add Server.
- Select Files (S3).
- Click Save.
The organization and workspace context is automatically injected at runtime -- no additional configuration is needed.
To use the Files server in workflows, assign it to a workspace in Settings > Workspaces > Edit.
Tools
write_file
Write text or JSON content as a file.
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Yes | File name (e.g., report.csv, data.json) |
content | string | Yes | Text content to save (max 10MB) |
path | string | No | Subfolder path within workspace (default: uploads) |
mime_type | string | No | MIME type (auto-detected from extension if omitted) |
category | string | No | Category tag (e.g., backups, reports) |
tags | string | No | Comma-separated tags for organization |
Returns the S3 key and a presigned download URL (valid for 1 hour).
write_binary
Write binary content (base64-encoded) as a file.
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | Yes | File name (e.g., image.png, backup.zip) |
base64_content | string | Yes | Base64-encoded binary content (max 10MB) |
mime_type | string | Yes | MIME type (e.g., image/png, application/pdf) |
path | string | No | Subfolder path within workspace |
category | string | No | Category tag |
tags | string | No | Comma-separated tags |
read_file
Read file content by S3 key. Text files return content directly; binary files return base64-encoded content.
| Parameter | Type | Required | Description |
|---|---|---|---|
key | string | Yes | S3 key of the file (from write_file or list_files response) |
list_files
List files and folders in the workspace storage.
| Parameter | Type | Required | Description |
|---|---|---|---|
path | string | No | Subfolder path (empty for workspace root) |
limit | number | No | Maximum files to return (default: 100) |
delete_file
Delete a file from storage.
| Parameter | Type | Required | Description |
|---|---|---|---|
key | string | Yes | S3 key of the file to delete |
get_download_url
Generate a presigned download URL for sharing.
| Parameter | Type | Required | Description |
|---|---|---|---|
key | string | Yes | S3 key of the file |
expires_in | number | No | URL expiry in seconds (default: 3600, max: 86400) |
get_file_info
Get file metadata without downloading the content.
| Parameter | Type | Required | Description |
|---|---|---|---|
key | string | Yes | S3 key of the file |
Returns size, content type, category, tags, source workflow/execution IDs, and last modified date.
parse_text
Extract text content from a document stored in S3. Supports PDF, DOCX, PPTX, XLSX, ODT, ODP, ODS, and RTF. Useful for processing resumes, reports, and other office documents before passing to an AI agent.
| Parameter | Type | Required | Description |
|---|---|---|---|
key | string | Yes | S3 key of the file to parse |
max_length | number | No | Max text length in characters (default: 100000). Truncates if exceeded. |
Returns extracted text, file metadata, and a truncated flag.
Supported formats:
| Format | Extensions | Description |
|---|---|---|
.pdf | Text extraction (not OCR -- works with text-based PDFs) | |
| Word | .docx | Paragraphs, tables, lists |
| PowerPoint | .pptx | Slide text, notes |
| Excel | .xlsx | Cell values across sheets |
| OpenDocument | .odt, .odp, .ods | Open format equivalents |
| Rich Text | .rtf | Legacy rich text format |
Example Workflows
Saving workflow output to file storage
- Trigger -- Webhook receives data
- Agent -- Process data and generate a CSV report
- Action -- MCP tool
files:write_filewith namereport-{{trigger.data.date}}.csv - Action -- MCP tool
files:get_download_urlto create a shareable link - Agent -- Send the download link via Slack or Telegram
Resume screening from email attachment
- Trigger -- Cron or manual
- Action --
google-workspace:gmail_searchfor new candidate emails - Action --
google-workspace:gmail_readto get attachment metadata - Action --
google-workspace:gmail_get_attachmentto download resume (base64) - Action --
files:write_binaryto store resume in S3 - Action --
files:parse_textto extract text from the PDF/DOCX - Agent -- Score resume against job description using extracted text
- Action --
google-workspace:sheets_appendto log result in tracking sheet