MCP.so
Sign In

Notion MCP Server

@suekou

About Notion MCP Server

A Model Context Protocol server for connecting Notion to MCP-compatible clients

Config

Add this server to your MCP-compatible client using the configuration below.

{
  "mcpServers": {
    "notion": {
      "command": "npx",
      "args": [
        "-y",
        "@suekou/mcp-notion-server"
      ],
      "env": {
        "NOTION_API_TOKEN": "your-integration-token"
      }
    }
  }
}

Tools

31

Open an interactive Notion Data Source Explorer MCP App for schema inspection, filter building, querying, and item creation from simple values.

Open an interactive Notion Page Workbench MCP App for reading page content, selecting block IDs, updating simple blocks, and appending Markdown.

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.

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.

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.

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.

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.

Retrieve a block from Notion

Retrieve the children of a block

Delete a block in Notion

Update the content of a block in Notion based on its type. The update replaces the entire value for a given field.

Retrieve a page from Notion

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.

Update properties of a page or an item in a Notion database

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.

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.

Retrieve the bot user associated with the current token in Notion

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.

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.

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.

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.

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.

Retrieve metadata and property schema for a Notion data source.

Update a Notion data source title, description, or properties.

Create a new page item in a Notion data source. Use the data_source_id, not the database_id, as the parent.

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.

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.

Retrieve a list of unresolved comments from a Notion page or block. Requires the integration to have 'read comment' capabilities.

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.

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.

Search pages or data sources by title in Notion

Overview

What is Notion MCP Server?

Notion MCP Server is an MCP (Model Context Protocol) server for the Notion API (version 2026-03-11) that helps AI agents find, read, query, and update Notion workspaces while keeping responses compact for AI workflows. It exposes MCP tools, prompts, resources, structured tool results, and optional MCP Apps for interactive Notion workflows.

How to use Notion MCP Server?

Install by adding the server configuration to an MCP host (e.g., Claude Desktop) using npx -y @suekou/mcp-notion-server and setting the NOTION_API_TOKEN environment variable. Create a Notion internal integration, grant the required capabilities (read, insert, update content), share target pages/databases with the integration, and copy the integration token. After saving the configuration, restart the MCP host.

Key features of Notion MCP Server

  • Search and target discovery with notion_find.
  • Compact page reading with stable block IDs via notion_read_page.
  • Data source schema inspection with notion_inspect_data_source.
  • Schema-aware data source querying and item creation with simple values.
  • Simple page editing tools for paragraphs, headings, lists, todos, quotes, callouts, code blocks, dividers, and safe Markdown append.
  • Raw Notion API tools for advanced block, page, database, data source, comment, and user operations.
  • Optional MCP Apps: Data Source Explorer and Page Workbench.

Use cases of Notion MCP Server

  • Agents searching for pages and reading their content with stable block IDs.
  • Querying and updating database or data source items using schema-aware tools.
  • Editing page content with simple editing tools (paragraphs, headings, lists, etc.).
  • Performing advanced operations using raw Notion API tools.
  • Interactively exploring data sources and page structure with MCP Apps.

FAQ from Notion MCP Server

What runtime dependencies does Notion MCP Server have?

For usage, only an MCP host is required. For development, Node.js 22 or newer and pnpm are needed.

How does authentication work?

Authentication uses a Notion internal integration token set as the NOTION_API_TOKEN environment variable in the MCP host configuration.

Which Notion API version does it support?

It targets the Notion API version 2026-03-11.

What are the content access limitations?

Notion only allows an integration to access pages and databases that have been explicitly shared with it, either via the integration’s Content access tab or from the page/database Connections menu.

What transport does it use?

It uses standard MCP stdio transport, as configured with the command and args in the MCP host settings.

Frequently asked questions

What runtime dependencies does Notion MCP Server have?

For usage, only an MCP host is required. For development, Node.js 22 or newer and pnpm are needed.

How does authentication work?

Authentication uses a Notion internal integration token set as the `NOTION_API_TOKEN` environment variable in the MCP host configuration.

Which Notion API version does it support?

It targets the Notion API version 2026-03-11.

What are the content access limitations?

Notion only allows an integration to access pages and databases that have been explicitly shared with it, either via the integration’s Content access tab or from the page/database Connections menu.

What transport does it use?

It uses standard MCP stdio transport, as configured with the `command` and `args` in the MCP host settings.

Comments

More Memory & Knowledge MCP servers