Notion Large File Upload について
Notion Large File Uploadは、AgentやローカルMCPクライアント向けに、ディスク上のファイルを最大5 GBまでNotionへアップロードするMCPサーバーです。分割転送、再試行、キャンセルに対応し、ファイル内容をモデルのコンテキストに通さずページへ添付できます。
主な機能
- 01最大5 GBのローカルファイルをアップロード
- 0210 MiB単位のストリーミング転送
- 03レート制限やサーバーエラーの再試行
- 04ページやブロックへのファイル添付
- 05進捗通知とキャンセル対応
活用シーン
- 01録音やレポートをNotionページに追加
- 02モデルのコンテキストを使わず大容量ファイルをアップロード
- 03Notionの一時的なエラー後にアップロードを再試行
MCP 対応
ローカルファイルのアップロード、ページやブロックへの添付、進捗の確認やキャンセルを行うツールをMCPクライアントに提供します。ファイルの読み取り範囲は設定した許可ディレクトリに制限されます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y notion-large-file-upload-mcpNOTION_KEYシークレットNotion integration token. The integration needs access to the pages you attach files to.NOTION_UPLOAD_ALLOWED_DIRSFolders the server may upload files from, separated by : (; on Windows). Uploads are refused until this is set.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
3掲載時のツール一覧 · 2 日前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| filePath | string | はい | ローカルファイルの絶対パス(例:/path/to/large-video.mp4)。 |
| mimeType | string | いいえ | 省略可能な MIME タイプ(例:video/mp4、application/pdf)。省略した場合はファイル拡張子から推測します。 |
詳細
notion-large-file-upload-mcp
AI エージェント(Claude Desktop、Claude Code、Cursor、Zed)が、ローカルファイルを Notion にアップロードし、ページに添付できる MCP サーバーです。ファイルサイズは 最大 5 GB です。ファイルはパスを指定してディスクから読み取られるため、モデルのコンテキストを経由することはありません。
このサーバーが必要な理由
- Notion のホスト型 MCP サーバーは 20 MiB までです。 その
notion-create-file-uploadツールは単一パートのアップロードしかできず、Notion のオープンソース MCP サーバーはアップロードを受け付けなくなりました。 - Base64 はコンテキストウィンドウを埋め尽くします。 大きなファイルを送信できる MCP サーバーもありますが、エージェントはファイルを Base64 として会話に渡さなければならず、数ファイルでモデルのコンテキストを使い切ってしまいます。
- エージェントは大きなファイルを諦めます。 アップロードする方法がなければ、エージェントは作成した画面録画、会議の音声、テストのスクリーンショット、PDF レポートの代わりに、サムネイルやリンクを使います。
notion-large-file-upload-mcp は notion-multipart-uploader をラップして、次の機能を提供します。
- 10 MiB 単位のストリーミング分割:5 GB のファイルを RAM に読み込みません。
- チャンクの並列アップロード:ワーカーキューを使ってマルチパートアップロードを並列化します。
- 堅牢な再試行エンジン:レート制限(
429)、サーバー過負荷(529)、ジッターを加えた指数バックオフ、Retry-Afterヘッダーを自動的に処理します。 - ブロックへの直接添付:アップロードしたアセットをページまたはブロックに
video、pdf、image、audio、fileブロックとして添付できます。 - 進行状況の通知とキャンセル:アップロード中に MCP の進行状況通知を報告し、クライアントがツール呼び出しをキャンセルするとアップロードを停止します。
クイックセットアップ
1. Claude Desktop
claude_desktop_config.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"
}
}
}
}
設定ファイルの場所:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
2. Cursor IDE
- Cursor Settings -> Features -> MCP を開きます。
- Add New MCP Server をクリックします。
- 次のように設定します。
- Name:
notion-large-files - Type:
command - Command:
npx -y notion-large-file-upload-mcp - Environment Variables:
NOTION_KEY=secret_...およびNOTION_UPLOAD_ALLOWED_DIRS=/path/to/exports
- Name:
3. Claude Code / CLI
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
設定
| 環境変数 | 必須 | 説明 |
|---|---|---|
NOTION_KEY | はい | Notion インテグレーショントークンです。NOTION_API_KEY と NOTION_TOKEN も使用できます。 |
NOTION_UPLOAD_ALLOWED_DIRS | はい | ファイルのアップロード元として許可するディレクトリです。区切り文字は :(Windows では ;)です。この設定がない場合、アップロードツールは実行できません。 |
アップロード可能なファイルの制限
ツールはサーバーが実行されているマシンからファイルを読み取ります。制限がないと、プロンプトインジェクションに騙されたエージェントが ~/.ssh/id_rsa や .env などの機密ファイルを Notion にアップロードする可能性があります。そのため、NOTION_UPLOAD_ALLOWED_DIRS は必須です。エージェントが実際にファイルを生成するフォルダーを設定してください。
パスは絶対パスで指定する必要があります。また、確認の前にシンボリックリンクの参照先を解決するため、許可されたフォルダー内のリンクがその外を指すことはできません。許可されたフォルダー内にとどまるリンクの場合は、リンク名でアップロードされます。
アップロードの前に、サーバーは Notion がそのファイル形式に対応していることと、ファイルがワークスペースのアップロード上限(無料ワークスペースではファイルあたり 5 MiB)以内であることも確認します。そのため、マルチ GB のアップロードが失敗してからではなく、エージェントに明確なエラーが通知されます。
利用可能なツール
upload_large_file_to_notion
サイズが最大 5 GB までのローカルファイルを Notion にアップロードし、Notion の file_upload ID を返します。
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
filePath | string | はい | ディスク上のローカルファイルの絶対パス |
mimeType | string | いいえ | MIME タイプ(例:video/mp4)。省略した場合は自動的に推定されます |
upload_and_attach_to_notion
ローカルファイルをアップロードし、対象の Notion ページまたはブロックに子ブロックをただちに作成します。
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
filePath | string | はい | ディスク上のローカルファイルの絶対パス |
blockId | string | はい | 対象の Notion ページ ID または親ブロック ID |
blockType | string | いいえ | video、pdf、image、audio、または file(省略した場合は MIME タイプから推定されます) |
mimeType | string | いいえ | MIME タイプ(省略した場合は推定されます) |
caption | string | いいえ | ブロックの下に表示する任意のキャプションテキスト(最大 2,000 文字) |
アップロードに成功しても添付に失敗した場合(たとえば、ページがインテグレーションと共有されていない場合)、エラーにはファイル ID が含まれます。そのため、エージェントは再アップロードせずに attach_file_upload_to_notion で再試行できます。
attach_file_upload_to_notion
アップロード済みのファイルを Notion ページまたはブロックに添付します。Notion では、作成から 1 時間以内に添付されなかったアップロードは期限切れになります。
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
fileUploadId | string | はい | アップロードツールから返された file_upload ID |
blockId | string | はい | 対象の Notion ページ ID または親ブロック ID |
blockType | string | はい | video、pdf、image、audio、または file |
caption | string | いいえ | ブロックの下に表示する任意のキャプションテキスト(最大 2,000 文字) |
制限事項
- サーバーは実行中のコンピューターからファイルを読み込むため、ローカルサーバーを実行する MCP クライアントが必要です。claude.ai や ChatGPT のチャットに添付したファイルは、そのディスク上にはありません。
- Notion の無料ワークスペースで受け入れられるファイルは最大 5 MiB です。有料プランでは最大 5 GB まで利用できます。
- アップロードは開始から 1 時間以内に添付する必要があるため、5 GB のファイルには約 12 Mbit/s のアップロード帯域幅が必要です。
MCP Registry での名前は io.github.shoubhiksaha/notion-large-file-upload です。
ローカル開発
git clone https://github.com/shoubhiksaha/notion-multipart-uploader.git
cd notion-multipart-uploader
npm 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 it
NOTION_KEY="secret_..." NOTION_UPLOAD_ALLOWED_DIRS="$PWD" npm start -w mcp-server
このチェックアウトでは、サーバーはライブラリにリンクされているため、ライブラリをビルドすると変更がすぐに反映されます。テストでは偽の Notion API を使用し、stdio 経由でサーバーを起動するため、トークンもネットワークアクセスも必要ありません。リリース手順については、CONTRIBUTING.md を参照してください。
ライセンス
MIT © Shoubhik Saha
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。