Notion's own server: search, read and update pages and databases.
- Started in our test
- ★ 4.7K GitHub stars
- 106.7K downloads a week
- Last commit 20 Sept 2026
At a glance
Notion maintains this server. The assistant can search your workspace, read pages, query databases and create or update content, limited to the pages your integration can see.
Notion also runs a hosted version that signs in with OAuth, which is simpler than creating an integration token.
- Made by
- Notion (makenotion)
- Licence
- MIT
- Latest version
- 2.5.2 (20 Sept 2026)
- npm package
- @notionhq/notion-mcp-server
- GitHub stars
- 4.7K
- Downloads
- 106.7K a week
- Last commit
- 20 Sept 2026
- Tools
- 24
- Runs on
- Your computer or hosted
Our check: We ran this exact config on 26 Oct 2026: it started and answered with 24 tools.
What's in the pod: its tools
We found 24 tools when we started it on 26 Oct 2026. 12 only read. The rest can change things, so keep your app's "ask before each tool call" setting on for them.
Changes things12 tools · Can create, edit, send or delete.
| Tool | What it is for |
|---|---|
API-create-a-comment | Leaves a new comment on a page or adds a reply to an existing discussion. |
API-create-a-data-source | Makes a new database table under a page, with the columns you describe. |
API-delete-a-block | Moves one block, such as a paragraph or to-do, to the trash. |
API-move-page | Moves a page under a different parent page or database. |
API-patch-block-children | Adds new blocks to the end of a page, or after a block you pick. |
API-patch-page | Changes a page's properties, icon or cover, or sends it to the trash. |
API-post-page | Creates a page, either under another page or as a new row in a database. |
API-post-search | Finds pages and databases the integration can see by matching their titles. |
API-query-data-source | Pulls rows from a database using filters and sort order. |
API-update-a-block | Edits the text or settings of an existing block. |
API-update-a-data-source | Renames a database or changes its columns. |
API-update-page-markdown | Rewrites a page, or swaps out parts of it, using Markdown. |
Only reads12 tools · Looks things up and changes nothing.
| Tool | What it is for |
|---|---|
API-get-block-children | Lists the blocks nested inside a page or another block, one page of results at a time. |
API-get-self | Shows which bot user the token belongs to, handy for checking the connection works. |
API-get-user | Looks up one person or bot in the workspace by id. |
API-get-users | Lists the people and bots in the workspace. |
API-list-data-source-templates | Lists the page templates set up on a database. |
API-retrieve-a-block | Fetches a single block and its content. |
API-retrieve-a-comment | Reads the comments left on a page or block. |
API-retrieve-a-data-source | Returns a database's columns and settings so the agent knows its shape. |
API-retrieve-a-database | Gets a database's details, including the ids of the data sources inside it. |
API-retrieve-a-page | Fetches a page's properties, such as its title, status and dates. |
API-retrieve-a-page-property | Reads one property in full, useful when a relation or rollup has many entries. |
API-retrieve-page-markdown | Reads a whole page as Markdown, which costs far fewer tokens than block JSON. |
Grouped and described by us. The README on GitHub lists the inputs each tool takes.
Set it up
Pick your app for the exact snippet and where it goes.
Where it goes: claude_desktop_config.json (Settings → Developer → Edit Config)
{
"mcpServers": {
"notion": {
"command": "npx",
"args": [
"-y",
"@notionhq/notion-mcp-server"
],
"env": {
"NOTION_TOKEN": "ntn_****"
}
}
}
}Where it goes: Your terminal, in the project folder
claude mcp add-json notion '{"command":"npx","args":["-y","@notionhq/notion-mcp-server"],"env":{"NOTION_TOKEN":"ntn_****"}}'Where it goes: ~/.cursor/mcp.json, or .cursor/mcp.json in a project
{
"mcpServers": {
"notion": {
"command": "npx",
"args": [
"-y",
"@notionhq/notion-mcp-server"
],
"env": {
"NOTION_TOKEN": "ntn_****"
}
}
}
}Where it goes: .vscode/mcp.json in your project
{
"servers": {
"notion": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@notionhq/notion-mcp-server"
],
"env": {
"NOTION_TOKEN": "ntn_****"
}
}
}
}Where it goes: ~/.codeium/windsurf/mcp_config.json
{
"mcpServers": {
"notion": {
"command": "npx",
"args": [
"-y",
"@notionhq/notion-mcp-server"
],
"env": {
"NOTION_TOKEN": "ntn_****"
}
}
}
}Where it goes: Not supported
ChatGPT only connects to remote servers by URL. This one runs on your computer, so use Claude, Cursor or VS Code.
Replace ntn_**** with your integration token and share the relevant pages with that integration.
Remote option
The hosted server signs in with your Notion account instead of a token.
https://mcp.notion.com/mcpNew to this? See the setup guides for Claude Code, Cursor, Claude Desktop and ChatGPT.
Settings
Names are exactly as the project spells them. Required ones are marked.
| Setting | What it does |
|---|---|
NOTION_TOKENEnvironment variable · required | Your internal integration secret from Notion's integrations page. The simplest way to sign in.ntn_xxxxxxxx |
OPENAPI_MCP_HEADERSEnvironment variable | An alternative to NOTION_TOKEN: a JSON string of raw request headers, for when you need to pin the Notion-Version yourself.{"Authorization": "Bearer ntn_xxxx", "Notion-Version": "2025-09-03"} |
--transportCommand line flag | Choose stdio (the default) or http to run it as a local web server.--transport http |
--portCommand line flag | Port for the HTTP mode. Defaults to 3000.--port 8080 |
--auth-tokenCommand line flag | Bearer token clients must send in HTTP mode. One is generated for you if you leave it out.--auth-token your-secret |
AUTH_TOKENEnvironment variable | The same bearer token as --auth-token, set through the environment. |
--enable-token-passthroughCommand line flag | Lets each HTTP client send its own Notion token in a Notion-Token header, so one server can serve several integrations. Also settable with ENABLE_TOKEN_PASSTHROUGH=true. |
--unsafe-disable-authCommand line flag | Turns off the HTTP bearer check. Only for an isolated network. |
What it can touch
It can read
- Pages and databases you have shared with the integration, and nothing else
- Comments and the list of workspace members
It can change
- Creates, edits, moves and trashes pages and blocks
- Adds database rows and changes database columns
- Posts comments
Safer setup: In the integration's Configuration tab, tick only "Read content". The agent can then read the pages you share but cannot write anything.
Before you start
- A Notion integration token, shared with the pages you want it to reach
- Node.js 18 or newer for the local server
If it does not work
- Search returns nothing, or a page gives a 404
- Notion hides everything from an integration until you share it. Add the pages in the integration's Access tab, or use Connect to integration from the page's ••• menu.
- Old prompts call post-database-query and fail
- Version 2 swapped database tools for data source ones. Use query-data-source with a data_source_id instead.
- 403 from the Markdown tools
- The integration needs read content (and update content for edits) switched on in its capabilities.
- The JSON headers break in the Docker config
- Use NOTION_TOKEN instead of OPENAPI_MCP_HEADERS. It needs no escaping.
Peas in a pod: similar servers
How Notion lines up against other knowledge and work apps servers on the shelf.
| Server | Tools | Runs on | Licence | Stars |
|---|---|---|---|---|
| Notion | 24 | Your computer or hosted | MIT | 4.7K |
| MCP Atlassian (Jira and Confluence) | 98 | Your computer | – | 6K |
| Basic Memory | 27 | Your computer | AGPL-3.0-or-later | 4.4K |
| LinkedIn MCP Server | 20 | Your computer | Apache-2.0 | 4K |
| arXiv MCP Server | 19 | Your computer | Apache-2.0 | 3.2K |
Questions
Should I use this or Notion's hosted MCP?
Notion now points people to its hosted server at mcp.notion.com, which signs in with OAuth and is the one it maintains. This open source version still works, runs on your machine and suits setups that need a token or self-hosting.
Can it delete my databases?
No. The exposed tools can trash pages and blocks but there is no tool to delete a database.
Why can't it see my whole workspace?
By design, an internal integration only sees the pages you share with it. Share a top-level page and everything under it comes along.
Does it cost anything?
The server is free and MIT licensed. It uses the Notion API, which is included with every Notion plan.
Something wrong on this page? Tell us.