Notion MCP Server V2 ๐
A comprehensive Model Context Protocol (MCP) server for Notion integration with enhanced functionality, robust error handling, production-ready features, and bulletproof validation.
โจ Features
๐ง Core Operations
- โ Search: Find pages and databases with advanced filtering
- โ Page Operations: Create, read, update pages with full content support
- โ Content Management: Add paragraphs, headings, bullet points, todos, links, and bookmarks
- โ Database Operations: List and query databases
๐ Advanced Content Types (NEW)
- โ Bookmarks: Add external website links with URL validation
- โ Link to Page: Create internal links between Notion pages
- โ Rich Content: Support for all major Notion block types
- โ Content Splitting: Automatic handling of long content (2000+ chars)
๐ Analytics & Insights
- โ Workspace Analytics: Total pages, databases, recent activity
- โ Content Analytics: Structure analysis and metrics
- โ Activity Tracking: Recent edits and usage patterns
- โ Performance Metrics: Optimized with configurable timeouts
๐ Bulk Operations (OPTIMIZED)
- โ Smart Pagination: Prevents timeouts with configurable limits
- โ Bulk Content Addition: Add multiple content blocks at once
- โ Bulk Page Operations: Create and manage multiple pages
- โ Performance Controls: Optional block counts for faster responses
๐ API Interfaces
- โ FastAPI REST API: Production-ready HTTP endpoints
- โ Interactive CLI: Command-line interface for direct usage
- โ MCP Compatible: Full Model Context Protocol support
- โ Agent Integration: Unified endpoint for AI agents
๐ก๏ธ Production Features (ENHANCED)
- โ Bulletproof Validation: Comprehensive input validation and error handling
- โ Configuration Management: Environment-based settings
- โ Smart Error Recovery: Detailed error messages and recovery guidance
- โ Health Checks: Monitoring and status endpoints with feature detection
- โ Structured Logging: Configurable logging with performance insights
- โ CORS Support: Cross-origin resource sharing
- โ Timeout Optimization: Dynamic timeouts based on operation complexity
๐งช Testing & Quality (COMPREHENSIVE)
- โ 46KB Test Suite: 1,158 lines of comprehensive tests
- โ 13+ Test Categories: Core, content, bulk, links, analytics, edge cases
- โ Validation Testing: Tests for all error scenarios and edge cases
- โ Performance Testing: Timeout and optimization validation
- โ Detailed Reporting: JSON reports with timing and categorization
๐๏ธ Architecture
notion_mcp_server/
โโโ ๐ __init__.py # Package initialization
โโโ ๐ง config.py # Configuration management
โโโ ๐ api_serverV2.py # FastAPI REST API server (49KB)
โโโ ๐ป serverV2.py # Interactive CLI server
โโโ โ๏ธ core_operations.py # Basic CRUD operations
โโโ ๐ analytics_operations.py # Analytics and metrics
โโโ ๐ bulk_operations.py # Bulk processing
โโโ โ๏ธ update_operations.py # Content updates (35KB)
โโโ ๐ ๏ธ notion_utils.py # Utility functions
โโโ ๐งช test_server.py # Comprehensive test suite (48KB)
โโโ ๐ README.md # This file
๐ฆ Installation
Prerequisites
- Python 3.8+
- Notion account with integration token
- pip or conda package manager
Setup
- Install Dependencies
pip install notion-client fastapi uvicorn python-dotenv pydantic requests
- Environment ConfigurationCreate a
.env
file in your project root:
# Required
NOTION_TOKEN=ntn_your_integration_token_here
# Optional Server Settings
HOST=0.0.0.0
PORT=8081
DEBUG=false
# Optional Feature Settings
MAX_PAGE_SIZE=100
DEFAULT_PAGE_SIZE=20
MAX_CONTENT_LENGTH=2000
ENABLE_ANALYTICS=true
ENABLE_BULK_OPERATIONS=true
# Optional Logging
LOG_LEVEL=INFO
- Get Your Notion Token
- Go to Notion Integrations
- Create a new integration
- Copy the token (starts with
ntn_
) - Share your pages/databases with the integration
๐ Usage
1. FastAPI Server (Production)
Start the server:
python -m notion_mcp_server.api_serverV2
Server will be available at:
- API:
http://localhost:8081
- Documentation:
http://localhost:8081/docs
- Health Check:
http://localhost:8081/health
2. Interactive CLI
python -m notion_mcp_server.serverV2
3. Python Integration
from notion_mcp_server import ComprehensiveNotionServer
import asyncio
async def example():
server = ComprehensiveNotionServer("your_notion_token")
await server.core_ops.search_content("search term")
asyncio.run(example())
๐ API Documentation
๐ Search Endpoint
POST /api/search
Content-Type: application/json
{
"query": "search term",
"page_size": 10
}
๐ Create Page
POST /api/page/create
Content-Type: application/json
{
"title": "My New Page",
"content": "Initial content",
"parent_id": "optional-parent-page-id"
}
๐ Read Page
POST /api/page/read
Content-Type: application/json
{
"identifier": "page-id-or-title"
}
โ๏ธ Add Content (ENHANCED)
POST /api/page/add-content
Content-Type: application/json
{
"page_id": "page-id",
"content_type": "paragraph",
"content": "New paragraph content"
}
Supported content types:
paragraph
- Regular textheading_1
- Large headingheading_2
- Medium headingheading_3
- Small headingbulleted_list_item
- Bullet pointto_do
- Checkbox itembookmark
- External website link (NEW)link_to_page
- Internal page link (NEW)
๐ Link Content Types (NEW)
Add Bookmark (External Link):
POST /api/page/add-content
Content-Type: application/json
{
"page_id": "page-id",
"content_type": "bookmark",
"content": "OpenAI Website",
"url": "https://www.openai.com"
}
Add Link to Page (Internal Link):
POST /api/page/add-content
Content-Type: application/json
{
"page_id": "page-id",
"content_type": "link_to_page",
"content": "Link to related page",
"page_reference": "target-page-id-or-title"
}
๐ Bulk Content Addition (ENHANCED)
POST /api/page/bulk-add-content
Content-Type: application/json
{
"page_id": "page-id",
"items": [
{
"content_type": "heading_2",
"content": "Section Title"
},
{
"content_type": "paragraph",
"content": "Paragraph content"
},
{
"content_type": "bookmark",
"url": "https://example.com",
"content": "External Link"
},
{
"content_type": "link_to_page",
"page_reference": "other-page-id",
"content": "Internal Link"
},
{
"content_type": "to_do",
"content": "Task item",
"checked": false
}
]
}
๐ Analytics
POST /api/analytics
Content-Type: application/json
{
"type": "workspace"
}
Analytics types: workspace
, content
, activity
, database
๐ Bulk Operations (OPTIMIZED)
POST /api/bulk
Content-Type: application/json
{
"operation": "list",
"query": "{\"limit\": 10, \"include_block_counts\": false}"
}
Optimization options:
limit
: Number of pages to process (1-50)include_block_counts
: Whether to calculate block counts (slower)
Operations: list
, analyze
, create
๐ค Agent Integration
POST /api/agent/query
Content-Type: application/json
{
"action": "search",
"parameters": {
"query": "search term",
"page_size": 10
}
}
Available actions: search
, read_page
, create_page
, add_content
, bulk_add_content
, analytics
, bulk_operations
๐งช Testing (COMPREHENSIVE)
Run the comprehensive test suite:
# Start the server first
python -m notion_mcp_server.api_serverV2
# In another terminal, run tests
cd src/notion_mcp_server
python test_server.py
Test Coverage (1,158 lines, 13+ categories):
- โ Core Operations: Health checks, search, page creation/reading
- โ Content Addition: All content types including links and bookmarks
- โ Bulk Content: Multiple content blocks and optimization
- โ Link Functionality: Bookmark and link_to_page validation
- โ Analytics: All analytics types and performance
- โ Bulk Operations: Optimized pagination and limits
- โ Agent Integration: All agent query actions
- โ Edge Cases: Error handling, validation, timeouts
- โ Exception Handling: Network issues, invalid inputs
Test Features:
- ๐ฏ Detailed Reporting: Success rates, timing, categorization
- ๐ Performance Insights: Response times and bottlenecks
- ๐ JSON Reports: Exportable test results with timestamps
- ๐งน Cleanup Scripts: Automatic test data management
โ๏ธ Configuration
Environment Variables
Variable | Default | Description |
---|---|---|
NOTION_TOKEN |
(required) | Your Notion integration token |
HOST |
0.0.0.0 |
Server host address |
PORT |
8081 |
Server port |
DEBUG |
false |
Enable debug mode |
MAX_PAGE_SIZE |
100 |
Maximum results per page |
DEFAULT_PAGE_SIZE |
20 |
Default results per page |
MAX_CONTENT_LENGTH |
2000 |
Maximum content block length |
ENABLE_ANALYTICS |
true |
Enable analytics endpoints |
ENABLE_BULK_OPERATIONS |
true |
Enable bulk operations |
LOG_LEVEL |
INFO |
Logging level |
Configuration Validation
The server automatically validates all configuration on startup and provides clear error messages for invalid settings.
๐ง Integration Examples
With AI Agents
import requests
# Search for content
response = requests.post("http://localhost:8081/api/agent/query", json={
"action": "search",
"parameters": {"query": "project notes"}
})
# Create a new page with links
response = requests.post("http://localhost:8081/api/agent/query", json={
"action": "create_page",
"parameters": {
"title": "AI Generated Page",
"content": "This page was created by an AI agent"
}
})
# Add bookmark to page
response = requests.post("http://localhost:8081/api/agent/query", json={
"action": "add_content",
"parameters": {
"page_id": "page-id",
"content_type": "bookmark",
"content": "Useful Resource",
"url": "https://example.com"
}
})
With Your Chatbot
# Already integrated in your chatbot_agentic_v3.py!
# Enhanced with ALL new functions:
# Core functions
server.notion_search_content()
server.notion_read_page()
server.notion_create_page()
# Content addition with links
server.notion_add_paragraph()
server.notion_add_heading()
server.notion_add_bullet_point()
server.notion_add_todo()
# Smart content helpers
server.notion_add_structured_content() # Multi-section content
server.notion_add_smart_content() # AI-friendly content parsing
# Bulk operations
server.notion_bulk_create_pages()
server.notion_bulk_list_pages()
server.notion_bulk_analyze_pages()
# Analytics
server.notion_workspace_analytics()
server.notion_content_analytics()
server.notion_activity_analytics()
๐ Performance Features (ENHANCED)
- Async Operations: Non-blocking I/O for better performance
- Smart Timeouts: Dynamic timeouts (30s standard, 60s bulk, 45s analytics)
- Pagination Controls: Configurable limits to prevent timeouts
- Connection Pooling: Efficient Notion API connections
- Request Validation: Fast input validation and sanitization
- Error Recovery: Graceful handling of API failures
- Memory Efficient: Optimized for low memory usage
- Progress Yielding: Prevents blocking during bulk operations
๐ก๏ธ Security & Validation Features (BULLETPROOF)
- Token Validation: Automatic Notion token validation
- Input Sanitization: Protection against malicious input
- Comprehensive Validation: All content types validated
- Bookmark URLs must be valid HTTP/HTTPS
- Page references must exist
- Content length limits enforced
- Required fields validation
- Rate Limiting Ready: Framework for rate limiting (configurable)
- CORS Support: Secure cross-origin requests
- Environment Isolation: Secure environment variable handling
- HTTP Status Handling: Proper error code processing
๐ Error Handling (ENHANCED)
The server provides detailed error messages for all scenarios:
Validation Errors
- Missing URLs: "URL is required for bookmark content type"
- Invalid Page References: "Target page not found: page-name"
- Empty Content: "Content cannot be empty"
- Invalid Content Types: Clear list of supported types
API Errors
- Invalid Tokens: Clear guidance for token setup
- Missing Pages: Helpful suggestions for page access
- API Limits: Graceful handling of Notion API limits
- Network Issues: Automatic retry mechanisms
- Timeout Prevention: Smart limits and pagination
HTTP Status Codes
- 200: Successful operations
- 400: Validation errors (missing fields, invalid formats)
- 404: Resource not found (pages, invalid references)
- 500: Server errors (with detailed diagnostics)
- 503: Server not initialized
๐ Version History
V2.1.0 (Current) (MAJOR UPDATE)
- ๐ Link Functionality: Bookmarks and link_to_page support
- ๐ก๏ธ Bulletproof Validation: Comprehensive input validation
- โก Timeout Optimization: Fixed bulk operations with smart pagination
- ๐งช Enhanced Test Suite: 48KB comprehensive testing (1,158 lines)
- ๐ HTTP Status Handling: Proper error code processing in tests
- ๐ฏ Performance Controls: Configurable timeouts and limits
- ๐ Smart Content: AI-friendly content parsing helpers
V2.0.0 (Previous)
- โ Complete rewrite with enhanced features
- โ Configuration management system
- โ Basic test suite
- โ Production-ready error handling
- โ Bulk operations support
- โ Enhanced content management
- โ Agent integration endpoints
V1.0.0 (Legacy)
- โ Basic MCP server functionality
- โ Core operations (search, read, create)
- โ Simple CLI interface
๐ค Contributing
- Fork the repository
- Create a feature branch:
git checkout -b feature-name
- Make your changes with tests
- Run the comprehensive test suite:
python test_server.py
- Ensure all tests pass (aim for 90%+ success rate)
- Submit a pull request
Testing Requirements:
- All new features must include tests
- Validation scenarios must be covered
- Performance implications should be documented
- Error handling paths must be tested
๐ Support
If you encounter issues:
- Check Configuration: Ensure all environment variables are set correctly
- Verify Token: Make sure your Notion token is valid and has proper permissions
- Run Health Check: Visit
/health
endpoint to verify server status - Run Test Suite: Use
python test_server.py
to identify specific issues - Check Logs: Review server logs for detailed error messages
- Test Validation: Ensure your content meets validation requirements
Common Issues:
- Link validation errors: Ensure URLs start with http/https
- Timeout issues: Use pagination controls for large operations
- Page not found: Verify page sharing with integration
- Content too long: Content blocks limited to 2000 characters
๐ง Contact Information
For direct support or questions:
- ๐ฑ Phone: +918449035579
- ๐ง Email: [email protected]
- ๐จโ๐ป Developer: Ankit Malik
Feel free to reach out for:
- โ Technical support and troubleshooting
- โ Feature requests and suggestions
- โ Integration assistance
- โ Bug reports and issues
- โ Custom development needs
๐ License
This project is part of the Agentic Long-Term Memory system.
๐ Your Notion MCP Server V2.1 is bulletproof and production-ready!
โก New in V2.1:
- ๐ Link Support - Bookmarks and internal page links
- ๐ก๏ธ Bulletproof Validation - Comprehensive error prevention
- โก Timeout Optimization - Smart pagination and limits
- ๐งช 48KB Test Suite - Comprehensive testing and reporting
- ๐ฏ Performance Controls - Configurable timeouts and limits
๐ Quality Metrics:
- 1,158 lines of test coverage
- 13+ test categories including edge cases
- 90%+ success rate target for all operations
- Sub-5 second response times for optimized operations