Notion Uploader MCP
# Notion Uploader MCP
Model Context Protocol (MCP) サーバーで、CursorのチャットからNotionページに画像やファイルをアップロードできます。
## 機能
- ローカルファイルをNotionページにアップロード
- 複数の添付方法をサポート:
- **image**: ページ内に画像ブロックとして追加
- **file**: ページ内にファイルブロックとして追加
- **cover**: ページのカバー画像として設定
- **icon**: ページのアイコンとして設定
- データベースプロパティへの添付
- 大容量ファイルのマルチパートアップロード対応(20MB以上)
- キャプション追加機能
## セットアップ
### 1. Notion APIトークンの取得
1. [Notion Integrations](https://www.notion.so/my-integrations) にアクセス
2. "New integration" をクリック
3. インテグレーションを作成し、APIトークンをコピー
4. アップロード先のNotionページにインテグレーションを招待
### 2. 依存関係のインストール
```bash
cd tools/notion-uploader-mcp
npm install
```
### 3. ビルド
```bash
npm run build
```
### 4. 環境変数の設定
`.env`ファイルを作成し、Notion APIトークンを設定:
```bash
cp .env.example .env
# .envファイルを編集してNOTION_TOKENを設定
```
または、環境変数として設定:
```bash
export NOTION_TOKEN=secret_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
```
### 5. MCP設定への追加
プロジェクトルートの `.mcp.json` に以下を追加:
```json
{
"mcpServers": {
"notion-uploader": {
"type": "stdio",
"command": "node",
"args": ["./tools/notion-uploader-mcp/dist/server.mjs"],
"env": {
"NOTION_TOKEN": "${NOTION_TOKEN}"
}
}
}
}
```
## 使用方法
Cursorのチャットで、`upload_to_notion` ツールが利用可能になります。
### パラメータ
- `file_path` (必須): アップロードするファイルの絶対パス
- `page_id_or_url` (必須): NotionページのIDまたはURL
- `attach_as` (オプション): 添付方法
- `"image"` (デフォルト): 画像ブロックとして追加
- `"file"`: ファイルブロックとして追加
- `"cover"`: ページカバーとして設定
- `"icon"`: ページアイコンとして設定
- `property` (オプション): データベースのファイルプロパティ名
- `caption` (オプション): ファイルのキャプション
### 使用例
```
# 画像をページに追加
upload_to_notion(
file_path: "/path/to/image.png",
page_id_or_url: "https://notion.so/your-page-id",
caption: "プロジェクトのスクリーンショット"
)
# ページカバーとして設定
upload_to_notion(
file_path: "/path/to/cover.jpg",
page_id_or_url: "your-page-id",
attach_as: "cover"
)
# データベースプロパティに添付
upload_to_notion(
file_path: "/path/to/document.pdf",
page_id_or_url: "database-page-id",
property: "添付ファイル"
)
```
## 開発
### 開発モード
TypeScriptファイルを直接実行:
```bash
npm run dev
```
### ビルド
TypeScriptをJavaScriptにコンパイル:
```bash
npm run build
```
### トラブルシューティング
1. **NOTION_TOKEN not found**: 環境変数が正しく設定されているか確認
2. **Page not found**: ページIDが正しいか、インテグレーションが招待されているか確認
3. **Permission denied**: インテグレーションに適切な権限があるか確認
## ライセンス
プロジェクトのライセンスに従います。TDQS
Scored across 2 tools
Both tools perform uploads to Notion, differing only in placement: one attaches to a page generically, the other inserts after a specific block. The names are very similar, so an agent could easily pick the wrong one without reading carefully, though the descriptions do clarify the distinction.
Both tool names follow the same verb_noun pattern, 'upload_to_notion', with the second adding a consistent '_at' suffix to indicate location specificity. This is a predictable and uniform convention.
With only two tools, the server feels borderline thin for its stated purpose, though each tool does cover a distinct aspect of uploading. It is not egregiously sparse, but a more complete server might include additional related operations.
The server covers the core upload functionality for its narrow domain: basic page attachment and targeted insertion after a block. Minor gaps exist, such as lacking an explicit way to specify a page for the general upload or support for deleting/replacing uploaded blocks, but agents can likely accomplish common tasks with these two tools.