notion-mcp-server

MCP.Pizza Chef: makenotion

The Notion MCP Server is an official implementation of an MCP server that connects the Notion API with the Model Context Protocol. It enables LLMs to access and interact with Notion workspace data in a structured, secure manner, facilitating real-time context feeding and multi-step reasoning. This server supports integration setup via Notion's internal integration tokens and allows scoped access to Notion data, enhancing AI workflows with Notion content.

Use This MCP server To

Access Notion workspace data via MCP for AI workflows Feed structured Notion page and database context to LLMs Enable read-only Notion data access for secure AI interactions Integrate Notion content into multi-step reasoning agents Automate Notion data retrieval for task-specific LLM prompts

README

Notion MCP Server

notion-mcp-sm

This project implements an MCP server for the Notion API.

mcp-demo

Installation

1. Setting up Integration in Notion:

Go to https://www.notion.so/profile/integrations and create a new internal integration or select an existing one.

Creating a Notion Integration token

While we limit the scope of Notion API's exposed (for example, you will not be able to delete databases via MCP), there is a non-zero risk to workspace data by exposing it to LLMs. Security-conscious users may want to further configure the Integration's Capabilities.

For example, you can create a read-only integration token by giving only "Read content" access from the "Configuration" tab:

Notion Integration Token Capabilities showing Read content checked

2. Connecting content to integration:

Ensure relevant pages and databases are connected to your integration.

To do this, you'll need to visit that page, and click on the 3 dots, and select "Connect to integration".

Adding Integration Token to Notion Connections

3. Adding MCP config to your client:

Using npm:

Add the following to your .cursor/mcp.json or claude_desktop_config.json (MacOS: ~/Library/Application\ Support/Claude/claude_desktop_config.json)

{
  "mcpServers": {
    "notionApi": {
      "command": "npx",
      "args": ["-y", "@notionhq/notion-mcp-server"],
      "env": {
        "OPENAPI_MCP_HEADERS": "{\"Authorization\": \"Bearer ntn_****\", \"Notion-Version\": \"2022-06-28\" }"
      }
    }
  }
}
Using Docker:

There are two options for running the MCP server with Docker:

Option 1: Using the official Docker Hub image:

Add the following to your .cursor/mcp.json or claude_desktop_config.json:

{
  "mcpServers": {
    "notionApi": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-e", "OPENAPI_MCP_HEADERS",
        "mcp/notion"
      ],
      "env": {
        "OPENAPI_MCP_HEADERS": "{\"Authorization\":\"Bearer ntn_****\",\"Notion-Version\":\"2022-06-28\"}"
      }
    }
  }
}

This approach:

  • Uses the official Docker Hub image
  • Properly handles JSON escaping via environment variables
  • Provides a more reliable configuration method
Option 2: Building the Docker image locally:

You can also build and run the Docker image locally. First, build the Docker image:

docker-compose build

Then, add the following to your .cursor/mcp.json or claude_desktop_config.json:

{
  "mcpServers": {
    "notionApi": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-e",
        "OPENAPI_MCP_HEADERS={\"Authorization\": \"Bearer ntn_****\", \"Notion-Version\": \"2022-06-28\"}",
        "notion-mcp-server"
      ]
    }
  }
}

Don't forget to replace ntn_**** with your integration secret. Find it from your integration configuration tab:

Copying your Integration token from the Configuration tab in the developer portal

Examples

  1. Using the following instruction
Comment "Hello MCP" on page "Getting started"

AI will correctly plan two API calls, v1/search and v1/comments, to achieve the task

  1. Similarly, the following instruction will result in a new page named "Notion MCP" added to parent page "Development"
Add a page titled "Notion MCP" to page "Development"
  1. You may also reference content ID directly
Get the content of page 1a6b35e6e67f802fa7e1d27686f017f2

Development

Build

npm run build

Execute

npx -y --prefix /path/to/local/notion-mcp-server @notionhq/notion-mcp-server

Publish

npm publish --access public

notion-mcp-server FAQ

How do I set up the Notion MCP Server integration?
Create an internal integration token at https://www.notion.so/profile/integrations and configure its capabilities for MCP access.
Can I limit the Notion MCP Server to read-only access?
Yes, you can configure the integration token's capabilities to restrict permissions, enhancing security.
What kind of Notion data can the MCP server expose?
It exposes pages, databases, and other workspace content but restricts destructive actions like deleting databases.
Is the Notion MCP Server compatible with multiple LLM providers?
Yes, it works with OpenAI, Anthropic Claude, and Google Gemini models via MCP.
How does the Notion MCP Server ensure data security?
By scoping integration token permissions and limiting API capabilities exposed to the LLM.
What are the installation prerequisites for the Notion MCP Server?
You need a Notion workspace, an internal integration token, and network access to the MCP server.
Can I customize the data exposure of the Notion MCP Server?
Yes, you can configure which Notion API scopes and capabilities the integration token has to control data access.