MCP servers / Notion
Notion MCP server: setup for Claude Code, Claude Desktop and Cursor
Notion's own MCP server lets your AI search, read and edit pages and databases in your Notion workspace. You create an "internal integration" in Notion and share only the pages you want the AI to see.
Access is controlled on the Notion side: the AI can only see pages you have connected to the integration.
- Runs with
- npx (Node.js)
- Package
- @notionhq/notion-mcp-server on npm
- Needs
- Node.js (for npx) and a Notion internal integration token.
- Tools
- 24 (12 read-only, 12 not declared)
- Source
- makenotion/notion-mcp-server
- Last checked
- 2026-09-20 (server reported version 1.0.0)
Config for Notion
Generated by the same code as the free builder, so it matches what you get there. Pick your client, then copy.
Create an internal integration in Notion, then give it access to only the pages you want the AI to see.
Claude Code
Save as .mcp.json in your project root. Claude Code asks you to approve it the first time.
{
"mcpServers": {
"notion": {
"command": "npx",
"args": [
"-y",
"@notionhq/notion-mcp-server"
],
"env": {
"NOTION_TOKEN": "${NOTION_TOKEN}"
}
}
}
}
Set NOTION_TOKEN in your environment before starting Claude Code. The config only references the variable, so it is safe to commit.
Or add it from a terminal instead (single quotes work in bash, zsh and PowerShell; more on this command):
claude mcp add notion -e 'NOTION_TOKEN=${NOTION_TOKEN}' -- npx -y @notionhq/notion-mcp-server
Claude Desktop
Merge into claude_desktop_config.json (Settings → Developer → Edit Config), then fully quit and restart Claude Desktop.
{
"mcpServers": {
"notion": {
"command": "npx",
"args": [
"-y",
"@notionhq/notion-mcp-server"
],
"env": {
"NOTION_TOKEN": "paste-your-key-here"
}
}
}
}
Claude Desktop keeps NOTION_TOKEN in this file as plain text. Keep the file private and never share or commit it.
Cursor
Save as .cursor/mcp.json in your project, or ~/.cursor/mcp.json for all projects.
{
"mcpServers": {
"notion": {
"command": "npx",
"args": [
"-y",
"@notionhq/notion-mcp-server"
],
"env": {
"NOTION_TOKEN": "${env:NOTION_TOKEN}"
}
}
}
}
Set NOTION_TOKEN in your environment before launching Cursor. The config only references the variable, so it is safe to commit.
What it can do
These are all 24 tools the server reported when we started it and asked on 2026-09-20. This server does not say which tools are read-only, so we sorted them by what each name and description says.
API-get-userread-only
Retrieve a userAPI-get-usersread-only
List all usersAPI-get-selfread-only
Retrieve your token's bot userAPI-post-searchreads (by name)
Search by titleAPI-get-block-childrenread-only
Retrieve block childrenAPI-patch-block-childrenchanges things (by name)
Append block childrenAPI-retrieve-a-blockread-only
Retrieve a blockAPI-update-a-blockchanges things (by name)
Update a blockAPI-delete-a-blockchanges things (by name)
Delete a blockAPI-retrieve-a-pageread-only
Retrieve a pageAPI-patch-pagechanges things (by name)
Update page propertiesAPI-post-pagechanges things (by name)
Create a pageAPI-retrieve-a-page-propertyread-only
Retrieve a page property itemAPI-retrieve-a-commentread-only
Retrieve commentsAPI-create-a-commentchanges things (by name)
Create commentAPI-query-data-sourcereads (by name)
Query a data sourceAPI-retrieve-a-data-sourceread-only
Retrieve a data sourceAPI-update-a-data-sourcechanges things (by name)
Update a data sourceAPI-create-a-data-sourcechanges things (by name)
Create a data sourceAPI-list-data-source-templatesread-only
List templates in a data sourceAPI-retrieve-a-databaseread-only
Retrieve a databaseAPI-move-pagechanges things (by name)
Move a pageAPI-retrieve-page-markdownread-only
Retrieve a page as MarkdownAPI-update-page-markdownchanges things (by name)
Update a page's content as Markdown
Watch out for
- 10 of its 24 tools change your workspace: they create, update, move or delete pages, blocks, comments and data sources. The server does not label them as read-only or not, so we sorted them by name.
- For a read-only setup, Notion's README suggests giving the integration only the "Read content" capability in its settings. That limits the token itself, not just the tool list.
- Connect only the pages you want the AI to see, from the integration's Access tab, rather than your whole workspace.
- The README notes the server limits what it exposes (for example, it cannot delete databases), but says there is still risk to workspace data when an AI can edit it.
Try asking
- “Search my Notion for the meeting notes about the launch and summarize the decisions.”
- “List the open tasks in my project database, grouped by owner.”
- “Create a new page called "Release checklist" with the steps from this conversation.”
Related servers
- Memory: A simple knowledge graph the AI can remember things in.
- Filesystem: Let the AI read and edit files in folders you allow.
Building a full setup? Combine this with other servers in the config builder. Trouble connecting? See fixing connection errors.