MCP Server for PowerPoint manipulation using python-pptx
20 tools with complete schemas and descriptions, but significant quality gaps. All tools have basic descriptions (10-100 chars, mostly 50-80), but many lack depth on WHEN to use them or prerequisites. Schemas are present with typed parameters, but descriptions are generic and don't guide LLM selection. No error handling guidance, no recovery paths. Parameter descriptions are minimal (e.g., 'Index of the slide' repeated 50+ times). No mention of idempotency, side effects, or destructive consequences in tool descriptions. Naming is verb-first and clear (create_, add_, set_, delete_), which is good. However, composition issues: add_textbox, add_shape, add_image, add_table, add_chart all do similar things with overlapping parameters, LLM must reason about which to use. No batch operations despite agents likely calling add_textbox in loops. Global state management (presentations dict, current_presentation_id) is stateful and not documented in tool descriptions, forcing agents to track IDs manually.
Add bullet points to a placeholder.
Add a chart to a slide.
Add an image to a slide.
Add a shape to a slide.
Add a new slide to the presentation.
Add a table to a slide.
Add a textbox to a slide.
Create a new PowerPoint presentation.
Descriptions lack WHEN/WHY guidance. All 20 tools have 50-100 char descriptions stating WHAT they do but not WHEN to use them or prerequisites. E.g., 'Add a textbox to a slide' doesn't explain when to use add_textbox vs add_shape vs add_image. LLMs cannot disambiguate.
No error handling guidance in any tool. Destructive tools (delete_shape, delete_slide) have no confirmation step or dry-run. No recovery paths documented. LLM cannot know if a failure is retryable or fatal.
Parameter descriptions are generic and repeated. 'Index of the slide' appears 15+ times. No constraints documented (e.g., 'slide_index must be 0 to slide_count-1'). No guidance on valid ranges for left/top/width/height (inches? pixels?). LLM cannot validate inputs.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2026-07-28+ | v2 |
Delete a shape from a slide.
Delete a slide from the presentation.
Format text in a textbox or placeholder.
Get information about a presentation.
Get information about a specific slide.
Open an existing PowerPoint presentation from a file.
Save a presentation to a file.
Set core document properties.
Set the fill color of a shape.
Set the line properties of a shape.
Set the title of a slide.
Set text in a table cell.
Composition issue: 8 tools (add_textbox, add_shape, add_image, add_table, add_chart, format_text, set_shape_fill, set_shape_line) all operate on shapes/content with overlapping parameters. No clear guidance on which to use when. LLM must reason about tool selection instead of following a clear pattern.
Stateful global state (presentations dict, current_presentation_id) not documented in tool descriptions. Agents must manually track presentation_id across calls. No guidance on what happens if presentation_id is omitted or invalid. Breaks idempotency and forces agents to maintain state.