{"_id":"@ayatec/notion-extra-mcp-server","_rev":"3-2b092e7eb0926e0b4484e2879591b4c2","name":"@ayatec/notion-extra-mcp-server","dist-tags":{"latest":"0.2.1"},"versions":{"0.1.0":{"name":"@ayatec/notion-extra-mcp-server","version":"0.1.0","keywords":["mcp","notion","notion-api","data-sources","database","schema"],"author":{"name":"ayatec"},"license":"MIT","_id":"@ayatec/notion-extra-mcp-server@0.1.0","maintainers":[{"name":"ayatec","email":"ayatec.jp@gmail.com"}],"homepage":"https://github.com/ayatec/notion-extra-mcp-server#readme","bugs":{"url":"https://github.com/ayatec/notion-extra-mcp-server/issues"},"bin":{"notion-extra-mcp-server":"dist/index.js"},"dist":{"shasum":"ff1ef6fa972565aae54d79dfbd08ecd869cdf227","tarball":"https://registry.npmjs.org/@ayatec/notion-extra-mcp-server/-/notion-extra-mcp-server-0.1.0.tgz","fileCount":47,"integrity":"sha512-uDDjkM5qPzDaYAbtFI5vIe40H98idr53azrVQy1SngUM6bRg6vdH0+Ljt2M7J5msnZZoPWaazBG/2wnS9yJQGg==","signatures":[{"sig":"MEUCIBdnhFGHMDoHezhmzqOxOpmT6tNhlO5n46hep5qLN8P2AiEAwqh1yO/MQ6YtgPEYeCK94mT0j0+EuT77+O+ft7XWyOo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51221},"main":"dist/index.js","pnpm":{"overrides":{"@typescript-eslint/typescript-estree>minimatch":"^10.2.2"}},"type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.22.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"fc1a72a95c375f2c74485b0d3ffeb968358d720a","scripts":{"dev":"tsc --watch","lint":"eslint .","test":"vitest run","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js","format":"prettier --write .","release":"pnpm build && changeset publish","version":"changeset version","dev:tool":"tsx scripts/test-tool.ts","lint:fix":"eslint . --fix","changeset":"changeset","test:watch":"vitest","type-check":"tsc --noEmit","format:check":"prettier --check ."},"_npmUser":{"name":"ayatec","email":"ayatec.jp@gmail.com"},"repository":{"url":"git+https://github.com/ayatec/notion-extra-mcp-server.git","type":"git"},"_npmVersion":"11.4.2","description":"公式Notion MCPサーバーを補完するMCPサーバー。データベースクエリ、スキーマ管理、一括操作を提供","directories":{},"_nodeVersion":"24.4.0","dependencies":{"zod":"^4.3.6","@modelcontextprotocol/sdk":"^1.27.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.15.1","devDependencies":{"tsx":"^4.21.0","dotenv":"^17.3.1","eslint":"^10.0.0","vitest":"^4.0.18","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.3.0","@changesets/cli":"^2.29.8","typescript-eslint":"^8.56.0","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@changesets/changelog-github":"^0.5.2"},"_npmOperationalInternal":{"tmp":"tmp/notion-extra-mcp-server_0.1.0_1771655583986_0.38910380418284274","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@ayatec/notion-extra-mcp-server","version":"0.2.0","keywords":["mcp","notion","notion-api","data-sources","database","schema"],"author":{"name":"ayatec"},"license":"MIT","_id":"@ayatec/notion-extra-mcp-server@0.2.0","maintainers":[{"name":"ayatec","email":"ayatec.jp@gmail.com"}],"homepage":"https://github.com/ayatec/notion-extra-mcp-server#readme","bugs":{"url":"https://github.com/ayatec/notion-extra-mcp-server/issues"},"bin":{"notion-extra-mcp-server":"dist/index.js"},"dist":{"shasum":"fac2c123803c7ba664966e1d159c0c0bb2374983","tarball":"https://registry.npmjs.org/@ayatec/notion-extra-mcp-server/-/notion-extra-mcp-server-0.2.0.tgz","fileCount":75,"integrity":"sha512-VfEV29qn+KjyiRtyRSOM1+oQgYvnQ43rrCgKu/f+0djcCdECkkTo8xpV5PaXzuQVaHPZkiuYbnXMnsyntYjvAg==","signatures":[{"sig":"MEYCIQDJFnjj8v8wReLC5+UO2fXY0yxYiWHxjY0ur6DhPMe34wIhANd1M+NoWefjWmymlR4uJoJhcKtgoQDGgIhetj3Dctl1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ayatec%2fnotion-extra-mcp-server@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":110905},"main":"dist/index.js","pnpm":{"overrides":{"@typescript-eslint/typescript-estree>minimatch":"^10.2.2"}},"type":"module","types":"./dist/index.d.ts","engines":{"node":">=22.22.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"b51e0fb9b62ba02ed2b36c81b55574bd4083468c","scripts":{"dev":"tsc --watch","lint":"eslint .","test":"vitest run","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js","format":"prettier --write .","release":"pnpm build && changeset publish","version":"changeset version","dev:tool":"tsx scripts/test-tool.ts","lint:fix":"eslint . --fix","changeset":"changeset","test:watch":"vitest","type-check":"tsc --noEmit","format:check":"prettier --check ."},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:908029d8-c8d7-4486-8210-c308029d815f"}},"repository":{"url":"git+https://github.com/ayatec/notion-extra-mcp-server.git","type":"git"},"_npmVersion":"11.12.0","description":"公式Notion MCPサーバーを補完するMCPサーバー。データベースクエリ、スキーマ管理、一括操作を提供","directories":{},"_nodeVersion":"22.22.1","dependencies":{"zod":"^4.3.6","@modelcontextprotocol/sdk":"^1.27.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.15.1","devDependencies":{"tsx":"^4.21.0","dotenv":"^17.3.1","eslint":"^10.0.0","vitest":"^4.0.18","prettier":"^3.8.1","@eslint/js":"^10.0.1","typescript":"^5.9.3","@types/node":"^25.3.0","@changesets/cli":"^2.29.8","typescript-eslint":"^8.56.0","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","@changesets/changelog-github":"^0.5.2"},"_npmOperationalInternal":{"tmp":"tmp/notion-extra-mcp-server_0.2.0_1774238736846_0.1968763546241208","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@ayatec/notion-extra-mcp-server","version":"0.2.1","description":"公式Notion MCPサーバーを補完するMCPサーバー。データベースクエリ、スキーマ管理、一括操作を提供","type":"module","main":"dist/index.js","bin":{"notion-extra-mcp-server":"dist/index.js"},"scripts":{"build":"tsc","dev":"tsc --watch","start":"node dist/index.js","dev:tool":"tsx scripts/test-tool.ts","clean":"rm -rf dist","type-check":"tsc --noEmit","lint":"eslint .","lint:fix":"eslint . --fix","format":"prettier --write .","format:check":"prettier --check .","test":"vitest run","test:watch":"vitest","changeset":"changeset","version":"changeset version","release":"pnpm build && changeset publish"},"keywords":["mcp","notion","notion-api","data-sources","database","schema"],"author":{"name":"ayatec"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/ayatec/notion-extra-mcp-server.git"},"homepage":"https://github.com/ayatec/notion-extra-mcp-server#readme","bugs":{"url":"https://github.com/ayatec/notion-extra-mcp-server/issues"},"exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"}},"engines":{"node":">=24.14.0"},"packageManager":"pnpm@10.32.1","dependencies":{"@modelcontextprotocol/sdk":"^1.27.1","zod":"^4.3.6"},"devDependencies":{"@changesets/changelog-github":"^0.6.0","@changesets/cli":"^2.30.0","@eslint/js":"^10.0.1","@types/node":"^25.5.0","dotenv":"^17.3.1","eslint":"^10.1.0","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.5","prettier":"^3.8.1","tsx":"^4.21.0","typescript":"^5.9.3","typescript-eslint":"^8.57.1","vitest":"^4.1.0"},"pnpm":{"overrides":{"@typescript-eslint/typescript-estree>minimatch":"^10.2.2"}},"gitHead":"7aed4ccc9d626f8b6545498d42dd843d59bca04c","types":"./dist/index.d.ts","_id":"@ayatec/notion-extra-mcp-server@0.2.1","_nodeVersion":"24.14.0","_npmVersion":"11.12.0","dist":{"integrity":"sha512-/QjQyKrshX6RuQLQjPfOIqjVpau9utsO+jH0teURRyGtuCJAHTVwRFNEL0zzpRZW5+3i4XWs1MW4B2hXWhKxCA==","shasum":"42ee8547a249d734de45f56da42a28243ab428b1","tarball":"https://registry.npmjs.org/@ayatec/notion-extra-mcp-server/-/notion-extra-mcp-server-0.2.1.tgz","fileCount":75,"unpackedSize":110904,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ayatec%2fnotion-extra-mcp-server@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDuBUc1BnjBseJ5wc0uHtsw6STS2ML18HbVP8SqoZBo3gIhAOZ77JF22oL7u+RCw589ggK/TJjzBtwEiO002FBFa9Kf"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:908029d8-c8d7-4486-8210-c308029d815f"}},"directories":{},"maintainers":[{"name":"ayatec","email":"ayatec.jp@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/notion-extra-mcp-server_0.2.1_1774239432643_0.9380440489700903"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-21T06:33:03.898Z","modified":"2026-03-23T04:17:13.066Z","0.1.0":"2026-02-21T06:33:04.154Z","0.2.0":"2026-03-23T04:05:37.042Z","0.2.1":"2026-03-23T04:17:12.794Z"},"bugs":{"url":"https://github.com/ayatec/notion-extra-mcp-server/issues"},"author":{"name":"ayatec"},"license":"MIT","homepage":"https://github.com/ayatec/notion-extra-mcp-server#readme","keywords":["mcp","notion","notion-api","data-sources","database","schema"],"repository":{"type":"git","url":"git+https://github.com/ayatec/notion-extra-mcp-server.git"},"description":"公式Notion MCPサーバーを補完するMCPサーバー。データベースクエリ、スキーマ管理、一括操作を提供","maintainers":[{"name":"ayatec","email":"ayatec.jp@gmail.com"}],"readme":"# Notion Extra MCP Server\n\n[![npm version](https://img.shields.io/npm/v/@ayatec/notion-extra-mcp-server)](https://www.npmjs.com/package/@ayatec/notion-extra-mcp-server)\n[![CI](https://github.com/ayatec/notion-extra-mcp-server/actions/workflows/ci.yml/badge.svg)](https://github.com/ayatec/notion-extra-mcp-server/actions/workflows/ci.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n公式 Notion MCP サーバーを補完する MCP サーバー。\nデータベースクエリ、スキーマ管理、一括操作、リレーション管理、コンテンツ追記など 9 つのツールを提供します。\n\n## 提供ツール\n\n### `query-database` -- データソースクエリ\n\nデータソースをフィルター・ソート付きでクエリします。compact モードでレスポンスを約 1/10 に圧縮、件数のみ取得する count モードにも対応。\n\n| パラメータ          | 型       | 必須 | デフォルト  | 説明                                                           |\n| ------------------- | -------- | ---- | ----------- | -------------------------------------------------------------- |\n| `data_source_id`    | string   | Yes  | -           | データソース ID                                                |\n| `filter`            | object   | No   | -           | Notion API フィルタオブジェクト                                |\n| `sorts`             | object[] | No   | -           | ソート条件の配列                                               |\n| `page_size`         | number   | No   | `100`       | 1 ページあたりの取得件数（最大 100）                           |\n| `start_cursor`      | string   | No   | -           | ページネーションカーソル                                       |\n| `filter_properties` | string[] | No   | -           | 取得するプロパティ（名前でも ID でも指定可。トークン効率向上） |\n| `compact`           | boolean  | No   | `false`     | メタデータ除外+プロパティフラット化で圧縮                      |\n| `output_mode`       | string   | No   | `\"results\"` | `\"results\"`: ページ一覧 / `\"count\"`: 件数のみ                  |\n\n### `get-data-source-schema` -- スキーマ取得\n\nデータソースのスキーマ（プロパティ一覧と型情報）を取得します。\n\n| パラメータ       | 型     | 必須 | 説明            |\n| ---------------- | ------ | ---- | --------------- |\n| `data_source_id` | string | Yes  | データソース ID |\n\n### `update-data-source-schema` -- スキーマ更新\n\nデータソースのスキーマ（プロパティ定義）を更新します。\n\n| パラメータ       | 型     | 必須 | 説明                       |\n| ---------------- | ------ | ---- | -------------------------- |\n| `data_source_id` | string | Yes  | データソース ID            |\n| `properties`     | object | Yes  | プロパティ定義オブジェクト |\n\n> **注意**: select/multi_select の options は全オプションを指定する必要があります（省略されたオプションは削除されます）。status プロパティの name/options 変更は不可。\n\n### `archive-page` -- ページアーカイブ\n\nページをアーカイブ（ゴミ箱に移動）します。データベース行の削除にも使用可能。\n\n| パラメータ | 型     | 必須 | 説明      |\n| ---------- | ------ | ---- | --------- |\n| `page_id`  | string | Yes  | ページ ID |\n\n### `batch-update-pages` -- 一括更新\n\n複数ページのプロパティを一括更新します。レート制限（3req/s）を考慮して順次実行。\n\n| パラメータ | 型       | 必須 | 説明                                                     |\n| ---------- | -------- | ---- | -------------------------------------------------------- |\n| `updates`  | object[] | Yes  | 更新リスト（最大 50 件）。各要素に page_id と properties |\n\n### `find-by-unique-id` -- unique_id 検索\n\nunique_id（自動採番 ID）でデータベース内のページを 1 件取得します。完全一致で 100% 正確。\n\n| パラメータ        | 型      | 必須 | デフォルト | 説明                                           |\n| ----------------- | ------- | ---- | ---------- | ---------------------------------------------- |\n| `data_source_id`  | string  | Yes  | -          | データソース ID                                |\n| `unique_id`       | string  | Yes  | -          | `\"TASK-255\"` や `\"SPEC-12\"` のような ID 文字列 |\n| `compact`         | boolean | No   | `false`    | プロパティフラット化                           |\n| `include_content` | boolean | No   | `false`    | ページ本文（Markdown）も返す                   |\n\n### `modify-relation` -- リレーション変更\n\nリレーションプロパティにページを追加・削除します。既存値を自動取得して差分更新するため、上書きリスクがありません。\n\n| パラメータ   | 型       | 必須 | 説明                                           |\n| ------------ | -------- | ---- | ---------------------------------------------- |\n| `page_id`    | string   | Yes  | 対象ページ ID                                  |\n| `property`   | string   | Yes  | リレーションプロパティ名                       |\n| `add_ids`    | string[] | No   | 追加するページ ID の配列（重複は自動スキップ） |\n| `remove_ids` | string[] | No   | 削除するページ ID の配列                       |\n\n> `add_ids` または `remove_ids` のどちらか 1 つ以上が必須。両方同時指定も可能。\n\n### `append-content` -- ページ末尾に追記\n\nページ末尾に Markdown コンテンツを追記します。既存コンテンツには一切触れません。\n\n| パラメータ | 型     | 必須 | 説明                         |\n| ---------- | ------ | ---- | ---------------------------- |\n| `page_id`  | string | Yes  | 対象ページ ID                |\n| `content`  | string | Yes  | 追記する Markdown コンテンツ |\n\n### `batch-fetch-pages` -- 複数ページ一括取得\n\n複数ページの詳細を一括取得します。レート制限（3req/s）を考慮して順次実行。\n\n| パラメータ        | 型       | 必須 | デフォルト | 説明                           |\n| ----------------- | -------- | ---- | ---------- | ------------------------------ |\n| `page_ids`        | string[] | Yes  | -          | ページ ID の配列（最大 50 件） |\n| `compact`         | boolean  | No   | `false`    | プロパティフラット化           |\n| `include_content` | boolean  | No   | `false`    | ページ本文（Markdown）も返す   |\n\n## セットアップ\n\n### 1. Notion Internal Integration の作成\n\n1. [Notion Integrations](https://www.notion.so/profile/integrations/internal) にアクセス\n2. 「新しいインテグレーション」をクリック\n3. 名前を入力し、対象ワークスペースを選択\n4. 必要な権限を設定:\n   - **コンテンツを読み取る**: query-database, get-data-source-schema, find-by-unique-id, batch-fetch-pages に必要\n   - **コンテンツを更新する**: update-data-source-schema, archive-page, batch-update-pages, modify-relation, append-content に必要\n5. 「保存」をクリックし、表示されるトークン（`ntn_` で始まる）をコピー\n\n### 2. データベースへのアクセス許可\n\n操作したいデータベースのページで:\n\n1. 右上の「...」メニューをクリック\n2. 「コネクション」 > 作成したインテグレーション名を選択\n3. 「確認」をクリック\n\n### 3. MCP 設定\n\n#### npx で使う場合（推奨）\n\n##### Claude Code\n\n```bash\nclaude mcp add notion-extra npx @ayatec/notion-extra-mcp-server -e NOTION_TOKEN=ntn_your-token\n```\n\n##### Claude Desktop / その他の MCP クライアント\n\n```json\n{\n  \"mcpServers\": {\n    \"notion-extra\": {\n      \"command\": \"npx\",\n      \"args\": [\"@ayatec/notion-extra-mcp-server\"],\n      \"env\": {\n        \"NOTION_TOKEN\": \"ntn_your-token\"\n      }\n    }\n  }\n}\n```\n\n#### ローカルビルドで使う場合\n\n```bash\ngit clone https://github.com/ayatec/notion-extra-mcp-server.git\ncd notion-extra-mcp-server\ncp .env.example .env\n# .env を編集して NOTION_TOKEN を設定\npnpm install\npnpm build\n```\n\n##### Claude Code\n\n```bash\nclaude mcp add notion-extra node /path/to/notion-extra-mcp-server/dist/index.js -e NOTION_TOKEN=ntn_your-token\n```\n\n##### Claude Desktop / その他の MCP クライアント\n\n```json\n{\n  \"mcpServers\": {\n    \"notion-extra\": {\n      \"command\": \"node\",\n      \"args\": [\"/path/to/notion-extra-mcp-server/dist/index.js\"],\n      \"env\": {\n        \"NOTION_TOKEN\": \"ntn_your-token\"\n      }\n    }\n  }\n}\n```\n\n## 開発\n\n### コマンド\n\n```bash\npnpm install        # 依存パッケージインストール\npnpm build          # ビルド\npnpm dev            # ウォッチモードでビルド\npnpm start          # サーバー起動（ビルド後）\npnpm dev:tool       # ツールの手動テスト\npnpm test           # テスト実行\npnpm test:watch     # テスト（ウォッチモード）\npnpm type-check     # 型チェック\npnpm lint           # ESLint実行\npnpm lint:fix       # ESLint自動修正\npnpm format         # Prettier実行\npnpm format:check   # フォーマットチェック\n```\n\n### ローカルテスト\n\n`pnpm dev:tool` で各ツールを個別にテストできます。\n\n```bash\n# スキーマ取得\npnpm dev:tool get_data_source_schema --data_source_id \"ds-xxx\"\n\n# データベースクエリ（compact モード）\npnpm dev:tool query_database --data_source_id \"ds-xxx\" --compact true --page_size 10\n\n# フィルタ付きクエリ\npnpm dev:tool query_database --data_source_id \"ds-xxx\" --filter '{\"property\": \"Status\", \"select\": {\"equals\": \"Done\"}}'\n\n# 件数のみ取得\npnpm dev:tool query_database --data_source_id \"ds-xxx\" --output_mode count\n\n# unique_id で検索\npnpm dev:tool find_by_unique_id --data_source_id \"ds-xxx\" --unique_id \"TASK-255\" --compact true\n\n# ページ末尾に追記\npnpm dev:tool append_content --page_id \"page-xxx\" --content \"## 追記セクション\"\n\n# リレーション追加\npnpm dev:tool modify_relation --page_id \"page-xxx\" --property \"関連\" --add_ids '[\"target-page-id\"]'\n\n# 複数ページ一括取得\npnpm dev:tool batch_fetch_pages --page_ids '[\"page-1\", \"page-2\"]' --compact true\n\n# スキーマ更新\npnpm dev:tool update_data_source_schema --data_source_id \"ds-xxx\" --properties '{\"NewProp\": {\"rich_text\": {}}}'\n\n# ページアーカイブ\npnpm dev:tool archive_page --page_id \"page-xxx\"\n\n# 一括更新\npnpm dev:tool batch_update_pages --updates '[{\"page_id\": \"p1\", \"properties\": {\"Name\": {\"title\": [{\"text\": {\"content\": \"New\"}}]}}}]'\n```\n\n### リリース\n\n[Changesets](https://github.com/changesets/changesets) でバージョン管理しています。\n\n1. changeset ファイルを作成して main に push\n2. GitHub Actions が自動で CHANGELOG 更新・バージョンバンプ・npm publish\n\n## 技術スタック\n\n- **TypeScript** (ESM, NodeNext, strict)\n- **[MCP SDK](https://modelcontextprotocol.io/)** -- Model Context Protocol サーバー実装\n- **[Notion API](https://developers.notion.com/)** -- Node.js 組み込み fetch で直接アクセス\n- **[Zod](https://zod.dev/)** -- スキーマバリデーション\n- **[Vitest](https://vitest.dev/)** -- テスト\n- **[Changesets](https://github.com/changesets/changesets)** -- バージョン管理・CHANGELOG 自動生成\n\n## ライセンス\n\nMIT\n","readmeFilename":"README.md"}