Notion MCP Server

Lets an assistant search, read and edit Notion pages, blocks, databases and comments through the Notion API.

Official · Notion TypeScript Local · stdio ProductivityKnowledge and memory

104 popularity score ★ 4.7k ↓ 322k/wk

Connect your client

Local (npm)

Add in one click

Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.

Or add it by command or config

It needs NOTION_TOKEN. Replace each <NAME> with your value.

Claude CodeTerminal
claude mcp add notion -e NOTION_TOKEN=<NOTION_TOKEN> -- npx -y @notionhq/notion-mcp-server
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "notion": {
      "command": "npx",
      "args": [
        "-y",
        "@notionhq/notion-mcp-server"
      ],
      "env": {
        "NOTION_TOKEN": "<NOTION_TOKEN>"
      }
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "notion": {
      "command": "npx",
      "args": [
        "-y",
        "@notionhq/notion-mcp-server"
      ],
      "env": {
        "NOTION_TOKEN": "<NOTION_TOKEN>"
      }
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "notion": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@notionhq/notion-mcp-server"
      ],
      "env": {
        "NOTION_TOKEN": "<NOTION_TOKEN>"
      }
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.notion]
command = "npx"
args = ["-y", "@notionhq/notion-mcp-server"]

[mcp_servers.notion.env]
NOTION_TOKEN = "<NOTION_TOKEN>"
Gemini CLITerminal
gemini mcp add --scope user -e NOTION_TOKEN=<NOTION_TOKEN> notion npx -- -y @notionhq/notion-mcp-server

Settings 4

NOTION_TOKEN Required: Notion internal integration token (ntn_...).
OPENAPI_MCP_HEADERS Optional: JSON of headers for the Notion API (Authorization, Notion-Version), an advanced alternative to NOTION_TOKEN.
AUTH_TOKEN Optional: Bearer token for the Streamable HTTP transport.
ENABLE_TOKEN_PASSTHROUGH Optional: Set to true so each HTTP client supplies its own Notion token.

What it does

Notion's open-source MCP server exposes the Notion API to MCP clients. An assistant can search pages and data sources by title, read and update pages and their properties, read and edit page content as Markdown, append, update and delete blocks, query, create and update data sources (databases) with filters and sorts, move pages, read and add comments, and look up users.

It runs locally with npx -y @notionhq/notion-mcp-server or the Docker image mcp/notion, and uses an internal Notion integration token (NOTION_TOKEN). Only the pages and databases you connect to that integration are reachable, and the integration's capabilities can be limited, for example to read-only. It can also serve Streamable HTTP with a bearer token, including a mode where each client passes its own Notion token.

Notion's README says this self-hosted server is no longer actively maintained or supported and may be sunset, and recommends its hosted Remote Notion MCP instead, which uses OAuth, semantic search and Markdown-native tools.

Tools 24

get-user
Retrieve a user (Notion API GET /v1/users/{user_id}).
get-users
List all users (Notion API GET /v1/users).
get-self
Retrieve your token's bot user (Notion API GET /v1/users/me).
post-search
Search by title (Notion API POST /v1/search).
get-block-children
Retrieve block children (Notion API GET /v1/blocks/{block_id}/children).
patch-block-children
Append block children (Notion API PATCH /v1/blocks/{block_id}/children).
retrieve-a-block
Retrieve a block (Notion API GET /v1/blocks/{block_id}).
update-a-block
Update a block (Notion API PATCH /v1/blocks/{block_id}).
delete-a-block
Delete a block (Notion API DELETE /v1/blocks/{block_id}).
retrieve-a-page
Retrieve a page (Notion API GET /v1/pages/{page_id}).
patch-page
Update page properties (Notion API PATCH /v1/pages/{page_id}).
post-page
Create a page (Notion API POST /v1/pages).
retrieve-a-page-property
Retrieve a page property item (Notion API GET /v1/pages/{page_id}/properties/{property_id}).
retrieve-a-comment
Retrieve comments (Notion API GET /v1/comments).
create-a-comment
Create comment (Notion API POST /v1/comments).
query-data-source
Query a data source (Notion API POST /v1/data_sources/{data_source_id}/query).
retrieve-a-data-source
Retrieve a data source (Notion API GET /v1/data_sources/{data_source_id}).
update-a-data-source
Update a data source (Notion API PATCH /v1/data_sources/{data_source_id}).
create-a-data-source
Create a data source (Notion API POST /v1/data_sources).
list-data-source-templates
List templates in a data source (Notion API GET /v1/data_sources/{data_source_id}/templates).
retrieve-a-database
Retrieve a database (Notion API GET /v1/databases/{database_id}).
move-page
Move a page (Notion API POST /v1/pages/{page_id}/move).
retrieve-page-markdown
Retrieve a page as Markdown (Notion API GET /v1/pages/{page_id}/markdown).
update-page-markdown
Update a page's content as Markdown (Notion API PATCH /v1/pages/{page_id}/markdown).

Similar servers