notion-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| NOTION_TOKEN | Yes | Your Notion integration token (starts with ntn_) |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| retrieve-pageA | Retrieve a Notion page by its ID. Returns the page properties, metadata, and optionally content (blocks as markdown). Use format='simple' (default) for human-readable output with reduced token usage. |
| create-pageA | Create a new page in Notion. Specify parent as either page_id (to create a child page) or data_source_id (to create a database entry). Optionally include initial content blocks, icon, and cover image. Returns the created page ID and URL. (API version 2025-09-03) |
| create-page-simpleB | Create a page with Markdown. Specify parent as either page_id (child page) or data_source_id (database entry). Title is auto-mapped to the title property. # headings, - lists, - [ ] checkboxes, ``` code, > quotes, | tables |, bold, italic, links, toggle, > [!NOTE] callout, $$ equation, [TOC] table of contents. |
| update-pageA | Update a Notion page's properties, icon, cover, archive status, or lock status. Partial updates are supported - only provide the fields you want to change. Set icon or cover to null to remove them. Set archived to true to move the page to trash. Set is_locked to true to lock the page in the UI. Returns updated page ID and URL. |
| archive-pageA | Move a page to trash. Recoverable for 30 days via Notion UI. Returns page ID. |
| retrieve-page-propertyA | Get a property with pagination (for relation/rollup with many items). For simple properties, use retrieve-page instead. |
| move-pageA | Move a page to a new parent (page or data source). Provide either page_id or data_source_id as the new parent. Returns page ID and URL. (API version 2025-09-03) |
| create-databaseA | Create a new database as a subpage of an existing Notion page. Requires a parent_page_id and properties object defining the database schema. Each database must have exactly one title property. Returns database ID and URL. (API version 2025-09-03) |
| update-databaseA | Update a Notion database container. Can modify title, description, icon, cover, inline status, archive status, and lock status. For schema (properties/columns) updates, use update-data-source instead. Returns database ID and URL. (API version 2025-09-03) |
| archive-databaseA | Move a database to trash. Recoverable for 30 days via Notion UI. Returns database ID. |
| retrieve-databaseA | Retrieve a database container by its ID. Returns database metadata and associated data sources. Note: In API 2025-09-03, database properties/schema are retrieved via retrieve-data-source using data_source_id. Use format='simple' (default) for reduced token usage, 'json' for full Notion API response. |
| retrieve-data-sourceA | Retrieve a data source schema by its ID. Returns data source properties (columns) and their types. Use format='simple' (default) for reduced token usage, 'json' for full Notion API response. (API version 2025-09-03) |
| query-data-sourceA | Query a Notion data source with optional filters and sorts. Returns paginated results. Use format='simple' (default) for human-readable output with reduced token usage. Use fields parameter to limit which properties are returned (simple format only). (API version 2025-09-03) |
| update-data-sourceA | Update a data source schema (properties/columns). Use this to add, update, or delete properties. Set a property to null to delete it. Returns data source ID. (API version 2025-09-03) |
| searchA | Search across all pages and data sources in the workspace by title and content. Filter results by type (page or data_source) and sort by last edited time. Returns paginated results. Use format='simple' (default) for human-readable output with reduced token usage. Use fields parameter to limit which properties are returned (simple format only). For querying a specific data source with filters, use query-data-source instead. (API version 2025-09-03) |
| get-block-childrenA | Retrieve the children blocks of a block or page. Returns paginated results. Use format='markdown' (default) for human-readable output with significantly reduced token usage. |
| append-block-childrenA | Append new blocks as children to a block or page. Supports all block types: paragraph, headings, lists, code, images, etc. Returns the created block IDs. Use the "after" parameter to insert blocks at a specific position. |
| append-blocks-simpleA | Append blocks to a page using Markdown. Simpler than append-block-children: just provide markdown text. Markdown: # headings, - lists, - [ ] checkboxes, ``` code, > quotes, | tables |, |
| retrieve-blockA | Retrieve a single block by its ID. Returns block content and metadata. Use format='markdown' (default) for human-readable output, 'json' for full Notion API response. |
| update-blockA | Update a block by its ID. Provide the block type and its properties. Example: { "paragraph": { "rich_text": [{ "text": { "content": "Updated text" } }] } }. Set archived to true to move the block to trash. Returns updated block ID. |
| update-block-simpleA | Update a text block using Markdown. Simpler than update-block: just provide markdown text. Supports inline formatting: bold, italic, |
| delete-blockA | Delete a block by its ID. The block will be archived (moved to trash). Returns deleted block ID. |
| delete-blocks-batchA | Delete multiple blocks by their IDs. Use this when you want to delete specific blocks. For deleting all content from a page, use clear-page-content instead. Blocks are deleted sequentially to respect API rate limits (3 req/s). Returns summary of deleted and failed blocks. |
| clear-page-contentA | Delete all content from a page. By default, preserves child_database and child_page blocks. Use preserve_types=[] to delete everything. For deleting specific blocks, use delete-blocks-batch instead. Blocks are deleted sequentially to respect API rate limits (3 req/s). Returns count of deleted blocks. |
| replace-page-contentA | Replace all page content with Markdown. Preserves child_database/child_page only. WARNING: Non-Markdown blocks (bookmark, callout, equation, etc.) will be DELETED. Use dry_run: true to preview deletions. For partial updates, use find-and-replace-in-page. |
| find-and-replace-in-pageA | Find text in a page and replace it with new content. Supports regex patterns (use_regex: true) for advanced matching (e.g., "item\d+" matches item1, item2). All matching blocks will be updated. Replacement text supports Markdown formatting: bold, italic, |
| create-commentA | Add a comment to a Notion page. Creates a new discussion or adds to an existing one. Comments support rich text formatting (bold, italic, links, etc.). Use discussion_id to reply to an existing comment thread. Returns the created comment ID. |
| create-comment-simpleA | Add a comment using Markdown. Simpler than create-comment. Returns comment ID. |
| list-commentsA | List comments on a page or block. Either block_id or page_id must be provided. Returns a paginated list of comments with their content and metadata. |
| list-usersA | List all users in the workspace. Returns paginated list of users with their IDs, names, and types (person or bot). |
| retrieve-userA | Retrieve a user by their ID. Returns user information including name, avatar, and type (person or bot). |
| retrieve-bot-userA | Retrieve information about the current bot user (the integration). Returns the bot ID, name, avatar, and owner information. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/atikk-co-jp/notion-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server