Skip to main content
Glama

PowerPoint MCP Server

chart_tools.py3.12 kB
""" Chart data management tools for PowerPoint MCP Server. Implements advanced chart data manipulation capabilities. """ from typing import Dict, List, Optional, Any from pptx.chart.data import ChartData def register_chart_tools(app, presentations, get_current_presentation_id, validate_parameters, is_positive, is_non_negative, is_in_range, is_valid_rgb): """Register chart data management tools with the FastMCP app.""" @app.tool() def update_chart_data( slide_index: int, shape_index: int, categories: List[str], series_data: List[Dict], presentation_id: str = None ) -> Dict: """ Replace existing chart data with new categories and series. Args: slide_index: Index of the slide (0-based) shape_index: Index of the chart shape (0-based) categories: List of category names series_data: List of dictionaries with 'name' and 'values' keys presentation_id: Optional presentation ID (uses current if not provided) Returns: Dictionary with operation results """ try: # Get presentation pres_id = presentation_id or get_current_presentation_id() if pres_id not in presentations: return {"error": "Presentation not found"} pres = presentations[pres_id] # Validate slide index if not (0 <= slide_index < len(pres.slides)): return {"error": f"Slide index {slide_index} out of range"} slide = pres.slides[slide_index] # Validate shape index if not (0 <= shape_index < len(slide.shapes)): return {"error": f"Shape index {shape_index} out of range"} shape = slide.shapes[shape_index] # Check if shape is a chart if not hasattr(shape, 'has_chart') or not shape.has_chart: return {"error": "Shape is not a chart"} chart = shape.chart # Create new ChartData chart_data = ChartData() chart_data.categories = categories # Add series data for series in series_data: if 'name' not in series or 'values' not in series: return {"error": "Each series must have 'name' and 'values' keys"} chart_data.add_series(series['name'], series['values']) # Replace chart data chart.replace_data(chart_data) return { "message": f"Updated chart data on slide {slide_index}, shape {shape_index}", "categories": categories, "series_count": len(series_data), "series_names": [s['name'] for s in series_data] } except Exception as e: return {"error": f"Failed to update chart data: {str(e)}"}

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/GongRzhe/Office-PowerPoint-MCP-Server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server