Search, create, and manage Notion workspace content through natural language.
🚀 Notion MCP Server
A powerful Model Context Protocol (MCP) server that connects AI assistants like Claude to your Notion workspace. Seamlessly search, create, and manage your Notion content through natural language conversations!
✨ What This Does
Transform your AI assistant into a Notion powerhouse! With this MCP server, you can:
- 🔍 Search through all your Notion pages and databases
- 📝 Create new pages, databases, and content
- ✏️ Update existing pages and properties
- 📊 Query databases with complex filters
- 🔗 Manage your entire Notion workspace through conversation
🎯 Quick Start
1. Prerequisites
- Python 3.8 or higher
- A Notion workspace
- Nango account (for OAuth authentication)
- Claude Desktop app (for AI integration)
2. Installation
# Clone or download the files
git clone <your-repo-url>
cd notion-mcp-server
# Install dependencies
uv sync
3. Notion Setup
Create a Notion Integration:
- Go to https://www.notion.so/my-integrations
- Click "New integration"
- Name it (e.g., "Claude MCP Integration")
- Select your workspace
- Set capabilities:
- ✅ Read content
- ✅ Insert content
- ✅ Update content
- Save and copy your integration token
Share Pages with Integration:
- Open any Notion page you want to access
- Click "Share" → "Invite"
- Select your integration
- Repeat for all pages/databases you want to use
4. Nango Setup (OAuth)
- Create Nango Account: https://nango.dev
- Add Notion Integration in your Nango dashboard
- Configure OAuth with your Notion integration credentials
- Get your Nango credentials (Base URL, Secret Key, Connection ID)
5. Environment Configuration
Create a .env file with your credentials:
# Nango OAuth Configuration
NANGO_BASE_URL=https://api.nango.dev
NANGO_SECRET_KEY=your_nango_secret_key_here
NANGO_CONNECTION_ID=your_connection_id_here
NANGO_INTEGRATION_ID=notion
# Optional: Direct Notion Token (if not using Nango)
# NOTION_TOKEN=your_direct_notion_token_here
6. Claude Desktop Configuration
Add this to your Claude Desktop configuration file:
On macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
On Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"notion": {
"command": "uvx",
"args": ["git+https://github.com/Shameerpc5029/notion-mcp.git"],
"env": {
"NANGO_BASE_URL": "https://api.nango.dev",
"NANGO_SECRET_KEY": "your_nango_secret_key",
"NANGO_CONNECTION_ID": "your_connection_id",
"NANGO_INTEGRATION_ID": "notion"
}
}
}
}
7. Test the Connection
# Test the server directly
python notion-mcp-server.py
# Or restart Claude Desktop and try asking:
# "Search my Notion for meeting notes"
# "Create a new task in my project database"
🛠️ Available Tools
| Tool | Description | Example Use |
|---|---|---|
notion_search |
Search across all content | "Find pages about project planning" |
notion_get_database |
Get database info | "Show me my tasks database structure" |
notion_query_database |
Query with filters | "Show incomplete tasks due this week" |
notion_create_database |
Create new databases | "Create a CRM database with contacts" |
notion_get_page |
Get page details | "Show me the content of my meeting notes" |
notion_create_page |
Create new pages | "Add a new task to my project database" |
notion_update_page |
Update existing pages | "Mark this task as completed" |
notion_get_block_children |
Get page content | "Read the content of this page" |
notion_append_blocks |
Add content to pages | "Add meeting notes to this page" |
notion_get_current_user |
Get integration info | "Check my Notion connection status" |
💬 Example Conversations with Claude
Once configured, you can have natural conversations like:
Task Management
You: "Show me all my incomplete tasks"
Claude: [Queries your tasks database and shows open items]
You: "Create a new task called 'Review MCP integration' due next Friday"
Claude: [Creates the task with proper due date]
You: "Mark the first task as completed"
Claude: [Updates the task status to Done]
Content Creation
You: "Create a meeting notes page for today's standup"
Claude: [Creates a new page with meeting template]
You: "Add action items from our discussion to that page"
Claude: [Appends bullet points with the action items]
Research & Organization
You: "Search for all pages mentioning 'API documentation'"
Claude: [Finds and lists relevant pages]
You: "Create a new database to track our API endpoints"
Claude: [Creates a structured database with relevant properties]
🔧 Troubleshooting
Common Issues
"Authentication Error"
- Check your
.envfile
Tools (10)
notion_searchSearch across all content in the Notion workspace.notion_get_databaseGet information about a specific database structure.notion_query_databaseQuery a database with complex filters.notion_create_databaseCreate new databases within Notion.notion_get_pageRetrieve details and properties of a specific page.notion_create_pageCreate new pages or add entries to a database.notion_update_pageUpdate existing page properties or status.notion_get_block_childrenRead the content blocks of a specific page.notion_append_blocksAdd new content blocks to an existing page.notion_get_current_userCheck integration info and connection status.Environment Variables
NANGO_BASE_URLrequiredBase URL for Nango OAuth APINANGO_SECRET_KEYrequiredSecret key from Nango dashboardNANGO_CONNECTION_IDrequiredSpecific connection ID for the Notion integrationNANGO_INTEGRATION_IDrequiredIdentifier for the integration (usually 'notion')NOTION_TOKENDirect Notion integration token (alternative to Nango)Configuration
{"mcpServers": {"notion": {"command": "uvx", "args": ["git+https://github.com/Shameerpc5029/notion-mcp.git"], "env": {"NANGO_BASE_URL": "https://api.nango.dev", "NANGO_SECRET_KEY": "your_nango_secret_key", "NANGO_CONNECTION_ID": "your_connection_id", "NANGO_INTEGRATION_ID": "notion"}}}}