Notion Large File Upload

io.github.shoubhiksaha由 GitHub 账号 shoubhiksaha 发布v1.0.0更新于 Nov 3, 2026

Upload local files up to 5 GB to Notion and attach them to pages, read from disk, not the chat.

发布方自己的服务:Notion

已验证STDIO仅桌面效率与工作流文件与存储

概览

AI 生成的概览

本地 MCP 服务器,把磁盘上的大文件(最大 5 GB)上传到 Notion 并作为块附加到页面。

可以做什么
  • 按绝对路径把本地文件分块流式上传到 Notion,返回文件上传 ID
  • 上传文件并立即以视频、PDF、图片、音频或文件块的形式附加到页面或父块,可带说明文字
  • 把已上传的文件 ID 附加到页面或块,例如附加失败时无需重新上传即可重试
  • 上传过程中报告进度,并在客户端取消调用时停止上传
适用场景
当智能体产出的大型本地文件(录屏、会议音频、测试截图或 PDF 报告)需要放进 Notion,而 Notion 自带上传上限为 20 MiB 或用 base64 会耗尽上下文时适用。
运行要求
以本地 stdio 进程运行,通常通过 npx 启动,需要 Node.js 以及能启动本地服务器的 MCP 客户端。需要 NOTION_KEY 集成令牌(也接受 NOTION_API_KEY 和 NOTION_TOKEN),以及列出允许上传目录的 NOTION_UPLOAD_ALLOWED_DIRS。Notion 集成需有权访问目标页面,并需要访问 Notion 的网络连接。
安装前请注意
服务器会读取本机磁盘文件,被提示注入的智能体可能试图上传敏感文件,应把 NOTION_UPLOAD_ALLOWED_DIRS 限制在必要目录。它会在页面上创建块,属于写入操作;集成令牌可访问所有共享给它的页面。上传须在一小时内完成附加,免费工作区单文件上限为 5 MiB。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Notion Large File Upload,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

notion-large-file-upload-mcp

[npm version] [License: MIT]

An MCP server that lets AI agents (Claude Desktop, Claude Code, Cursor, Zed) upload local files of up to 5 GB to Notion and attach them to pages. It reads each file from disk by path, so the file never passes through the model's context.


Why this server is needed

  • Notion's hosted MCP server stops at 20 MiB. Its notion-create-file-upload tool only does single-part uploads, and Notion's open-source MCP server no longer accepts uploads at all.
  • Base64 fills the context window. Some MCP servers can send larger files, but the agent has to pass the file through the conversation as base64, which uses up the model's context after a few files.
  • Agents give up on big files. Without a way to upload them, agents fall back to thumbnails or links instead of the screen recording, meeting audio, test screenshots or PDF report they produced.

notion-large-file-upload-mcp wraps notion-multipart-uploader to provide:

  • Streaming 10 MiB chunking: Does not load 5 GB files into RAM.
  • Concurrent chunk uploads: Parallelizes multi-part uploads with worker queues.
  • Resilient retry engine: Automatically handles rate limits (429), server overload (529), exponential backoff with jitter, and Retry-After headers.
  • Direct Block Attachment: Can attach the uploaded asset to a page or block as a video, pdf, image, audio or file block.
  • Progress and cancellation: Reports MCP progress notifications while uploading and stops the upload when the client cancels the tool call.

Quick Setup

1. Claude Desktop

Add this to your claude_desktop_config.json:

json
{  "mcpServers": {    "notion-large-files": {      "command": "npx",      "args": ["-y", "notion-large-file-upload-mcp"],      "env": {        "NOTION_KEY": "secret_your_notion_integration_token",        "NOTION_UPLOAD_ALLOWED_DIRS": "/Users/me/Videos/exports:/Users/me/Documents/reports"      }    }  }}

Config location:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

2. Cursor IDE

  1. Open Cursor Settings -> Features -> MCP.
  2. Click Add New MCP Server.
  3. Configure:
    • Name: notion-large-files
    • Type: command
    • Command: npx -y notion-large-file-upload-mcp
    • Environment Variables: NOTION_KEY=secret_... and NOTION_UPLOAD_ALLOWED_DIRS=/path/to/exports

3. Claude Code / CLI

bash
claude mcp add notion-large-files -e NOTION_KEY=secret_... -e NOTION_UPLOAD_ALLOWED_DIRS=/path/to/exports -- npx -y notion-large-file-upload-mcp

Configuration

Environment variableRequiredDescription
NOTION_KEYYesNotion integration token. NOTION_API_KEY and NOTION_TOKEN are also accepted.
NOTION_UPLOAD_ALLOWED_DIRSYesDirectories files may be uploaded from, separated by : (; on Windows). The upload tools refuse to run without it.

Restricting which files can be uploaded

The tools read files from the machine the server runs on. Without a limit, an agent that is tricked by a prompt injection could upload sensitive files such as ~/.ssh/id_rsa or .env to Notion. That's why NOTION_UPLOAD_ALLOWED_DIRS is required: set it to the folders your agent actually produces files in.

Paths must be absolute, and symlinks are resolved before the check, so a link inside an allowed folder can't point outside it. A link that stays inside an allowed folder is uploaded under the link's name.

Before uploading, the server also checks that Notion supports the file type and that the file fits the workspace's upload limit (5 MiB per file on free workspaces), so the agent gets a clear error instead of a failed multi-GB upload.


Available Tools

upload_large_file_to_notion

Uploads a local file of any size up to 5 GB to Notion and returns the Notion file_upload ID.

ParameterTypeRequiredDescription
filePathstringYesAbsolute path to the local file on disk
mimeTypestringNoMIME type (e.g., video/mp4). Automatically inferred if omitted

upload_and_attach_to_notion

Uploads the local file and immediately creates a child block on the target Notion page or block.

ParameterTypeRequiredDescription
filePathstringYesAbsolute path to the local file on disk
blockIdstringYesTarget Notion Page ID or parent Block ID
blockTypestringNovideo, pdf, image, audio, or file (inferred from MIME if omitted)
mimeTypestringNoMIME type (inferred if omitted)
captionstringNoOptional caption text displayed under the block (up to 2,000 characters)

If the upload succeeds but attaching fails (for example, the page isn't shared with the integration), the error includes the file ID so the agent can retry with attach_file_upload_to_notion instead of uploading again.


attach_file_upload_to_notion

Attaches an already uploaded file to a Notion page or block. Notion expires uploads that aren't attached within an hour of being created.

ParameterTypeRequiredDescription
fileUploadIdstringYesThe file_upload ID returned by an upload tool
blockIdstringYesTarget Notion Page ID or parent Block ID
blockTypestringYesvideo, pdf, image, audio, or file
captionstringNoOptional caption text displayed under the block (up to 2,000 characters)

Limitations

  • The server reads files from the computer it runs on, so it needs an MCP client that runs local servers. Files attached in a chat on claude.ai or ChatGPT aren't on that disk.
  • Free Notion workspaces accept files up to 5 MiB. Paid plans allow up to 5 GB.
  • Each upload has to be attached within an hour of starting, so a 5 GB file needs about 12 Mbit/s of upload bandwidth.

Its name in the MCP Registry is io.github.shoubhiksaha/notion-large-file-upload.


Local Development

bash
git clone https://github.com/shoubhiksaha/notion-multipart-uploader.gitcd notion-multipart-uploadernpm install          # one install for the library and the server (npm workspace)npm run test:mcp     # builds the library and runs the server's tests against itNOTION_KEY="secret_..." NOTION_UPLOAD_ALLOWED_DIRS="$PWD" npm start -w mcp-server

The server is linked to the library in this checkout, so a change to the library is picked up as soon as it's built. The tests start the server over stdio with a fake Notion API, so they don't need a token or network access. See CONTRIBUTING.md for the release process.

License

MIT © Shoubhik Saha

来源:mcp-server/README.md,提交 3ff02a3

工具

3

upload_large_file_to_notion

Uploads a local file (especially > 20 MiB up to 5 GB) to Notion using streaming multipart chunking. Bypasses Notion MCP's 20 MiB limit. Returns the Notion file_upload ID, which must be attached to a page or block before it expires.

输入参数filePath必填mimeType

upload_and_attach_to_notion

Uploads a large local file (> 20 MiB up to 5 GB) and immediately attaches it as a block to a Notion page or parent block.

输入参数blockId必填captionfilePath必填mimeTypeblockType

attach_file_upload_to_notion

Attaches a file that was already uploaded (a Notion file_upload ID) as a block to a Notion page or parent block. Use it after upload_large_file_to_notion, or to retry a failed attachment without uploading again.

输入参数blockId必填captionblockType必填fileUploadId必填

版本历史

1
  1. v1.0.0最新Oct 29, 2026

评分

已满足适用检查项的 90%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分
  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分

其他 Notion 集成