Notion
FreeNot checkedMCP server for common Notion page workflows: search pages, inspect content, create structured pages, append rich blocks, and start documents from reusable templ
About
MCP server for common Notion page workflows: search pages, inspect content, create structured pages, append rich blocks, and start documents from reusable templates.
README
Status: beta
MCP server + human CLI for common Notion page workflows: search pages, inspect content, create structured pages, append rich blocks, and start documents from reusable templates.
Requirements
- Node.js 18+
- A Notion token with access to the target pages
- A Notion page shared with the integration when you want to create or update content
Install
From npm after publishing:
npm install -g @mcp/notion
From source:
git clone https://github.com/ftaricano/mcp-notion.git
cd mcp-notion
npm install
npm run build
Configure Notion Auth
Create a local environment file:
cp .env.example .env
Set NOTION_TOKEN in .env or in your MCP client environment. Do not commit .env.
Internal Integration Token
- Open https://www.notion.so/my-integrations.
- Create an internal integration.
- Copy the integration secret into
NOTION_TOKEN. - Share the target Notion pages with that integration.
OAuth Token
Notion OAuth apps can also provide an access token. This package does not run the OAuth browser authorization flow; pass the OAuth access token as NOTION_TOKEN after your OAuth app obtains it.
Use the smallest workspace/page access needed. If a token leaks, revoke or rotate it in Notion and remove it from local env files, shell profiles, CI secrets, and MCP client configs.
Quickstart
Check local config without calling Notion:
notion --env-file .env auth status
Test the token against Notion:
notion --env-file .env --timeout 10s auth test
List available MCP tools:
notion list
Search pages:
notion --env-file .env search_pages --query "Release notes" --page_size=5
Create a page under a parent page:
notion --env-file .env create_page \
--parent_page_id=11111111-1111-1111-1111-111111111111 \
--title="Weekly Notes" \
--content="Draft agenda"
Create a formatted page from JSON:
notion --env-file .env create_rich_page --json '{
"parent_page_id": "11111111-1111-1111-1111-111111111111",
"title": "Project Overview",
"blocks": [
{ "type": "heading_1", "content": "Overview" },
{ "type": "paragraph", "content": "Current scope and next steps." },
{ "type": "to_do", "content": "Confirm milestones", "checked": false }
]
}'
MCP Client Setup
Use the built server entrypoint with any stdio MCP client:
{
"mcpServers": {
"notion": {
"command": "node",
"args": ["/absolute/path/to/mcp-notion/dist/index.js"],
"env": {
"NOTION_TOKEN": "your-token-from-a-secret-store",
"VALIDATE_TOKEN": "true",
"MAX_REQUESTS_PER_MINUTE": "60"
}
}
}
}
For local source checkouts, build before connecting:
npm run build
node dist/index.js
For installed npm packages, point your client at the mcp-notion binary when your runtime can resolve global npm bins.
CLI Reference
notion list
notion schema <tool>
notion auth status
notion auth test
notion <tool> --key=value [--other=value]
notion <tool> --json '{"key":"value"}'
Global options:
--env-file <path>loads environment variables before running.--timeout <value>accepts values such as5000or10s.--compactprints JSON output on one line where supported.
Available MCP Tools
Core page operations:
search_pagesget_pageget_page_contentcreate_pageupdate_page
Rich content and templates:
create_rich_pagecreate_page_from_templateadd_content_blocks(appendonly)list_templatescreate_root_page
create_root_page requires NOTION_ROOT_PARENT_PAGE_ID or MCP_NOTION_ROOT_PARENT_PAGE_ID.
Runtime Guardrails
Environment variables:
NOTION_TOKEN- required for live Notion calls.VALIDATE_TOKEN=false- skips startup token validation for offline/local smoke tests.MAX_REQUESTS_PER_MINUTE=60- controls in-process request throttling.ENABLE_AUDIT_LOG=false- disables local operation audit logging.ALLOWED_PAGE_IDS=id1,id2- restricts operations to an allowlist.BLOCKED_PAGE_IDS=id3,id4- denies specific pages.NOTION_ROOT_PARENT_PAGE_ID=<page-id>- enablescreate_root_page.MCP_NOTION_ROOT_PARENT_PAGE_ID=<page-id>- compatibility alias for the same root parent.
Notion page IDs may use UUIDs with or without hyphens.
Templates
meeting_notesproject_plandocumentationarticleweekly_reportbug_report
Development
npm install
npm run build
npm run lint
npm run type-check
npm test
npm run pack:dry-run
npm run test:unit runs fast unit coverage. npm run test:integration verifies package metadata, security docs, and the npm pack file list.
Security
See SECURITY.md. The short version:
- keep real tokens out of git,
- use Notion workspace/page permissions to limit access,
- use
ALLOWED_PAGE_IDSandBLOCKED_PAGE_IDSfor runtime blast-radius control, - report vulnerabilities through GitHub Security Advisories.
MCP Hub Usage
If you use this server behind MCP Hub, see CLAUDE.md for hub-specific calling patterns and Portuguese examples.
License
Installing Notion
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/ftaricano/mcp-notionFAQ
Is Notion MCP free?
Yes, Notion MCP is free — one-click install via Unyly at no cost.
Does Notion need an API key?
No, Notion runs without API keys or environment variables.
Is Notion hosted or self-hosted?
A hosted option is available: Unyly runs the server in the cloud, no local setup required.
How do I install Notion in Claude Desktop, Claude Code or Cursor?
Open Notion on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
Notion
Read and write pages in your workspace
by NotionLinear
Issues, cycles, triage — from Claude
by LinearGoogle Drive
Search and read your Drive files
by Googlemindsdb/mindsdb
Connect and unify data across various platforms and databases with [MindsDB as a single MCP server](https://docs.mindsdb.com/mcp/overview).
by mindsdbfulcradynamics/fulcra-context-mcp
MCP server for accessing personal health and biometric data including sleep stages, heart rate, HRV, glucose, workouts, calendar, and location via the Fulcra Li
by fulcradynamicsaymericzip/intlayer
A MCP Server that enhance your IDE with AI-powered assistance for Intlayer i18n / CMS tool: smart CLI access, access to the docs.
by aymericziprinadelph/Agent-MCP
A framework for creating multi-agent systems using MCP for coordinated AI collaboration, featuring task management, shared context, and RAG capabilities.
by rinadelphWhenLabs-org/when
Developer toolkit: auto-detect stack for AI context files, catch port conflicts, validate .env schemas, spot docs drift, audit dependency licenses, and time cod
by WhenLabs-orgBeltran12138/wecom-docs-mcp-server
WeCom (Enterprise WeChat) document operations via MCP: create, read, and edit Docs and Smartsheets (9 tools). Fills the doc-CRUD gap — existing WeCom MCP server
by Beltran12138madbonez/caldav-mcp
Universal MCP server for CalDAV protocol integration. Works with any CalDAV-compatible calendar server including Yandex Calendar, Google Calendar (via CalDAV),
by madbonezCompare Notion with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All productivity MCPs
