PPTX MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@PPTX MCP Servercreate a 3-slide presentation about quarterly sales results"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
π PPTX MCP Server
A Model Context Protocol (MCP) server that enables AI assistants to create, edit, and manipulate PowerPoint presentations programmatically.
β¨ Features
Full PowerPoint Control - Create, read, and modify
.pptxfiles without needing PowerPoint installedAI-Native Design - Built specifically for LLMs to generate and edit presentations through structured JSON
Rich Formatting Support - Text styling, colors, alignment, bullets, shapes, and backgrounds
Template Workflows - Extract content from existing presentations, modify, and regenerate
Visual Debugging - Generate thumbnail grids to preview slides programmatically
Office XML Access - Direct access to underlying OOXML for advanced customization
Related MCP server: Office-PowerPoint-MCP
π Quick Start
1. Install
# Clone the repository
git clone https://github.com/YOUR_USERNAME/pptx-mcp-server.git
cd pptx-mcp-server
# Install the package
pip install -e .2. Configure Your MCP Client
Add to your MCP settings:
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"pptx": {
"command": "python",
"args": ["-m", "pptx_mcp_server"]
}
}
}Add to your MCP configuration:
{
"mcpServers": {
"pptx": {
"command": "python",
"args": ["-m", "pptx_mcp_server"]
}
}
}Specify the full path to your Python interpreter:
{
"mcpServers": {
"pptx": {
"command": "/path/to/your/python",
"args": ["-m", "pptx_mcp_server"]
}
}
}Examples:
Conda:
/Users/username/miniconda3/bin/pythonvenv:
/path/to/project/.venv/bin/python
3. Restart Your MCP Client
Restart Claude Desktop, Cursor, or your MCP client to load the server.
π¦ Requirements
Python 3.10+
Dependencies (installed automatically):
mcp- Model Context Protocol SDKpython-pptx- PowerPoint file manipulationPillow- Image processinglxml- XML parsingdefusedxml- Secure XML parsing
Optional (for thumbnails)
# macOS
brew install --cask libreoffice
brew install poppler
# Ubuntu/Debian
sudo apt-get install libreoffice poppler-utilsπ οΈ Available Tools
Tool | Description |
| Create new presentations from scratch |
| Extract text content with positions and formatting |
| Replace text using JSON specifications |
| Duplicate, delete, and reorder slides |
| Generate visual thumbnail grids |
| Extract Office files to editable XML |
| Rebuild Office files from XML |
| Validate document structure |
π Usage Examples
Create a New Presentation
{
"output_path": "/path/to/presentation.pptx",
"layout": "16:9",
"slides": [
{
"background": "#0f172a",
"shapes": [
{
"type": "textbox",
"left": 0.5,
"top": 3,
"width": 12,
"height": 1.5,
"text": "Welcome to My Presentation",
"font_size": 54,
"bold": true,
"color": "#ffffff",
"alignment": "center"
},
{
"type": "textbox",
"left": 0.5,
"top": 5,
"width": 12,
"height": 1,
"text": "Subtitle goes here",
"font_size": 24,
"color": "#94a3b8",
"alignment": "center"
}
]
},
{
"shapes": [
{
"type": "textbox",
"left": 0.5,
"top": 0.5,
"width": 12,
"height": 1,
"text": "Key Points",
"font_size": 36,
"bold": true
},
{
"type": "textbox",
"left": 0.5,
"top": 1.8,
"width": 12,
"height": 5,
"paragraphs": [
{"text": "First important point", "font_size": 24, "bullet": true},
{"text": "Second important point", "font_size": 24, "bullet": true},
{"text": "Third important point", "font_size": 24, "bullet": true}
]
}
]
}
]
}Supported shape types:
textbox- Text contentrectangle- Rectangle (can contain text)rounded_rectangle- Rounded cornersoval- Circle/ellipseimage- Image file (usepathproperty)line- Line connector
Supported layouts: 16:9, 4:3, widescreen, standard
Extract Text Inventory
Get all text content from an existing presentation:
{
"pptx_path": "/path/to/presentation.pptx"
}Returns structured JSON:
{
"slide-0": {
"shape-0": {
"left": 0.5,
"top": 1.0,
"width": 12.0,
"height": 1.5,
"paragraphs": [
{"text": "Title Text", "font_size": 44.0, "bold": true}
]
}
}
}Replace Text Content
Modify text in an existing presentation:
{
"pptx_path": "/path/to/template.pptx",
"output_path": "/path/to/output.pptx",
"replacements_json": {
"slide-0": {
"shape-0": [
{"text": "New Title", "font_size": 44, "bold": true}
]
}
}
}Rearrange Slides
Reorder, duplicate, or remove slides:
{
"template_path": "/path/to/template.pptx",
"output_path": "/path/to/output.pptx",
"slide_sequence": "0,2,2,1,3"
}0,2,2,1,3β Keep slide 0, duplicate slide 2, then slides 1 and 3Omit an index to delete that slide
Unpack/Pack for XML Editing
// Unpack to directory
{
"office_file": "/path/to/document.pptx",
"output_dir": "/path/to/unpacked"
}
// Pack back to file
{
"input_dir": "/path/to/unpacked",
"output_file": "/path/to/output.pptx"
}π§ Troubleshooting
Ensure you're using the correct Python environment:
# Check which Python pip uses
pip --version
# Install with specific Python
/path/to/python -m pip install -e .Verify the config file path is correct for your OS
Ensure JSON syntax is valid (no trailing commas)
Restart the MCP client completely
Check logs for errors
Install LibreOffice and poppler:
# macOS
brew install --cask libreoffice && brew install poppler
# Linux
sudo apt-get install libreoffice poppler-utilsEnsure the output paths are writable and parent directories exist.
π Project Structure
pptx-mcp-server/
βββ pyproject.toml # Package configuration
βββ README.md
βββ pptx_mcp_server/
βββ __init__.py
βββ server.py # MCP server implementation
βββ tools/
βββ __init__.py
βββ create.py # Create new presentations
βββ inventory.py # Extract text content
βββ replace.py # Text replacement
βββ rearrange.py # Slide manipulation
βββ thumbnail.py # Visual thumbnails
βββ ooxml.py # XML pack/unpack/validateπ€ Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Fork the repository
Create your feature branch (
git checkout -b feature/AmazingFeature)Commit your changes (
git commit -m 'Add some AmazingFeature')Push to the branch (
git push origin feature/AmazingFeature)Open a Pull Request
π Acknowledgments
Built with python-pptx
Uses the Model Context Protocol by Anthropic
Available Tools
8 toolsapply_text_replacementsA
Apply text replacements to a PowerPoint presentation using a JSON specification. The JSON should map slide/shape IDs to new paragraph content with formatting. All text shapes are cleared unless explicitly provided with new content.
| Name | Required | Description | Default |
|---|---|---|---|
| pptx_path | Yes | Path to the input PowerPoint file | |
| replacements_json | Yes | Path to JSON file with replacement specifications, or inline JSON string | |
| output_path | Yes | Path for the output PowerPoint file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well by disclosing key behavioral traits: it's a mutation operation (implied by 'Apply'), has destructive effects ('All text shapes are cleared unless explicitly provided'), and requires specific input format ('JSON specification mapping slide/shape IDs'). However, it doesn't mention error handling, permission requirements, or whether original files are preserved.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste: first establishes purpose and mechanism, second clarifies critical behavioral constraint. Front-loaded with essential information, no redundant phrasing, and appropriately sized for a 3-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 3 parameters, 100% schema coverage, but no annotations or output schema, the description is adequate but has gaps. It covers what the tool does and a key constraint (clearing behavior), but lacks information about return values, error conditions, or side effects on original files. Completeness is minimally viable but could be improved.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are well-documented in the schema. The description adds minimal value beyond schema by mentioning the JSON format purpose but doesn't provide additional syntax examples, format details, or constraints. Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Apply text replacements') and target resource ('PowerPoint presentation') with specific implementation details ('using a JSON specification'). It distinguishes from siblings like 'extract_text_inventory' (read-only) and 'rearrange_slides' (structural changes) by focusing on content modification with formatting preservation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when text content needs updating with formatting, but provides no explicit guidance on when to choose this tool over alternatives like 'create_presentation' (new file) or 'pack_office_document' (general packaging). It mentions the JSON specification requirement but doesn't clarify prerequisites or exclusion scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_presentationA
Create a new PowerPoint presentation from scratch. Accepts a JSON specification with slides, shapes, text content, and formatting. Supports text boxes, rectangles, ovals, images, and various text formatting options. Use this to create new presentations before using other tools to modify them.
| Name | Required | Description | Default |
|---|---|---|---|
| output_path | Yes | Path to save the new PowerPoint file (.pptx) | |
| layout | No | Slide layout: '16:9' (default), '4:3', 'widescreen', or 'standard' | 16:9 |
| slides | No | Array of slide specifications |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool creates presentations 'from scratch' and accepts a JSON specification, which implies a write operation but doesn't address permissions, error handling, or what happens if the output_path already exists. It mentions supported elements (text boxes, shapes, images) but lacks details on limitations or performance characteristics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured in two sentences: the first explains the core functionality and input format, the second provides usage guidance. Every word serves a purpose, with no redundant information or fluff, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a creation tool with no annotations and no output schema, the description adequately covers the basic purpose and usage context. However, it lacks details on behavioral aspects like error conditions, file overwriting behavior, or response format, which would be helpful given the tool's complexity and mutation nature. The high schema coverage compensates partially but not fully.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all parameters. The description adds minimal value beyond the schema, mentioning 'JSON specification with slides, shapes, text content, and formatting' and listing some supported elements, but doesn't provide additional syntax, constraints, or usage examples that aren't already in the parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Create a new PowerPoint presentation from scratch') and resource ('PowerPoint presentation'), distinguishing it from sibling tools like 'rearrange_slides' or 'apply_text_replacements' which modify existing presentations. It explicitly mentions creating presentations 'before using other tools to modify them,' establishing its unique role in the workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool ('to create new presentations before using other tools to modify them'), implying it's for initial creation rather than modification. However, it doesn't explicitly state when NOT to use it (e.g., for updating existing presentations) or name specific alternatives among the siblings, though the context makes the distinction reasonably clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_thumbnail_gridA
Create visual thumbnail grids from PowerPoint slides. Useful for quick visual analysis of presentation structure and layouts. For large presentations, multiple grid images are created automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| pptx_path | Yes | Path to the PowerPoint file | |
| output_prefix | No | Output prefix for image files (default: 'thumbnails') | thumbnails |
| cols | No | Number of columns in the grid (3-6, default: 5) | |
| outline_placeholders | No | Outline text placeholders with red borders |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It adds useful context about handling large presentations ('multiple grid images are created automatically'), which is not inferable from the input schema alone. However, it lacks details on output format (e.g., file types, naming conventions), permissions, or potential side effects like file system changes, leaving some behavioral aspects unclear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is highly concise and well-structured, consisting of only two sentences. The first sentence states the purpose and utility, and the second adds important behavioral context for large presentations. Every sentence earns its place without redundancy, making it easy to parse and front-loaded with key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (4 parameters, no output schema, no annotations), the description is reasonably complete. It covers the core purpose and a key behavioral trait. However, without an output schema, it does not explain return values or output details, and with no annotations, it misses safety or permission disclosures, leaving minor gaps in full contextual understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, providing clear documentation for all four parameters. The description does not add any parameter-specific semantics beyond what the schema already states, such as explaining the 'outline_placeholders' feature in more detail. Thus, it meets the baseline of 3 by not compensating unnecessarily but also not enhancing parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('create visual thumbnail grids'), the resource ('from PowerPoint slides'), and the purpose ('for quick visual analysis of presentation structure and layouts'). It distinguishes itself from sibling tools like 'extract_text_inventory' or 'rearrange_slides' by focusing on visual grid generation rather than text manipulation or slide reorganization.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool ('useful for quick visual analysis of presentation structure and layouts') and mentions a behavioral consideration for large presentations. However, it does not explicitly state when not to use it or name specific alternatives among the sibling tools, such as when text-based analysis might be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract_text_inventoryA
Extract structured text content from a PowerPoint presentation. Returns JSON with all text shapes, their positions, and formatting details. Useful for understanding presentation structure before making replacements.
| Name | Required | Description | Default |
|---|---|---|---|
| pptx_path | Yes | Path to the PowerPoint file (.pptx) | |
| output_path | No | Optional: Path to save the inventory JSON file | |
| issues_only | No | If true, only include shapes with overflow or overlap issues |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the output format (JSON with specific fields) and a key behavioral trait (extraction for understanding structure), but lacks details on error handling, performance, or permissions required. The description does not contradict any annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and output, followed by a concise usage note. Both sentences earn their place by providing essential information without redundancy, making it efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (3 parameters, no output schema, no annotations), the description is reasonably complete. It covers purpose, output format, and usage context, but could improve by addressing potential limitations or error cases. No output schema exists, so the description adequately explains return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description does not add any parameter-specific semantics beyond what the schema provides, such as explaining 'issues_only' in more detail. Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Extract structured text content'), resource ('from a PowerPoint presentation'), and output format ('Returns JSON with all text shapes, their positions, and formatting details'). It distinguishes from siblings like 'apply_text_replacements' by focusing on extraction rather than modification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool ('Useful for understanding presentation structure before making replacements'), which implicitly suggests it as a precursor to 'apply_text_replacements'. However, it does not explicitly state when not to use it or mention alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pack_office_documentA
Pack a directory back into an Office document (.docx, .pptx, .xlsx). Removes pretty-printing whitespace from XML before packing. Can optionally validate the document before saving.
| Name | Required | Description | Default |
|---|---|---|---|
| input_dir | Yes | Directory containing unpacked Office document | |
| output_file | Yes | Path for the output Office file | |
| validate | No | Validate the document after packing (requires LibreOffice) | |
| force | No | Skip validation and pack anyway |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the core behavior (packing with whitespace removal) and an optional feature (validation with LibreOffice requirement), but lacks details on error handling, performance implications, or what happens if validation fails. It does not contradict any annotations, but could be more comprehensive for a tool that modifies files.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the main purpose in the first sentence, followed by additional details in a logical flow. Every sentence earns its place by adding useful information (whitespace removal, optional validation), with no redundant or vague phrasing. It is appropriately sized for a tool with four parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (file transformation with optional validation), no annotations, and no output schema, the description is reasonably complete. It covers the core operation and key optional behavior, but could improve by mentioning output expectations or error cases. It adequately supports tool selection and basic invocation, though not fully exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds minimal value beyond the schema by implying the tool's purpose relates to the parameters, but does not provide additional semantics, constraints, or examples for parameter usage. Baseline 3 is appropriate as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Pack a directory back into an Office document') with precise resource types (.docx, .pptx, .xlsx) and distinguishes from sibling tools like 'unpack_office_document' by describing the reverse operation. It also mentions additional processing ('Removes pretty-printing whitespace from XML before packing') that further clarifies its unique purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool: after unpacking an Office document (implied by 'pack a directory back into') and when needing to create a valid Office file from unpacked content. However, it does not explicitly state when NOT to use it or name specific alternatives among siblings, such as when to use 'validate_office_document' separately versus the optional validation here.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rearrange_slidesB
Rearrange slides in a PowerPoint presentation. Can duplicate, delete, and reorder slides based on a sequence of indices. Slide indices are 0-based. The same index can appear multiple times to duplicate.
| Name | Required | Description | Default |
|---|---|---|---|
| template_path | Yes | Path to the template/input PowerPoint file | |
| output_path | Yes | Path for the output PowerPoint file | |
| slide_sequence | Yes | Comma-separated slide indices (0-based), e.g., '0,34,34,50,52' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explains the core functionality (rearranging, duplicating, deleting) and index format (0-based), but lacks critical details like whether the operation modifies the original file (it doesn't, based on separate input/output paths), error handling for invalid indices, or performance implications for large presentations. This leaves significant gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and front-loaded, with every sentence earning its place. The first sentence states the core purpose, the second explains capabilities, and the third clarifies technical detailsβall without redundancy or fluff. It efficiently communicates essential information in three sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description is incomplete. It covers the basic operation but misses important context like whether the tool is idempotent, what happens to the original file, error conditions, or output format. Given the complexity of slide manipulation and lack of structured safety hints, more behavioral details are needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters thoroughly. The description adds value by clarifying that slide indices are 0-based and can repeat for duplication, which provides context beyond the schema's technical definitions. However, it doesn't explain parameter interactions or edge cases, meeting the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('rearrange slides'), resource ('PowerPoint presentation'), and scope ('duplicate, delete, and reorder slides based on a sequence of indices'). It distinguishes itself from sibling tools like 'create_presentation' or 'apply_text_replacements' by focusing on slide manipulation rather than creation or content editing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an existing presentation), exclusions (e.g., not for creating new slides), or comparisons to siblings like 'create_presentation' for new files or 'extract_text_inventory' for analysis. Usage is implied but not explicitly defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unpack_office_documentA
Unpack an Office document (.docx, .pptx, .xlsx) to a directory. The XML files are pretty-printed for easy reading and editing. Use this to inspect or manually edit the raw XML structure.
| Name | Required | Description | Default |
|---|---|---|---|
| office_file | Yes | Path to the Office file (.docx, .pptx, or .xlsx) | |
| output_dir | Yes | Directory to extract contents to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It describes the tool's behavior (unpacking to a directory, pretty-printing XML) and purpose (inspection/editing), but lacks details on potential side effects (e.g., whether it overwrites existing files in the output directory), error handling, or performance considerations. It adds some value but is incomplete for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured with two sentences: the first states the action and output, and the second specifies the use case. Every sentence adds value without redundancy, making it easy to understand quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is moderately complete for a tool with 2 parameters and 100% schema coverage. It covers the purpose and basic behavior but lacks details on output format (e.g., directory structure), error cases, or integration with sibling tools. It's adequate but has clear gaps for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters ('office_file' and 'output_dir') with clear descriptions. The description adds no additional parameter semantics beyond what the schema provides, such as format details or constraints. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('unpack'), resource ('Office document'), and scope ('.docx, .pptx, .xlsx'), distinguishing it from sibling tools like 'pack_office_document' (which does the reverse) and 'extract_text_inventory' (which extracts text rather than raw XML). It specifies the output format (pretty-printed XML files) and the purpose (inspect or manually edit raw XML structure).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool ('to inspect or manually edit the raw XML structure'), but it does not explicitly state when not to use it or name alternatives. For example, it doesn't contrast with 'extract_text_inventory' for text extraction or 'validate_office_document' for validation, leaving some ambiguity in tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_office_documentA
Validate an unpacked Office document against XSD schemas. Checks XML well-formedness, namespace declarations, unique IDs, file references, content types, and schema compliance. Returns detailed error messages for any issues found.
| Name | Required | Description | Default |
|---|---|---|---|
| unpacked_dir | Yes | Path to unpacked Office document directory | |
| original_file | Yes | Path to original Office file for comparison | |
| verbose | No | Enable verbose output |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It describes the tool's behavior by listing what it checks and that it returns detailed error messages, which is useful. However, it lacks information on potential side effects (e.g., if it modifies files), performance aspects like rate limits, or error handling specifics, leaving some behavioral traits undisclosed for a validation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded, starting with the core action ('Validate an unpacked Office document') and following with specific checks and outcomes. Every sentence adds value without redundancy, and it efficiently conveys the tool's functionality in two concise sentences, making it easy to understand quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (validation with multiple checks) and no output schema, the description covers the purpose and what is validated but lacks details on return values beyond 'detailed error messages'. It does not specify output format or examples, which could be helpful. With no annotations and incomplete output information, it is adequate but has clear gaps in providing a full context for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the schema already documents all parameters (unpacked_dir, original_file, verbose) with descriptions. The description does not add any additional meaning or context beyond what the schema provides, such as explaining why 'original_file' is needed for comparison or detailing the format of verbose output. Thus, it meets the baseline for high schema coverage without compensating further.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('validate', 'checks') and resources ('unpacked Office document', 'XSD schemas'), and it distinguishes from siblings like 'unpack_office_document' or 'pack_office_document' by focusing on validation rather than file manipulation. It explicitly lists what is checked (XML well-formedness, namespace declarations, etc.), making the purpose highly specific and distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by mentioning it validates 'an unpacked Office document', suggesting it should be used after unpacking (e.g., with 'unpack_office_document'), but it does not explicitly state when to use this tool versus alternatives like 'apply_text_replacements' or provide exclusions. There is no clear guidance on prerequisites or scenarios where validation might be unnecessary, leaving usage context somewhat implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Most tools have distinct purposes focused on PowerPoint operations, but there is some overlap between pack_office_document and unpack_office_document with validate_office_document, as all three handle Office document file structures. However, their specific functions (packing, unpacking, validating) are clearly differentiated in descriptions, minimizing confusion.
All tool names follow a consistent verb_noun pattern using snake_case, such as apply_text_replacements, create_presentation, and extract_text_inventory. This uniformity makes the tool set predictable and easy to navigate for agents.
With 8 tools, the server is well-scoped for PowerPoint manipulation, covering creation, modification, extraction, and file handling. Each tool serves a clear purpose without redundancy, fitting the domain effectively.
The tool set provides comprehensive coverage for PowerPoint operations, including creation, text editing, slide management, and file handling. A minor gap exists in advanced formatting or animation tools, but core workflows are fully supported, allowing agents to perform most common tasks.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Generate, edit, merge, translate and PDF-convert PowerPoint (.pptx) over MCP. 8 tools.
Generate professional PowerPoint presentations from text, YouTube videos, or structured JSON data.β¦
Generate polished PowerPoint presentations from text prompts, YouTube videos, or structured outlinβ¦
Deterministic, fully editable PowerPoint from typed slide intents. 200+ layouts, brand templates.
Related MCP Servers
- AlicenseAqualityDmaintenanceCreates and manipulates PowerPoint presentations with capabilities for adding various slide types, generating images, and incorporating tables and charts through natural language commands.11144MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to programmatically create, manipulate, and analyze Microsoft PowerPoint presentations with advanced formatting and template management.4MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to create and manipulate PowerPoint presentations programmatically, including adding slides, exporting to PDF, and reading metadata.795MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to create, modify, and manage PowerPoint presentations programmatically using python-pptx.17
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/shjanjua/pptx-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server