notion api mcp
Enables advanced todo list management and content organization using Notion's API, supporting features like creating databases, dynamic filtering, and collaborative task tracking.
Enables advanced todo list management and content organization using Notion's API, supporting features like creating databases, dynamic filtering, and collaborative task tracking.
A Model Context Protocol (MCP) server that provides advanced todo list management and content organization capabilities through Notion's API. MCP enables AI models to interact with external tools and services, allowing seamless integration with Notion's powerful features.
Python-based MCP server that enables AI models to interact with Notion's API, providing: - Todo Management: Create, update, and track tasks with rich text, due dates, priorities, and nested subtasks - Database Operations: Create and manage Notion databases with custom properties, filters, and views - Content Organization: Structure and format content with Markdown support, hierarchical lists, and block operations - Real-time Integration: Direct interaction with Notion's workspace, pages, and databases through clean async implementation
# Clone and setup
git clone https://github.com/yourusername/notion-api-mcp.git
cd notion-api-mcp
uv venv && source .venv/bin/activate
# Install and configure
uv pip install -e .
cp .env.integration.template .env
# Add your Notion credentials to .env:
# NOTION_API_KEY=ntn_your_integration_token_here
# NOTION_PARENT_PAGE_ID=your_page_id_here # For new databases
# NOTION_DATABASE_ID=your_database_id_here # For existing databases
# Run the server
python -m notion_api_mcp
NOTION_API_KEY
You'll need either a parent page (for creating new databases) or an existing database ID:
https://notion.so/myworkspace/123456abcdef...
, the ID is 123456abcdef...
NOTION_PARENT_PAGE_ID
https://notion.so/myworkspace/123456abcdef...?v=...
, the ID is 123456abcdef...
NOTION_DATABASE_ID
Create virtual environment:
cd notion-api-mcp
uv venv
source .venv/bin/activate # On Windows: .venvScriptsactivate
Install dependencies:
uv pip install -e .
Configure environment:
cp .env.integration.template .env
Edit .env with your Notion credentials:
NOTION_API_KEY=ntn_your_integration_token_here
# Choose one or both of these depending on your needs:
NOTION_PARENT_PAGE_ID=your_page_id_here # For creating new databases
NOTION_DATABASE_ID=your_database_id_here # For working with existing databases
IMPORTANT: While the server supports both .env files and environment variables, Claude Desktop specifically requires configuration in its config file to use the MCP.
Add to Claude Desktop's config (~/Library/Application Support/Claude/claude_desktop_config.json
):
{
"mcpServers": {
"notion-api": {
"command": "/path/to/your/.venv/bin/python",
"args": ["-m", "notion_api_mcp"],
"env": {
"NOTION_API_KEY": "ntn_your_integration_token_here",
// Choose one or both:
"NOTION_PARENT_PAGE_ID": "your_page_id_here",
"NOTION_DATABASE_ID": "your_database_id_here"
}
}
}
}
Note: Even if you have a .env file configured, you must add these environment variables to the Claude Desktop config for Claude to use the MCP. The .env file is primarily for local development and testing.
The server uses modern Python async features throughout: - Type-safe configuration using Pydantic models - Async HTTP using httpx for better performance - Clean MCP integration for exposing Notion capabilities - Proper resource cleanup and error handling
The server includes comprehensive logging: - Console output for development - File logging when running as a service - Detailed error messages - Request/response logging at debug level
Set PYTHONPATH
to include the project root when running directly:
PYTHONPATH=/path/to/project python -m notion_api_mcp
Planned enhancements: 1. Performance Optimization - Add request caching - Optimize database queries - Implement connection pooling
Advanced search capabilities
Developer Experience
Performance monitoring
Testing Enhancements