notion-mcp
MCP server with 23 tools for full Notion integration, enabling database, page, block, user, search, comment, template, and duplication operations through natural language.
README
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
Installation
npm install @west10tech/notion-mcp
Environment Setup
Create a .env file with the following variables:
NOTION_ACCESS_TOKEN=your_notion_access_token_here
Getting a Notion API Key
- Go to https://www.notion.so/my-integrations
- 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_TOKEN - Important: 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 start
Running with HTTP/SSE transport
# Start with HTTP transport
TRANSPORT_MODE=http PORT=3000 npm start
Environment variables for HTTP mode:
| Variable | Default | Description |
|---|---|---|
TRANSPORT_MODE |
stdio |
Set to http for HTTP/SSE transport |
PORT |
3000 |
HTTP server port |
CORS_ORIGIN |
* |
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 metadata - The 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
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.