notion_upload_file
Upload a file to a Notion page as a new block, pulling from local storage, a shared mount, Google Drive, or base64.
Instructions
Upload a file to Notion and attach it as a new block.
source accepts one of:
• local:<relative-path> — a file under the notion-mcp private
store (FILES_DIR). List with notion_list_local_files.
• shared:<filename> — a file on the shared cross-MCP mount,
written there by google-accounts-mcp download_attachment with
destination='shared'. List with
notion_list_local_files(location='shared').
• drive:<name-or-id> — a file in the shared Drive folder (DRIVE_FOLDER_NAME)
Google Drive folder (read from google-accounts-mcp's credentials, read-only).
• base64:<bytes> — raw base64 content; requires filename.
Subject to MCP parameter size limits — prefer shared: or drive:
for anything over ~20KB.
parent_page_id is a Notion page ID (find via notion_search_pages) OR any block ID that supports children (toggle, column, callout, ...) to attach the file inside that block.
position controls where the new block lands among the parent's children: 'end' (default), 'start', or a block ID to insert directly AFTER that block (get block IDs from notion_read_page(include_block_ids=True) or notion_list_files_on_page).
filename overrides the source filename when provided. caption is shown below the file block in Notion. Files larger than 20 MB are uploaded via Notion's multi-part protocol automatically. To swap the file in an existing block without moving it, use notion_replace_file instead.
Cross-MCP file transfer
To upload a Gmail attachment to a Notion page:
google-accounts-mcp download_attachment(..., destination='shared')
notion_upload_file(source='shared:', parent_page_id=...) Files never traverse MCP parameters — no size limits.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | ||
| caption | No | ||
| filename | No | ||
| position | No | end | |
| parent_page_id | Yes |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |