- Add comprehensive pagination infrastructure based on MCP Playwright patterns - Integrate automatic pagination into convert_to_markdown tool for documents >25k tokens - Support cursor-based navigation with session isolation and security - Prevent MCP token limit errors for massive documents (200+ pages) - Maintain document structure and context across paginated sections - Add configurable page sizes, return_all bypass, and intelligent token estimation - Enable seamless navigation through extremely dense documents that exceed limits by 100x
64 lines
2.3 KiB
Python
64 lines
2.3 KiB
Python
#!/usr/bin/env python3
|
|
"""Test pagination system for MCP Office Tools convert_to_markdown."""
|
|
|
|
import inspect
|
|
import sys
|
|
|
|
def test_pagination():
|
|
"""Test the pagination system integration."""
|
|
|
|
print("🔧 Testing MCP Office Tools Pagination Integration")
|
|
print("=" * 60)
|
|
|
|
try:
|
|
# Import the server components
|
|
from mcp_office_tools.server import app
|
|
from mcp_office_tools.mixins.word import WordMixin
|
|
from mcp_office_tools.pagination import DocumentPaginationManager, paginate_document_conversion
|
|
|
|
print("✅ Successfully imported all pagination components:")
|
|
print(" • DocumentPaginationManager")
|
|
print(" • paginate_document_conversion")
|
|
print(" • WordMixin with pagination")
|
|
|
|
# Check if WordMixin has the convert_to_markdown method
|
|
word_mixin = WordMixin()
|
|
convert_method = getattr(word_mixin, 'convert_to_markdown', None)
|
|
|
|
if convert_method:
|
|
print("✅ Found convert_to_markdown method")
|
|
|
|
# Check method signature for pagination parameters
|
|
sig = inspect.signature(convert_method)
|
|
pagination_params = []
|
|
for param_name, param in sig.parameters.items():
|
|
if param_name in ['limit', 'cursor_id', 'session_id', 'return_all']:
|
|
pagination_params.append(param_name)
|
|
|
|
print(f"✅ Pagination parameters found: {', '.join(pagination_params)}")
|
|
|
|
else:
|
|
print("❌ convert_to_markdown method not found")
|
|
return False
|
|
|
|
print("\n🎯 Pagination System Integration Complete!")
|
|
print("📊 Features:")
|
|
print(" • Automatic large document detection (>25k tokens)")
|
|
print(" • Cursor-based navigation through document sections")
|
|
print(" • Session-isolated pagination state")
|
|
print(" • Configurable page sizes and limits")
|
|
print(" • Bypass option for small documents")
|
|
print(" • Token estimation and response size management")
|
|
|
|
return True
|
|
|
|
except ImportError as e:
|
|
print(f"❌ Import error: {e}")
|
|
return False
|
|
except Exception as e:
|
|
print(f"❌ Unexpected error: {e}")
|
|
return False
|
|
|
|
if __name__ == "__main__":
|
|
success = test_pagination()
|
|
sys.exit(0 if success else 1) |