Skip to content
MCP Shelf

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)
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.

ToolWhat it is for
API-create-a-commentLeaves a new comment on a page or adds a reply to an existing discussion.
API-create-a-data-sourceMakes a new database table under a page, with the columns you describe.
API-delete-a-blockMoves one block, such as a paragraph or to-do, to the trash.
API-move-pageMoves a page under a different parent page or database.
API-patch-block-childrenAdds new blocks to the end of a page, or after a block you pick.
API-patch-pageChanges a page's properties, icon or cover, or sends it to the trash.
API-post-pageCreates a page, either under another page or as a new row in a database.
API-post-searchFinds pages and databases the integration can see by matching their titles.
API-query-data-sourcePulls rows from a database using filters and sort order.
API-update-a-blockEdits the text or settings of an existing block.
API-update-a-data-sourceRenames a database or changes its columns.
API-update-page-markdownRewrites a page, or swaps out parts of it, using Markdown.

Only reads12 tools · Looks things up and changes nothing.

ToolWhat it is for
API-get-block-childrenLists the blocks nested inside a page or another block, one page of results at a time.
API-get-selfShows which bot user the token belongs to, handy for checking the connection works.
API-get-userLooks up one person or bot in the workspace by id.
API-get-usersLists the people and bots in the workspace.
API-list-data-source-templatesLists the page templates set up on a database.
API-retrieve-a-blockFetches a single block and its content.
API-retrieve-a-commentReads the comments left on a page or block.
API-retrieve-a-data-sourceReturns a database's columns and settings so the agent knows its shape.
API-retrieve-a-databaseGets a database's details, including the ids of the data sources inside it.
API-retrieve-a-pageFetches a page's properties, such as its title, status and dates.
API-retrieve-a-page-propertyReads one property in full, useful when a relation or rollup has many entries.
API-retrieve-page-markdownReads 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)

Claude Desktop
{
  "mcpServers": {
    "notion": {
      "command": "npx",
      "args": [
        "-y",
        "@notionhq/notion-mcp-server"
      ],
      "env": {
        "NOTION_TOKEN": "ntn_****"
      }
    }
  }
}

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.

Server URL
https://mcp.notion.com/mcp

New 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.

SettingWhat it does
NOTION_TOKENEnvironment variable · requiredYour internal integration secret from Notion's integrations page. The simplest way to sign in.ntn_xxxxxxxx
OPENAPI_MCP_HEADERSEnvironment variableAn 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 flagChoose stdio (the default) or http to run it as a local web server.--transport http
--portCommand line flagPort for the HTTP mode. Defaults to 3000.--port 8080
--auth-tokenCommand line flagBearer token clients must send in HTTP mode. One is generated for you if you leave it out.--auth-token your-secret
AUTH_TOKENEnvironment variableThe same bearer token as --auth-token, set through the environment.
--enable-token-passthroughCommand line flagLets 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 flagTurns 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.

ServerToolsRuns onLicenceStars
Notion24Your computer or hostedMIT4.7K
MCP Atlassian (Jira and Confluence)98Your computer–6K
Basic Memory27Your computerAGPL-3.0-or-later4.4K
LinkedIn MCP Server20Your computerApache-2.04K
arXiv MCP Server19Your computerApache-2.03.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.

Full docs on GitHubmakenotion/notion-mcp-server

Something wrong on this page? Tell us.

More in Knowledge and work apps