better-notion-mcp

Markdown-first Notion MCP server with 9 composite tools, 39 actions, and ~77% token reduction via tiered docs.

Better Notion MCP

mcp-name: io.github.n24q02m/better-notion-mcp

Markdown-first Notion API server for AI agents -- 10 composite tools replacing 28+ endpoint calls

CI codecov npm Docker License: MIT

TypeScript Node.js Notion semantic-release Renovate

Sister projects from n24q02m (click to expand)
ProjectTaglineTag
better-code-review-graphKnowledge graph for token-efficient code reviews -- fixed search, configurabl...MCP
better-email-mcpIMAP/SMTP email server for AI agents -- 6 composite tools with multi-account ...MCP
better-godot-mcpComposite MCP server for Godot Engine -- 17 mega-tools for AI-assisted game d...MCP
better-notion-mcpMarkdown-first Notion API server for AI agents -- 10 composite tools replacin...MCP
better-telegram-mcpMCP server for Telegram with dual-mode support: Bot API (httpx) for quick bot...MCP
claude-pluginsFull documentation: mcp.n24q02m.com — unified docs for all 8 servers + the mc...Marketplace
imagine-mcpProduction-grade MCP server for image and video understanding + generation ac...MCP
jules-task-archiverChrome Extension for bulk operations on Jules tasks via batchexecute API -- a...Tooling
mcp-coreUnified MCP Streamable HTTP 2025-11-25 transport, OAuth 2.1 Authorization Ser...MCP
mnemo-mcpPersistent AI memory with hybrid search and embedded sync. Open, free, unlimi...MCP
qwen3-embedLightweight Qwen3 text embedding and reranking via ONNX Runtime and GGUFLibrary
skretSecrets without the server.CLI
web-coreShared web infrastructure package for search, scraping, HTTP security, and st...Library
wet-mcpOpen-source MCP Server for web search, content extraction, library docs & mul...MCP

Table of contents

Better Notion MCP server

Features

  • Markdown in, Markdown out -- human-readable content instead of raw JSON blocks
  • 10 composite tools with 44 actions -- one call instead of chaining 2+ atomic endpoints
  • Auto-pagination and bulk operations -- no manual cursor handling or looping
  • Tiered token optimization -- ~77% reduction via compressed descriptions + on-demand help tool
  • Dual transport -- local stdio (token) or remote HTTP (OAuth 2.1, no token needed)

Status

2026-05-02 -- Architecture stabilization update

Past months saw significant churn around credential handling and the daemon-bridge auto-spawn pattern. This caused multi-process races, browser tab spam, and inconsistent setup UX across plugins. As of v, the architecture is stable: 2 clean modes (stdio + HTTP), no daemon-bridge layer, no auto-spawn from stdio.

Apologies for the instability period. If you encountered issues with prior versions, please update to v+ and follow the current docs/setup-manual.md -- most prior workarounds are no longer needed.

Related plugins from the same author:

All plugins share the same architecture -- install once, learn pattern transfers.

Documentation

Full docs at mcp.n24q02m.com/servers/better-notion-mcp/:

  • Setup -- install methods for Claude Code, Codex, Gemini CLI, Cursor, Windsurf, mcp.json
  • Modes overview -- stdio / local-relay / remote-relay / remote-oauth
  • Multi-user setup -- per-JWT-sub credential model

Install with AI agent -- paste this to your AI coding agent:

Install MCP server better-notion-mcp following the steps at https://raw.githubusercontent.com/n24q02m/claude-plugins/main/plugins/better-notion-mcp/setup-with-agent.md

Tools

ToolActionsDescription
pagescreate, get, get_property, update, move, archive, restore, duplicateCreate, read, update, and organize pages
databasescreate, get, query, create_page, update_page, delete_page, create_data_source, update_data_source, update_database, list_templatesDatabase CRUD and page management within databases
blocksget, children, append, update, deleteRead and manipulate block content
userslist, get, me, from_workspaceList and retrieve user information
workspaceinfo, searchWorkspace metadata and cross-workspace search
commentslist, get, createPage and block comments
content_convertmarkdown-to-blocks, blocks-to-markdownConvert between Markdown and Notion blocks
file_uploadscreate, send, complete, retrieve, listUpload files to Notion
setupstatus, start, reset, completeCredential setup via browser relay, status check, reset, re-resolve
help-Get full documentation for any tool

MCP Resources

URIDescription
notion://docs/pagesPage operations reference
notion://docs/databasesDatabase operations reference
notion://docs/blocksBlock operations reference
notion://docs/usersUser operations reference
notion://docs/workspaceWorkspace operations reference
notion://docs/commentsComment operations reference
notion://docs/content_convertContent conversion reference
notion://docs/file_uploadsFile upload reference

Configuration

VariableRequiredDefaultDescription
NOTION_TOKENYes (stdio)-Notion integration token
TRANSPORT_MODENostdioSet to http for remote mode
PUBLIC_URLYes (http)-Server's public URL for OAuth redirects
NOTION_OAUTH_CLIENT_IDYes (http)-Notion Public Integration client ID
NOTION_OAUTH_CLIENT_SECRETYes (http)-Notion Public Integration client secret
DCR_SERVER_SECRETYes (http)-HMAC secret for stateless client registration
PORTNo8080Server port

Self-Hosting (Remote Mode)

You can self-host the remote server with your own Notion OAuth app.

Prerequisites:

  1. Create a Public Integration at https://www.notion.so/my-integrations
  2. Set the redirect URI to https://your-domain.com/callback
  3. Note your client_id and client_secret
docker run -p 8080:8080 \
  -e TRANSPORT_MODE=http \
  -e PUBLIC_URL=https://your-domain.com \
  -e NOTION_OAUTH_CLIENT_ID=your-client-id \
  -e NOTION_OAUTH_CLIENT_SECRET=your-client-secret \
  -e DCR_SERVER_SECRET=$(openssl rand -hex 32) \
  n24q02m/better-notion-mcp:latest

Security

  • OAuth 2.1 + PKCE S256 -- Secure authorization with code challenge
  • Rate limiting -- 120 req/min/IP on HTTP transport
  • Session owner binding -- IP check + TTL for pending token binds
  • Null safety -- Handles Notion API quirks (comments.list 404, undefined rich_text)

Build from Source

git clone https://github.com/n24q02m/better-notion-mcp.git
cd better-notion-mcp
bun install
bun run dev

Trust Model

This plugin implements TC-NearZK (in-memory, ephemeral). See mcp-core/docs/TRUST-MODEL.md for full classification.

ModeStorageEncryptionWho can read your data?
HTTP n24q02m-hosted (default)In-memory Map<sub, OAuthToken>In-process onlyServer process (cleared on restart)
HTTP self-hostSame as hostedSameOnly you (admin = user)
stdio proxy~/.better-notion-mcp/config.jsonAES-GCM, machine-bound keyOnly your OS user (file perm 0600)

License

MIT -- See LICENSE.

Server Terkait