notion-mcp
Provides tools for database management (get, query, create, update), page operations (get, create, update, duplicate from template), block manipulation (get children, append, update, delete), user lookup (list, get, get me), search, comments, and template-based page and database creation via Notion API.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@notion-mcp list pages in my project database"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
notion-mcp
MCP server with full Notion capabilities (23 tools)
npm: https://www.npmjs.com/package/@west10tech/notion-mcp
Available Tools
This MCP server provides 23 tools:
Database Tools
notion_get_database: Get database by ID
notion_query_database: Query database pages
notion_create_database: Create a new database
notion_update_database: Update database properties
Page Tools
notion_get_page: Get page by ID
notion_create_page: Create a new page
notion_update_page: Update page properties
notion_get_page_property: Get page property by ID
Block Tools
notion_get_block_children: Get block children
notion_append_block_children: Append blocks to a parent block
notion_get_block: Get block by ID
notion_update_block: Update block content
notion_delete_block: Delete a block
User Tools
notion_list_users: List all users
notion_get_user: Get user by ID
notion_get_me: Get current bot user
Search & Comments
notion_search: Search pages and databases
notion_create_comment: Create a comment on a page or block
notion_get_comments: Get comments for a page or block
Template Tools
notion_create_page_from_template: Create a new page by copying blocks from a template page
notion_create_database_from_template: Create a new database by copying schema from a template database
Duplication Tools
notion_duplicate_page: Duplicate an existing page with its content blocks
notion_duplicate_database: Duplicate an existing database with its schema
Related MCP server: @node2flow/notion-mcp
Installation
npm install @west10tech/notion-mcpEnvironment Setup
Create a .env file with the following variables:
NOTION_ACCESS_TOKEN=your_notion_access_token_hereGetting a Notion API Key
Click "New integration"
Give it a name (e.g. "MCP Server") and select the workspace
Under Capabilities, enable the permissions your integration needs (read content, update content, etc.)
Click Submit and copy the Internal Integration Secret — this is your
NOTION_ACCESS_TOKENImportant: Share pages/databases with your integration by clicking the
...menu on a page → Connections → select your integration
Usage
Running the server (stdio)
# Development mode
npm run dev
# Production mode
npm run build && npm startRunning with HTTP/SSE transport
# Start with HTTP transport
TRANSPORT_MODE=http PORT=3000 npm startEnvironment variables for HTTP mode:
Variable | Default | Description |
|
| Set to |
|
| HTTP server port |
|
| Allowed CORS origin |
HTTP endpoints:
POST /— MCP JSON-RPC messagesGET /health— Health check ({"status":"ok","server":"notion-mcp"})
Using with Claude Desktop
Add this to your Claude Desktop configuration:
{
"mcpServers": {
"notion-mcp": {
"command": "npx",
"args": ["@west10tech/notion-mcp"],
"env": {
"NOTION_ACCESS_TOKEN": "your_notion_access_token_here"
}
}
}
}Template & Duplication Workflows
Creating a page from a template
Use notion_create_page_from_template to copy the block structure of an existing page:
{
"template_page_id": "abc123...",
"parent": { "page_id": "def456..." },
"title": "My New Page"
}This reads all blocks from the template page and creates a new page with the same content.
Creating a database from a template
Use notion_create_database_from_template to copy the property schema of an existing database:
{
"template_database_id": "abc123...",
"parent": { "page_id": "def456..." },
"title": "My New Database"
}Duplicating a page
Use notion_duplicate_page to create an exact copy of a page (properties + blocks):
{
"page_id": "abc123...",
"title": "Custom Title"
}If no title is provided, defaults to "Copy of {original title}". If no parent is provided, uses the same parent as the original.
Duplicating a database
Use notion_duplicate_database to copy a database's schema:
{
"database_id": "abc123...",
"title": "My Copy"
}Advanced Features
Request Cancellation
This MCP server supports request cancellation according to the MCP cancellation specification. Clients can cancel in-progress requests by sending a notifications/cancelled message with the request ID.
When a request is cancelled:
The server immediately stops processing the request
Any ongoing API calls are aborted
Resources are cleaned up
No response is sent for the cancelled request
Progress Notifications
The server supports progress notifications for long-running operations according to the MCP progress specification.
To receive progress updates:
Include a
progressTokenin your request metadataThe server will send
notifications/progressmessages with:Current progress value
Total value (when known)
Human-readable status messages
Progress is reported for:
Multi-step operations
Batch processing
Long-running API calls
Template and duplication operations
Example progress notification:
{
"method": "notifications/progress",
"params": {
"progressToken": "operation-123",
"progress": 45,
"total": 100,
"message": "Processing item 45 of 100..."
}
}TypeScript Types
All tool parameters are fully typed. Import types from @west10tech/notion-mcp/types:
GetDatabaseParams,QueryDatabaseParams,CreateDatabaseParams,UpdateDatabaseParamsGetPageParams,CreatePageParams,UpdatePageParams,GetPagePropertyParamsGetBlockChildrenParams,AppendBlockChildrenParams,GetBlockParams,UpdateBlockParams,DeleteBlockParamsListUsersParams,GetUserParamsSearchParams,CreateCommentParams,GetCommentsParamsCreatePageFromTemplateParams,CreateDatabaseFromTemplateParamsDuplicatePageParams,DuplicateDatabaseParamsToolResponse
Available Tools
23 toolsnotion_append_block_childrenC
Append blocks to a parent block
Inputs: block_id (required), children (required).
notion_create_commentC
Create a comment on a page or block
Inputs: parent (required), rich_text (required).
notion_create_databaseC
Create a new database
Inputs: title (required), parent (required), properties (required), icon, +1 more.
notion_create_database_from_templateB
Create a new database by copying schema from a template database
Inputs: title (required), parent (required), template_database_id (required).
notion_create_pageB
Create a new page. Note: Creating pages directly in workspace root requires special permissions - use database or page parents instead.
Inputs: parent (required), icon, cover, children, +1 more.
notion_create_page_from_templateB
Create a new page by copying blocks from a template page
Inputs: parent (required), template_page_id (required), title, properties.
notion_delete_blockC
Delete a block
Inputs: block_id (required).
notion_duplicate_databaseB
Duplicate an existing database with its schema
Inputs: database_id (required), title, parent.
notion_duplicate_pageC
Duplicate an existing page with its content blocks
Inputs: page_id (required), title, parent.
notion_get_blockC
Get block by ID
Inputs: block_id (required).
notion_get_block_childrenC
Get block children
Inputs: block_id (required), page_size, start_cursor.
notion_get_commentsC
Get comments for a page or block
Inputs: block_id (required), page_size, start_cursor.
notion_get_databaseC
Get database by ID
Inputs: database_id (required).
notion_get_meB
Get current bot user
Inputs: no named parameters.
notion_get_pageC
Get page by ID
Inputs: page_id (required).
notion_get_page_propertyC
Get page property by ID
Inputs: page_id (required), property_id (required), page_size, start_cursor.
notion_get_userC
Get user by ID
Inputs: user_id (required).
notion_list_usersC
List all users
Inputs: page_size, start_cursor.
notion_query_databaseC
Query database pages
Inputs: database_id (required), sorts, filter, page_size, +1 more.
notion_searchC
Search pages and databases
Inputs: sort, query, filter, page_size, +1 more.
notion_update_blockC
Update block content
Inputs: block_id (required), pdf, code, file, +24 more.
notion_update_databaseD
Update database properties
Inputs: database_id (required), icon, cover, title, +1 more.
notion_update_pageC
Update page properties
Inputs: page_id (required), icon, cover, archived, +1 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 23 tools
Most tools map to distinct resources and actions, but the template/duplicate pairs (create_page_from_template vs duplicate_page, create_database_from_template vs duplicate_database) overlap in purpose, which could cause occasional misselection.
All tools use the same notion_ prefix and snake_case verb_noun pattern (e.g., notion_get_page, notion_update_block), making the set highly predictable.
23 tools cover a broad API but exceed the typical 3–15 range; while most tools are justified, the set feels heavy for a single MCP server.
Core CRUD for blocks and read/update for pages and databases are covered, but explicit delete/archive operations for pages and databases (and comment deletion) are absent, leaving some lifecycle gaps.
Maintenance
Related MCP Connectors
Hosted Notion MCP server for Claude, ChatGPT and Cursor, with each action switched per account.
MCP-native open-source Notion alternative: read & write pages, databases and kanban boards.
An MCP server that integrates with Discord to provide AI-powered features.
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
Related MCP Servers
- -licenseNot gradedqualityNot gradedmaintenanceAn MCP server that enables natural language interaction with the Notion API, allowing users to search, comment, create pages, and access content within their Notion workspace.265,848 npm-
- AlicenseNot gradedqualityDmaintenanceMCP server for the Notion API, enabling management of pages, blocks, databases, data sources, comments, and users through natural language.11 npm3MIT
- AlicenseAqualityDmaintenanceAn MCP server that provides AI assistants with full access to Notion workspaces, enabling search, read, create, and update pages, databases, and blocks.138 npmMIT
- FlicenseBqualityDmaintenanceEnhanced Notion MCP server supporting all 24 property types, auto-pagination, block operations, and markdown conversion for database and page operations.191-