Skip to main content
Glama
Hrithik-s-Raj

PptxGenJS MCP Server

PptxGenJS MCP Server

A production-ready Model Context Protocol (MCP) server that provides PowerPoint presentation creation capabilities through PptxGenJS. This allows any LLM to create, modify, and export PowerPoint presentations programmatically.

Features

  • Create Presentations: Generate new PowerPoint presentations with custom metadata

  • Manage Slides: Add and organize slides with various layouts

  • Rich Content: Add text, shapes, images, tables, and charts

  • Multiple Chart Types: Support for bar, line, pie, doughnut, area, and scatter charts

  • Flexible Formatting: Extensive formatting options for text, shapes, and other elements

  • File Export: Save presentations to .pptx format

  • Session Management: Maintain multiple presentations in memory simultaneously

Related MCP server: PptxGenJS MCP Server

Installation

npm install
npm run build

Usage

Development Mode

Run the server in development mode with auto-reload:

npm run dev

Production Mode

Build and run the compiled version:

npm run build
node dist/index.js

MCP Inspector

Test the server using the MCP Inspector:

npm run inspector

Available Tools

1. create_presentation

Create a new PowerPoint presentation.

Parameters:

  • id (optional): Custom presentation ID

  • title (optional): Presentation title

  • author (optional): Author name

  • subject (optional): Subject

  • company (optional): Company name

Returns: Presentation ID for subsequent operations

2. add_slide

Add a new slide to a presentation.

Parameters:

  • presentationId (required): The presentation ID

  • layout (optional): Slide layout name

Returns: Slide number

3. add_text

Add text to a slide with formatting options.

Parameters:

  • presentationId (required): The presentation ID

  • slideNumber (required): Target slide (1-based)

  • text (required): Text content

  • x, y, w, h: Position and size in inches

  • fontSize: Font size in points

  • bold, italic: Text styling

  • color: Text color (hex format)

  • align: Text alignment (left, center, right, justify)

4. add_shape

Add shapes to slides.

Parameters:

  • presentationId (required): The presentation ID

  • slideNumber (required): Target slide

  • shape (required): Shape type (rect, ellipse, roundRect, triangle, etc.)

  • x, y, w, h (required): Position and size

  • fill: Fill color (hex)

  • line: Line color (hex)

  • lineSize: Line thickness

5. add_image

Add images from file paths or URLs.

Parameters:

  • presentationId (required): The presentation ID

  • slideNumber (required): Target slide

  • path (required): File path or URL

  • x, y (required): Position

  • w, h (optional): Dimensions

6. add_table

Add tables with data.

Parameters:

  • presentationId (required): The presentation ID

  • slideNumber (required): Target slide

  • rows (required): 2D array of cell values

  • x, y, w, h: Position and size

7. add_chart

Add charts with data visualization.

Parameters:

  • presentationId (required): The presentation ID

  • slideNumber (required): Target slide

  • chartType (required): bar, line, pie, doughnut, area, scatter

  • data (required): Array of data series

  • x, y, w, h: Position and size

  • title: Chart title

8. save_presentation

Save presentation to file.

Parameters:

  • presentationId (required): The presentation ID

  • outputPath (required): Output file path (e.g., './output.pptx')

Returns: Full file path

9. list_presentations

List all active presentations in memory.

Returns: Array of presentation metadata

10. delete_presentation

Remove a presentation from memory.

Parameters:

  • presentationId (required): The presentation ID to delete

Integration with Claude Desktop

Add to your Claude Desktop configuration (claude_desktop_config.json):

{
  "mcpServers": {
    "pptxgenjs": {
      "command": "node",
      "args": ["/path/to/pptxgenjs-mcp-server/dist/index.js"]
    }
  }
}

Example Workflow

// 1. Create a presentation
const { presentationId } = await create_presentation({
  title: "Q4 Business Review",
  author: "John Doe",
  company: "Acme Corp"
});

// 2. Add a title slide
await add_slide({ presentationId });
await add_text({
  presentationId,
  slideNumber: 1,
  text: "Q4 Business Review",
  x: 1,
  y: 2,
  w: 8,
  h: 1,
  fontSize: 44,
  bold: true,
  align: "center"
});

// 3. Add a slide with a chart
await add_slide({ presentationId });
await add_chart({
  presentationId,
  slideNumber: 2,
  chartType: "bar",
  data: [
    {
      name: "Revenue",
      labels: ["Q1", "Q2", "Q3", "Q4"],
      values: [100, 120, 140, 160]
    }
  ],
  title: "Quarterly Revenue"
});

// 4. Save the presentation
await save_presentation({
  presentationId,
  outputPath: "./Q4-Review.pptx"
});

Architecture

  • index.ts: MCP server entry point with request handlers

  • presentation-manager.ts: Manages presentation lifecycle and state

  • tool-handler.ts: Implements tool execution logic

  • tools/index.ts: Tool definitions and schemas

Requirements

  • Node.js >= 18.0.0

  • TypeScript 5.x

  • MCP SDK 1.x

  • PptxGenJS 4.x

License

ISC

Contributing

Contributions are welcome! Please ensure all changes maintain backward compatibility and include appropriate tests.

Available Tools

10 tools
add_chartA

Add a chart (bar, line, pie, etc.) to a slide with data.

ParametersJSON Schema
NameRequiredDescriptionDefault
hNoHeight in inches (default: 4)
wNoWidth in inches (default: 8)
xNoX position in inches (default: 1)
yNoY position in inches (default: 1)
dataYesArray of data series objects with name, labels, and values
titleNoChart title
chartTypeYesChart type (bar, line, pie, doughnut, area, scatter)
slideNumberYesSlide number (1-based index)
presentationIdYesThe ID of the presentation

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description bears the full burden of behavioral disclosure. It states the action ('Add a chart') and input data, but does not mention side effects (e.g., modifies the presentation, appends to slide), permissions, mutability, or what the response contains. For a mutation tool without annotations, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler words. It efficiently communicates the core purpose and is easily scannable, matching the standard for concise tool descriptions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Even though the schema is rich, the description lacks behavioral context and usage guidance. It does not mention prerequisites (e.g., existing presentation/slide), whether the chart is appended or replaces content, or any return value. With no annotations and no output schema, the description is insufficient for a 9-parameter mutation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema fully describes all 9 parameters (100% coverage), so the description does not need to repeat them. It adds slight value by enumerating chartType options and mentioning 'data', but this is largely redundant with the schema. The baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies the action ('Add') and resource ('a chart ... to a slide'), and lists example chart types (bar, line, pie). This distinguishes it well from sibling tools like add_text, add_shape, add_image, and add_table, which target different slide element types.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Although it does not explicitly state when-not-to-use or name alternatives, the context is clear: use this tool when a chart needs to be added to a slide. The sibling tool names reinforce the differentiation, providing enough contextual guidance for basic selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_imageA

Add an image to a slide from a file path or URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
hNoHeight in inches
wNoWidth in inches
xYesX position in inches
yYesY position in inches
pathYesFile path or URL to the image
slideNumberYesSlide number (1-based index)
presentationIdYesThe ID of the presentation

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full responsibility for behavioral disclosure. It only mentions the ability to add from file path or URL, but does not disclose side effects, permissions, return values, or constraints like required parameters or error behavior. This is insufficient 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that conveys the core purpose without any filler. It is concise and directly to the point, earning a high score for efficiency.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 7 parameters fully described in the schema and no output schema. The description is minimal but covers the core action. However, without annotations or additional behavioral context, the description is only minimally complete for an agent to invoke correctly. The schema helps but does not compensate for the lack of behavioral guidance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all parameters are documented in detail. The description mentions 'file path or URL,' which is already in the path parameter's schema description, adding no new semantic value. Baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Add an image to a slide from a file path or URL.' This uses a specific verb and resource, and distinguishes it from sibling tools like add_text and add_shape by focusing on image addition with explicit input sources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied but not explicitly stated. The description tells you what the tool does, but does not provide when-to-use vs. alternatives or any exclusions. The context is clear enough for an agent to infer it is for images, but lacks explicit guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_shapeB

Add a shape to a slide (rectangle, circle, triangle, etc.)

ParametersJSON Schema
NameRequiredDescriptionDefault
hYesHeight in inches
wYesWidth in inches
xYesX position in inches
yYesY position in inches
fillNoFill color (hex format)
lineNoLine color (hex format)
shapeYesShape type (e.g., 'rect', 'ellipse', 'roundRect', 'triangle')
lineSizeNoLine thickness in points
slideNumberYesSlide number (1-based index)
presentationIdYesThe ID of the presentation

TDQS

B3.3/5.0
Behavior2/5

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 only that a shape is added, but not behavioral details such as whether it modifies the slide in-place, what the return value is, or any permissions/effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no redundant words. It effectively communicates the core function.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The schema is rich and covers all parameters, making the tool minimally invocable. However, the description lacks any mention of output, default behaviors, or usage timing. For a 10-parameter tool with no output schema, this is adequate but has clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the input schema already documents all parameters. The description adds slight value by giving natural-language shape examples (rectangle, circle) but does not enrich the parameter meanings beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (add) and resource (shape to a slide) with explicit shape examples (rectangle, circle, triangle). This distinguishes it from sibling tools like add_text or add_image.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 does not mention exclusions, prerequisites, or situations where add_image/add_text 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.

add_slideA

Add a new slide to an existing presentation. Returns the slide number.

ParametersJSON Schema
NameRequiredDescriptionDefault
layoutNoLayout name (e.g., 'LAYOUT_TITLE', 'LAYOUT_BLANK')
presentationIdYesThe ID of the presentation

TDQS

A3.7/5.0
Behavior2/5

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 does state the return value (slide number), but it omits important details for a mutation tool, such as whether changes are automatically saved (a sibling tool save_presentation hints it might need an explicit save) or what happens if the presentation doesn't exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences, front-loaded with the core action and the primary return value. Every word earns its place with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (2 params, no output schema), and the description does mention the return value. However, it lacks context about side effects or persistence, which could be significant given the sibling tool save_presentation. The description is adequate for a basic add operation but leaves potential workflow details unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides 100% coverage for both parameters (presentationId and layout), so the description does not need to add parameter details. The baseline of 3 applies because the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (add), the resource (a new slide), and the target (an existing presentation). This distinguishes it from sibling tools like create_presentation (which creates a whole presentation) and add_text/add_shape (which add content to an existing slide).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'to an existing presentation' provides clear context that this tool is for modifying an already-created presentation, implying it is not for creating presentations. However, it does not explicitly mention alternatives or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_tableA

Add a table to a slide with rows and columns of data.

ParametersJSON Schema
NameRequiredDescriptionDefault
hNoHeight in inches (default: 4)
wNoWidth in inches (default: 8)
xNoX position in inches (default: 1)
yNoY position in inches (default: 1)
rowsYesArray of rows, where each row is an array of cell values
slideNumberYesSlide number (1-based index)
presentationIdYesThe ID of the presentation

TDQS

A3.5/5.0
Behavior2/5

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. The description only states the core action without revealing side effects, such as whether the table is inserted at default coordinates, whether it replaces existing content, or if any permissions are required. It also does not specify what the function returns. This is a thin description with minimal transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that is front-loaded with the key verb and object. Every word adds value, with no filler or redundant content. It is perfectly sized for its purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has seven parameters and no output schema, the description is minimal but the schema covers parameter details. It does not, however, provide broader context such as how the table is positioned (e.g., relative to the slide coordinate system), whether it appends to existing content, or what happens after insertion. For a tool with this complexity, the description is adequate but not thorough—it leaves some contextual gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 seven parameters. The description adds nothing beyond the schema's parameter descriptions; it merely states the general purpose. Therefore, the description meets the baseline but does not enhance parameter understanding further.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action ('Add a table to a slide') with a specific resource (table). It distinguishes itself from sibling tools like add_text, add_shape, and add_chart by naming the table as the object. The verb is singular and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool (when you need a table on a slide) but provides no explicit guidance on when to use it versus alternatives like add_chart or add_text, nor does it mention any exclusions or prerequisites. It is sufficient for basic inference but lacks proactive direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_textC

Add text to a slide with various formatting options.

ParametersJSON Schema
NameRequiredDescriptionDefault
hNoHeight in inches (default: 1)
wNoWidth in inches (default: 8)
xNoX position in inches (default: 1)
yNoY position in inches (default: 1)
boldNoBold text
textYesThe text content to add
alignNoText alignment (left, center, right, justify)
colorNoText color (hex format like '363636')
italicNoItalic text
fontSizeNoFont size in points (default: 18)
slideNumberYesSlide number (1-based index)
presentationIdYesThe ID of the presentation

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits, but it only mentions 'various formatting options.' It does not explain side effects, whether text is added to an existing slide or creates a new element, or any positioning behavior, leaving 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with no filler. It is concise and front-loaded, though it could include more useful detail without becoming verbose, so it misses a perfect score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 12 parameters and no output schema, the description is too minimal. It does not explain coordinate systems, default behavior, or that it modifies an existing presentation. The schema explains individual parameters, but the overall usage context is incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides descriptions for 100% of the parameters, so the schema carries the full burden of explaining parameters. The description's mention of 'formatting options' adds marginal context beyond the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Add text') and the target ('to a slide'), making its purpose obvious. It indirectly differentiates from sibling tools like add_shape or add_image by focusing on text, but it does not explicitly name alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives such as add_shape or add_table. The description implies use for adding text but provides no contextual prerequisites or exclusions.

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. Returns a presentation ID that should be used for all subsequent operations.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoOptional custom ID for the presentation. If not provided, one will be generated.
titleNoTitle of the presentation
authorNoAuthor name
companyNoCompany name
subjectNoSubject of the presentation

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It adds the behavioral detail of returning a presentation ID for later use, which is valuable. However, it doesn't disclose potential side effects, permissions, persistence, or error handling, leaving gaps for a creation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no redundant words. It clearly states the core action and follows with the key return-value usage instruction.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple creation tool with a fully documented schema and clear sibling relationships, the description is sufficient. It explains the returned ID and how to use it in subsequent operations. Lacking annotations, it doesn't cover edge cases or authorization, so it's not a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, so each parameter is already fully documented. The description adds no additional parameter-specific guidance, so a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'create' with a clear resource 'PowerPoint presentation', distinguishing it from sibling tools like add_slide or delete_presentation. It also mentions the return value, which further clarifies its role.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'should be used for all subsequent operations' clearly implies this is the initial step for working with presentations, providing contextual guidance. It doesn't explicitly exclude alternatives, but the sibling list makes the tool's entry-point role obvious.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_presentationA

Delete a presentation from memory.

ParametersJSON Schema
NameRequiredDescriptionDefault
presentationIdYesThe ID of the presentation to delete

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full burden of behavioral disclosure. 'Delete a presentation from memory' states the action but does not disclose permanence, cascading effects on associated slides, or any confirmation/authorization requirements. This is a significant gap 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words, front-loading the verb and resource. It is appropriately sized for the tool's simplicity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter delete tool, the description and schema cover the essential purpose and parameter. However, the lack of behavioral context such as reversibility, side effects, or return behavior leaves it adequate but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides 100% coverage with the description 'The ID of the presentation to delete', so the description adds no additional parameter context. The parameter is straightforward and self-explanatory given the tool's purpose, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'Delete' and resource 'a presentation' with the qualifier 'from memory', clearly distinguishing it from sibling tools like create_presentation, save_presentation, and list_presentations. The action and target are unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no explicit guidance on when to use this tool versus alternatives. Usage is implied by the name and action, but there are no stated prerequisites, exclusions, or references to sibling tools, leaving the context inferable but not articulated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_presentationsA

List all active presentations in memory with their IDs and metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations, so description must carry burden. It states the read-only nature implicitly and specifies output (IDs and metadata), but lacks details about active definition or return format.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One concise sentence, front-loaded verb and resource, no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a zero-param read-only list tool; missing only detail about metadata fields but not critical given simple scope.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, baseline 4 per rubric; description correctly omits parameter details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb 'List', resource 'presentations', and scope 'active presentations in memory' clearly distinguish from siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied (to see existing presentations) but no explicit when/when-not or alternative guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

save_presentationA

Save the presentation to a file. Returns the full path where the file was saved.

ParametersJSON Schema
NameRequiredDescriptionDefault
outputPathYesOutput file path (e.g., './output/presentation.pptx')
presentationIdYesThe ID of the presentation

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must fully disclose behavior. It mentions the return value ('Returns the full path'), but does not state important traits such as whether the file is overwritten, whether directories are created, or whether the presentation must already exist. This is minimal disclosure for a write operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence that states the purpose and a key outcome. Every word contributes value; there is no redundant information or unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with two fully documented parameters and a straightforward return value, the description is largely sufficient. However, it lacks information about overwrite behavior and file format, which could be important for an agent. Given the low complexity, this is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides complete descriptions for both parameters (presentationId, outputPath), achieving 100% schema coverage. The description adds no additional parameter semantics, so it meets the baseline but does not exceed it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function with a specific verb and resource: 'Save the presentation to a file.' It distinguishes itself from sibling tools by describing a finalizing action rather than content creation or management, making its purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this tool is used after a presentation has been created and edited, but it provides no explicit guidance on when to use it versus alternatives like 'create_presentation' or 'list_presentations.' No prerequisites or exclusions are mentioned, which leaves some ambiguity for an agent deciding between tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 10 tool updatesv1.0.0
    • First observedadd_chart
    • First observedadd_image
    • First observedadd_shape
    • First observedadd_slide
    • First observedadd_table
    • First observedadd_text
    • First observedcreate_presentation
    • First observeddelete_presentation
    • First observedlist_presentations
    • First observedsave_presentation

TDQS

A3.7/5.0
Disambiguation5/5

Each tool targets a distinct resource and action: presentation lifecycle (create, save, list, delete) and slide content additions (text, shape, image, table, chart). There is no overlap or ambiguity between tool purposes.

Naming Consistency5/5

All tools follow a consistent verb_noun snake_case pattern (e.g., add_slide, create_presentation, list_presentations). Minor variation between 'add' and 'create' is still logically consistent and predictable.

Tool Count5/5

With 10 tools, the server is well-scoped for creating and saving PowerPoint presentations. Each tool covers a necessary aspect without redundancy, making the set manageable and purposeful.

Completeness4/5

The core workflow of creating a presentation, adding various content types, and saving is fully covered. However, there are minor gaps such as no ability to delete slides or update existing slide content, which would be useful for editing but are not critical for basic generation.

Maintenance

ActivityInactive
ResponsivenessNo issues

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

Related MCP Servers

Latest Blog Posts

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/Hrithik-s-Raj/PptxGenJS-mcp-server'

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