Notion MCP Server V2
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 requestsEnvironment Configuration Create a
.envfile 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=INFOGet 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_serverV2Server will be available at:
API:
http://localhost:8081Documentation:
http://localhost:8081/docsHealth Check:
http://localhost:8081/health
2. Interactive CLI
python -m notion_mcp_server.serverV23. 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.pyTest 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 |
| (required) | Your Notion integration token |
|
| Server host address |
|
| Server port |
|
| Enable debug mode |
|
| Maximum results per page |
|
| Default results per page |
|
| Maximum content block length |
|
| Enable analytics endpoints |
|
| Enable bulk operations |
|
| 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-nameMake your changes with tests
Run the comprehensive test suite:
python test_server.pyEnsure 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
/healthendpoint to verify server statusRun Test Suite: Use
python test_server.pyto identify specific issuesCheck 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: ankitmalik844903@gmail.com
๐จโ๐ป 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
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ankitmalik84/Agentic_Longterm_Memory'
If you have feedback or need assistance with the MCP directory API, please join our Discord server