Skip to main content
Glama

Notion MCP Server V2

by ankitmalik84
README.mdโ€ข17.3 kB
# 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 1. **Install Dependencies** ```bash pip install notion-client fastapi uvicorn python-dotenv pydantic requests ``` 2. **Environment Configuration** Create a `.env` file in your project root: ```env # 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 ``` 3. **Get Your Notion Token** - Go to [Notion Integrations](https://www.notion.so/profile/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:** ```bash 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 ```bash python -m notion_mcp_server.serverV2 ``` ### 3. Python Integration ```python 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** ```http POST /api/search Content-Type: application/json { "query": "search term", "page_size": 10 } ``` ### ๐Ÿ“„ **Create Page** ```http POST /api/page/create Content-Type: application/json { "title": "My New Page", "content": "Initial content", "parent_id": "optional-parent-page-id" } ``` ### ๐Ÿ“– **Read Page** ```http POST /api/page/read Content-Type: application/json { "identifier": "page-id-or-title" } ``` ### โœ๏ธ **Add Content** _(ENHANCED)_ ```http 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 text - `heading_1` - Large heading - `heading_2` - Medium heading - `heading_3` - Small heading - `bulleted_list_item` - Bullet point - `to_do` - Checkbox item - `bookmark` - External website link _(NEW)_ - `link_to_page` - Internal page link _(NEW)_ ### ๐Ÿ”— **Link Content Types** _(NEW)_ **Add Bookmark (External Link):** ```http 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):** ```http 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)_ ```http 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** ```http POST /api/analytics Content-Type: application/json { "type": "workspace" } ``` **Analytics types:** `workspace`, `content`, `activity`, `database` ### ๐Ÿ”„ **Bulk Operations** _(OPTIMIZED)_ ```http 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** ```http 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: ```bash # 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 ```python 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 ```python # 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 1. Fork the repository 2. Create a feature branch: `git checkout -b feature-name` 3. Make your changes with tests 4. Run the comprehensive test suite: `python test_server.py` 5. Ensure all tests pass (aim for 90%+ success rate) 6. 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: 1. **Check Configuration**: Ensure all environment variables are set correctly 2. **Verify Token**: Make sure your Notion token is valid and has proper permissions 3. **Run Health Check**: Visit `/health` endpoint to verify server status 4. **Run Test Suite**: Use `python test_server.py` to identify specific issues 5. **Check Logs**: Review server logs for detailed error messages 6. **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

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