better-notion-mcp
Markdown-first Notion MCP server with 9 composite tools, 39 actions, and ~77% token reduction via tiered docs.
Better Notion MCP
Markdown-First MCP Server for Notion - Optimized for AI Agents
Why "Better"?
9 composite tools that consolidate Notion's 28+ REST API endpoints into action-based operations optimized for AI agents.
vs. Official Notion MCP Server
| Feature | Better Notion MCP | Official Notion MCP |
|---|---|---|
| Content Format | Markdown (human-readable) | Raw JSON blocks |
| Operations | Composite actions (1 call) | Atomic (2+ calls) |
| Pagination | Auto-pagination | Manual cursor |
| Bulk Operations | Native batch support | Loop manually |
| Tools | 9 tools (39 actions) | 28+ endpoint tools |
| Token Efficiency | Optimized | Standard |
Quick Start
Remote Mode (OAuth) -- No token needed
Connect directly via URL with OAuth authentication. Your MCP client handles the OAuth flow automatically — just authorize with your Notion account when prompted.
{
"mcpServers": {
"better-notion": {
"type": "http",
"url": "https://better-notion-mcp.n24q02m.com/mcp"
}
}
}
Supported by Claude Desktop, Claude Code, Cursor, VS Code Copilot, and other clients with OAuth support.
Local Mode (Token)
Get your token: https://www.notion.so/my-integrations -> Create integration -> Copy token -> Share pages
Option 1: Package Manager (Recommended)
{
"mcpServers": {
"better-notion": {
"command": "bun",
"args": ["x", "@n24q02m/better-notion-mcp@latest"],
"env": {
"NOTION_TOKEN": "ntn_..." // required: Notion integration token
}
}
}
}
Alternatively, you can use npx, pnpm dlx, or yarn dlx:
| Runner | command | args |
|---|---|---|
| npx | npx | ["-y", "@n24q02m/better-notion-mcp@latest"] |
| pnpm | pnpm | ["dlx", "@n24q02m/better-notion-mcp@latest"] |
| yarn | yarn | ["dlx", "@n24q02m/better-notion-mcp@latest"] |
Option 2: Docker
{
"mcpServers": {
"better-notion": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"--name", "mcp-notion",
"-e", "NOTION_TOKEN", // required: pass-through from env below
"n24q02m/better-notion-mcp:latest"
],
"env": {
"NOTION_TOKEN": "ntn_..." // required: Notion integration token
}
}
}
}
Self-Hosting (Remote Mode)
You can self-host the remote server with your own Notion OAuth app.
Prerequisites:
- Create a Public Integration at https://www.notion.so/my-integrations
- Set the redirect URI to
https://your-domain.com/callback - Note your
client_idandclient_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
| Variable | Description |
|---|---|
TRANSPORT_MODE | Set to http for remote mode (default: stdio) |
PUBLIC_URL | Your server's public URL (used for OAuth redirects) |
NOTION_OAUTH_CLIENT_ID | Notion Public Integration client ID |
NOTION_OAUTH_CLIENT_SECRET | Notion Public Integration client secret |
DCR_SERVER_SECRET | HMAC secret for stateless client registration |
PORT | Server port (default: 8080) |
Tools
| Tool | Actions |
|---|---|
pages | create, get, get_property, update, move, archive, restore, duplicate |
databases | create, get, query, create_page, update_page, delete_page, create_data_source, update_data_source, update_database, list_templates |
blocks | get, children, append, update, delete |
users | list, get, me, from_workspace |
workspace | info, search |
comments | list, get, create |
content_convert | markdown-to-blocks, blocks-to-markdown |
file_uploads | create, send, complete, retrieve, list |
help | Get full documentation for any tool |
Token Optimization
~77% token reduction via tiered descriptions:
| Tier | Purpose | When |
|---|---|---|
| Tier 1 | Compressed descriptions | Always loaded |
| Tier 2 | Full docs via help tool | On-demand |
| Tier 3 | MCP Resources | Supported clients |
{"name": "help", "tool_name": "pages"}
MCP Resources (Tier 3)
Clients that support MCP Resources can load full tool documentation:
| URI | Description |
|---|---|
notion://docs/pages | Pages tool docs |
notion://docs/databases | Databases tool docs |
notion://docs/blocks | Blocks tool docs |
notion://docs/users | Users tool docs |
notion://docs/workspace | Workspace tool docs |
notion://docs/comments | Comments tool docs |
notion://docs/content_convert | Content Convert tool docs |
notion://docs/file_uploads | File Uploads tool docs |
Build from Source
git clone https://github.com/n24q02m/better-notion-mcp
cd better-notion-mcp
mise run setup
bun run build
Requirements: Node.js 24+, bun
Compatible With
Also by n24q02m
| Server | Description | Install |
|---|---|---|
| wet-mcp | Web search, content extraction, library docs | uvx --python 3.13 wet-mcp@latest |
| mnemo-mcp | Persistent AI memory with hybrid search | uvx mnemo-mcp@latest |
| better-email-mcp | Email (IMAP/SMTP) for AI agents | npx -y @n24q02m/better-email-mcp@latest |
| better-godot-mcp | Godot Engine for AI agents | npx -y @n24q02m/better-godot-mcp@latest |
| better-telegram-mcp | Telegram Bot API + MTProto for AI agents | uvx --python 3.13 better-telegram-mcp@latest |
Contributing
See CONTRIBUTING.md
License
MIT - See LICENSE
관련 서버
Odoo MCP Improved
An enhanced MCP server for Odoo ERP with advanced tools for sales, purchases, inventory, and accounting.
iTop MCP Server
An MCP server for interacting with iTop ITSM systems via its REST API.
MIST
An AI assistant server for managing notes, Gmail, Calendar, Tasks, and Git.
Agent Collaboration
A dynamic server for managing multi-agent collaboration within tmux sessions, featuring flexible pane configurations and auto-detection.
Sequential Thinking
Dynamic and reflective problem-solving through thought sequences
MCP Email Verify
Validate email addresses using the AbstractAPI Email Validation API.
Directus Task MCP Server
Manage tasks in Directus with automatic schema synchronization.
Garmin Workouts MCP
Create Garmin Connect workouts using natural language.
Trello
Manage and interact with Trello boards, lists, and cards.
Confluence MCP
An MCP server that enables AI assistants to interact with Confluence content through a standardized interface.