get_slide_preview
Extract and preview detailed content of a specific slide from a PowerPoint file, enabling focused analysis or translation workflows within the PowerPoint Translator server.
Instructions
Get a detailed preview of a specific slide's content.
Args: input_file: Path to the PowerPoint file (.pptx) slide_number: Slide number to preview (1-based indexing)
Returns: Detailed preview of the slide content
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| input_file | Yes | ||
| slide_number | Yes |
Implementation Reference
- mcp_server.py:320-361 (handler)MCP tool handler for 'get_slide_preview'. Validates the input file path, creates PowerPointTranslator instance, fetches slide preview, and formats the response with additional context.@mcp.tool() def get_slide_preview(input_file: str, slide_number: int) -> str: """ Get a detailed preview of a specific slide's content. Args: input_file: Path to the PowerPoint file (.pptx) slide_number: Slide number to preview (1-based indexing) Returns: Detailed preview of the slide content """ try: # Validate input file using helper function input_path, error_msg = validate_input_path(input_file) if error_msg: return error_msg # Create translator and get preview translator = PowerPointTranslator() slide_count = translator.get_slide_count(str(input_path)) if slide_number < 1 or slide_number > slide_count: return f"❌ Error: Invalid slide number {slide_number}. Valid range: 1-{slide_count}" preview = translator.get_slide_preview(str(input_path), slide_number, max_chars=500) return f"""📄 Slide {slide_number} Preview 📁 File: {input_path} 📊 Total slides: {slide_count} 📝 Content preview: {preview} 💡 To translate this slide: translate_specific_slides("{input_file}", "{slide_number}")""" except Exception as e: logger.error(f"Failed to get slide preview: {str(e)}") return f"❌ Failed to get slide preview: {str(e)}"
- Core helper method in PowerPointTranslator class that implements the slide preview logic by loading the PPTX, collecting text from shapes and notes using SlideTextCollector, concatenating them, truncating to max_chars, and returning the preview string.def get_slide_preview(self, input_file: str, slide_number: int, max_chars: int = 200) -> str: """Get a preview of text content from a specific slide""" try: Presentation = self.deps.require('pptx') prs = Presentation(input_file) if slide_number < 1 or slide_number > len(prs.slides): raise ValueError(f"Invalid slide number: {slide_number}. Valid range: 1-{len(prs.slides)}") slide = prs.slides[slide_number - 1] # Convert to 0-based index text_items, notes_text = SlideTextCollector().collect_slide_texts(slide) # Collect all text content all_texts = [] for item in text_items: if item['text'].strip(): all_texts.append(item['text'].strip()) if notes_text and notes_text.strip(): all_texts.append(f"[Notes: {notes_text.strip()}]") # Join and truncate if necessary preview = " | ".join(all_texts) if len(preview) > max_chars: preview = preview[:max_chars] + "..." return preview if preview else "[No text content found]" except Exception as e: logger.error(f"❌ Failed to get slide preview: {str(e)}") raise
- mcp_server.py:320-320 (registration)FastMCP tool registration decorator for the get_slide_preview tool.@mcp.tool()