Skip to main content
Glama

Notion MCP Server

License: MIT TypeScript Apify Ready

Connect Claude Desktop (and other MCP clients) directly to Notion using a real MCP server with SSE support.

No flaky local scripts. No tokens in URLs. Run it securely in the cloud.

The easiest way to run this securely 24/7 is on Apify.

Deploy to Apify

Connect your MCP client

  • Base URL (Apify Container URL):

    https://<run-id>.runs.apify.net

  • SSE endpoint:

    GET /sse

  • Client-to-server messages:

    POST /message?sessionId=...

Authentication is done via:

  • Authorization header: Authorization: Bearer <SECRET_TOKEN>

✨ Features

  • MCP Protocol with SSE

  • Secure Bearer Authentication

  • Notion API access (CRUD via OpenAPI tools)

  • Rate-limiting & basic DDoS protection (express-rate-limit)

  • Security headers (helmet)

💻 Local Development (For Geeks)

Install

npm install

Build

npm run build

Run

npm start

Docker (optional)

If you use Docker locally:

docker build -t notion-mcp-server .
docker run -p 8080:8080 --env-file .env notion-mcp-server

⚙️ Configuration

This project is designed to read configuration from environment variables (and Apify Actor input).

Required ENV variables

  • NOTION_TOKEN

    • Your Notion integration token.

  • SECRET_TOKEN

    • Bearer token required to access /sse and /message.

Optional (advanced):

  • NOTION_API_VERSION (default: 2022-06-28)

  • OPENAPI_MCP_HEADERS (JSON string of headers; overrides NOTION_TOKEN when present)

  • BASE_URL (override OpenAPI server base URL)

Claude Desktop configuration

Add (or merge) something like this into claude_desktop_config.json:

{
  "mcpServers": {
    "notion": {
      "command": "node",
      "args": ["/ABSOLUTE/PATH/TO/dist/start-apify.js"],
      "env": {
        "NOTION_TOKEN": "YOUR_NOTION_TOKEN",
        "SECRET_TOKEN": "YOUR_SECRET_TOKEN"
      }
    }
  }
}

On Apify, you typically configure secrets via Actor input / secrets and use the Container URL as the server endpoint.

Security Notes

  • Never commit .env files or Apify storage/ directories.

  • Use a strong SECRET_TOKEN and rotate it if it leaks.

Contributing

PRs are welcome!

-
security - not tested
A
license - permissive license
-
quality - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/piskunproject/notion-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server