Notion MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| NOTION_API_TOKEN | Yes | Your Notion API integration token | |
| NOTION_MARKDOWN_CONVERSION | No | Set to 'true' to enable experimental Markdown conversion. This can significantly reduce token consumption when viewing content, but may cause issues when trying to edit page content. | false |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
| extensions | {
"io.modelcontextprotocol/ui": {
"mimeTypes": [
"text/html;profile=mcp-app"
]
}
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| notion_open_data_source_app | Open an interactive Notion Data Source Explorer MCP App for schema inspection, filter building, querying, and item creation from simple values. |
| notion_open_page_workbench | Open an interactive Notion Page Workbench MCP App for reading page content, selecting block IDs, updating simple blocks, and appending Markdown. |
| notion_append_block_children | Append new children blocks to a specified parent block in Notion. Requires insert content capabilities. Use the optional 'position' object to insert at the start, end, or after a specific block. |
| notion_append_content | Append common Notion content without writing raw Notion block JSON. Use this for everyday page editing when the user wants to add paragraphs, headings, lists, todos, quotes, callouts, code blocks, or dividers. For unsupported block types or advanced rich text annotations, use notion_append_block_children with raw Notion block objects. |
| notion_append_markdown | Append a safe subset of Markdown to a Notion page or block without writing raw Notion block JSON. Supports headings (#, ##, ###), paragraphs, bullet items, numbered items, todos (- [ ] / - [x]), quotes, dividers, and fenced code blocks. Use this when the user provides Markdown-like content and wants it appended; use raw block tools for tables, images, rich text annotations, nested lists, or advanced Notion blocks. |
| notion_update_content | Update an existing Notion block without writing raw Notion block JSON. Use this after notion_read_page gives you a block ID and you need to replace the text or simple fields of an existing paragraph, heading, list item, todo, quote, callout, or code block. The item.type must match the block's current type; this tool will reject mismatches so the model can correct itself. |
| notion_update_content_batch | Update multiple existing Notion blocks without writing raw Notion block JSON. Use this after notion_read_page when the user wants several simple text edits at once. The server retrieves every target block and validates all item.type values before applying updates, so block type mistakes fail before any write is attempted. |
| notion_retrieve_block | Retrieve a block from Notion |
| notion_retrieve_block_children | Retrieve the children of a block |
| notion_delete_block | Delete a block in Notion |
| notion_update_block | Update the content of a block in Notion based on its type. The update replaces the entire value for a given field. |
| notion_retrieve_page | Retrieve a page from Notion |
| notion_read_page | Read a Notion page with compact page metadata plus block content in an AI-friendly outline or Markdown shape. Use this after notion_find when you need to understand or edit a page. It fetches child blocks with max_depth and max_blocks limits so large pages do not overwhelm the model. The outline includes stable block IDs that can be used with notion_append_content position.after_block. |
| notion_update_page_properties | Update properties of a page or an item in a Notion database |
| notion_list_all_users | List all users in the Notion workspace. Note: This function requires upgrading to the Notion Enterprise plan and using an Organization API key to avoid permission errors. |
| notion_retrieve_user | Retrieve a specific user by user_id in Notion. Note: This function requires upgrading to the Notion Enterprise plan and using an Organization API key to avoid permission errors. |
| notion_retrieve_bot_user | Retrieve the bot user associated with the current token in Notion |
| notion_retrieve_database | Retrieve a Notion database container and its child data_sources. Use this to discover which data_source_id should be used for query, schema, and item creation operations. |
| notion_create_database | Create a Notion database and its initial data source. Use this when the user wants a new database. For Notion API 2025-09-03+, put the initial schema under initial_data_source.properties. |
| notion_create_data_source | Add an additional Notion data source to an existing database. Do not use this to create a new database; use notion_create_database for that. |
| notion_query_data_source | Query a Notion data source with filters, sorts, and pagination. Use notion_retrieve_database first when you only have a database ID and need to discover its data_source_id. |
| notion_query_data_source_by_values | Query a Notion data source using simple schema-aware filters and sorts instead of raw Notion filter JSON. Use this after notion_inspect_data_source when the user asks for common queries like Status equals Done, Tags contains AI, Due on or before a date, Estimate greater than 3, or Done equals false. The server validates property names, option names, value types, and supported operators before calling Notion. |
| notion_retrieve_data_source | Retrieve metadata and property schema for a Notion data source. |
| notion_update_data_source | Update a Notion data source title, description, or properties. |
| notion_create_data_source_item | Create a new page item in a Notion data source. Use the data_source_id, not the database_id, as the parent. |
| notion_create_data_source_item_from_values | Create a new page item in a Notion data source using simple property values instead of raw Notion property JSON. The server retrieves the data source schema and converts common property types for you: title, rich_text, number, checkbox, select, status, multi_select, date, url, email, phone_number, relation, and people. Use notion_inspect_data_source first when you need valid property names or option values. |
| notion_create_comment | Create a comment in Notion. This requires the integration to have 'insert comment' capabilities. You can either specify a page parent or a discussion_id, but not both. |
| notion_retrieve_comments | Retrieve a list of unresolved comments from a Notion page or block. Requires the integration to have 'read comment' capabilities. |
| notion_find | Find Notion pages or data sources and return compact, AI-friendly candidates with stable IDs and suggested next tools. Use this before low-level retrieve/query tools when the user gives a title, partial name, or vague target. Prefer this over raw notion_search for discovery because it trims noisy API fields and highlights the IDs needed for the next action. |
| notion_inspect_data_source | Inspect a Notion data source schema and return a compact property summary for AI agents. Use this before creating or updating items so the model can choose valid property names, option values, and relation targets without reading the full Notion API object. |
| notion_search | Search pages or data sources by title in Notion |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| notion_find_target | Find the right Notion page or data source before reading, editing, or creating content. |
| notion_create_data_source_item_workflow | Create a data source item using schema inspection and simple property values. |
| notion_query_data_source_items_workflow | Query data source items using schema inspection and simple filters. |
| notion_append_page_content | Append or update readable Notion page content using simplified content tools. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| Notion MCP Workflow Guide | AI-oriented guidance for choosing the right Notion MCP tools and workflows. |
| Notion MCP Tool Map | Compact map of high-level and low-level Notion MCP tools exposed by this server. |
| Notion Data Source Explorer App | Interactive schema, query, and item creation workbench for Notion data sources. |
| Notion Page Workbench App | Interactive page reader and simple block editing workbench for Notion pages. |
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/suekou/mcp-notion-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server