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 live in platform-managed storage, strictly isolated per organization and workspace - a file belonging to one organization can never be accessed by another. Each file is addressed by a storage key returned when it is written; pass that key to the read, download-URL, and delete tools.
Setup
The Files server uses platform storage - there are no configuration fields and no keys to provide:
- Go to Settings > MCP Servers > Add Server.
- Select Files (S3).
- Click Save.
- Assign it to a workspace in Settings > Workspaces > Edit.
The organization and workspace context is applied automatically at runtime.
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