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_) |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| 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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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