Skip to main content
Glama

POM MCP Server

PowerPointプレゼンテーションをPOM (PowerPoint Object Model) 形式のXMLから生成するMCPサーバーです。

AIエージェント(Claude)が自然言語の指示から直接PowerPointファイルを作成できるようになります。

特徴

  • 🎨 宣言的なレイアウト: Flexbox風のレイアウトシステム(vstack/hstack)

  • 🤖 AI最適化: AIエージェントが自由にスライド構造を設計可能

  • 📐 型安全: TypeScriptとZodによるスキーマ検証

  • 🎓 組み込みガイド: AIがPOM形式を学習できるプロンプト機能

  • 🎯 シンプルなAPI: 2つのツールで完結

Related MCP server: PPTX MCP Server

セットアップ

必要要件

  • Node.js 18以上

  • Claude Desktop

インストール手順

1. プロジェクトディレクトリを作成

mkdir mcp-pom-pptx
cd mcp-pom-pptx

2. 依存関係のインストールとビルド

# srcディレクトリがない場合は作成
mkdir -p src

# 依存関係をインストール
npm install

# ビルド
npm run build

ビルドが成功すると dist/index.js が生成されます。

3. Claude Desktopに設定

~/Library/Application Support/Claude/claude_desktop_config.json を編集:

{
  "mcpServers": {
    "mcp-pom-pptx": {
      "command": "node",
      "args": [
        "/絶対パス/mcp-pom-pptx/dist/index.js"
      ]
    }
  }
}

使い方

基本的な使い方

Claude Desktopで以下のように話しかけるだけです:

「営業プレゼン用のPowerPointを作成してください。
1枚目: タイトルスライド(会社名: ABC株式会社、タイトル: 新製品提案)
2枚目: 製品の3つの特徴を箇条書きで
3枚目: 価格表(3プラン)

ファイル名は proposal.pptx で保存してください。」

Claudeが自動的に:

  1. POM形式のXMLを生成

  2. スライドレイアウトを設計

  3. PowerPointファイルを作成

より詳細な指示の例

「技術プレゼンを作成。
- スライドサイズ: 1920x1080
- 全体のテーマカラー: ダークブルー
- 5枚構成
  1. タイトル: システムアーキテクチャ
  2. 現状の課題(箇条書き3点)
  3. 提案ソリューション(2カラム比較)
  4. 実装ロードマップ(表形式)
  5. まとめ

tech-presentation.pptx として保存」

提供するツール

1. create_powerpoint

POM形式のXMLからPowerPointファイルを生成します。

パラメータ:

  • xml (必須): POM形式のXML文字列(複数の要素で複数スライドを指定)

  • outputPath (必須): 出力ファイルパス (.pptx)

  • width (オプション): スライド幅(デフォルト: 1280px)

  • height (オプション): スライド高さ(デフォルト: 720px)

2. create_powerpoint_from_template

テンプレート.pptxファイルの背景(背景色や画像)を継承して、POM形式のXMLからPowerPointファイルを生成します。

パラメータ:

  • templatePath (必須): テンプレートファイルのパス (.pptx)

  • xml (必須): POM形式のXML文字列

  • outputPath (必須): 出力ファイルパス (.pptx)

  • width (オプション): スライド幅(デフォルト: 1280px)

  • height (オプション): スライド高さ(デフォルト: 720px)

注意: テンプレートから背景(背景色や画像)のみが継承されます。レイアウトやスタイルはXMLで再定義してください。

3. validate-pom-slide

POM形式のXMLが正しい形式かどうかを検証します。

パラメータ:

  • xml (必須): 検証するPOM形式のXML文字列

提供するプロンプト

AIエージェントが自動的に参照する知識ベース:

1. get-pom-guide

POM形式の完全ガイド

  • 全ノードタイプの説明

  • プロパティの詳細

  • レイアウトのコツ

  • ベストプラクティス

2. get-slide-example

具体的なスライド作成例

  • タイトルスライド

  • コンテンツスライド(箇条書き)

  • 2カラム比較スライド

  • 表付きスライド

POM形式の概要

ノードタイプ

POMでは以下のXML要素(ノードタイプ)を組み合わせてスライドを構築します:

レイアウトノード(コンテナ):

  • VStack - 子要素を縦方向に並べる

  • HStack - 子要素を横方向に並べる

コンテンツノード:

  • Text - テキスト要素

  • Image - 画像要素

  • Table - 表要素

  • Shape - 図形要素(矩形、楕円など)

  • Ul / Ol - 箇条書き・番号付きリスト

簡単な例

タイトルスライド:

<Slide>
  <VStack w="100%" h="max" padding="50" gap="20" alignItems="center" justifyContent="center" backgroundColor="0F172A">
    <Text fontSize="60" bold="true" color="FFFFFF">プレゼンテーションタイトル</Text>
    <Text fontSize="30" color="E2E8F0">サブタイトル</Text>
  </VStack>
</Slide>

詳細な仕様は、Claudeが get-pom-guide プロンプトから自動的に学習します。

ディレクトリ構成

mcp-pom-pptx/
├── src/
│   └── index.ts          # メインコード
├── dist/                 # ビルド出力(自動生成)
│   └── index.js
├── package.json
├── tsconfig.json
└── README.md

ライセンス

MIT

クレジット

Available Tools

5 tools
create_powerpointB

【最優先で使用】ユーザーがPowerPointファイルの作成を要求した場合に使用します。POM形式のXMLを入力として、.pptxファイルを生成します。

ParametersJSON Schema
NameRequiredDescriptionDefault
xmlYesPOM形式のXML文字列。<Slide>要素で各スライドを定義。複数スライドの場合は複数の<Slide>要素を並べる。例: '<Slide><VStack w="100%" h="max" padding="50"><Text fontSize="48">タイトル</Text></VStack></Slide>'
widthNoスライドの幅(ピクセル)。デフォルト1280。16:9の場合は1280x720、4:3の場合は1024x768
heightNoスライドの高さ(ピクセル)。デフォルト720。16:9の場合は1280x720、4:3の場合は1024x768
outputPathYes生成するPowerPointファイルのパス。例: './presentation.pptx', 'C:/Users/Desktop/output.pptx'

TDQS

B3.4/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 only states the input (POM XML) and output (.pptx file), with no disclosure of side effects, error handling, return values, or permissions. This is minimal guidance 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, focused sentence that front-loads the priority use case and conveys the core function. There is no redundant information, making it highly concise and well-structured.

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?

Without annotations or an output schema, the description should explain return values or behavior, but it does not. It also does not mention related tools like get-pom-guide or validate-pom-slide. For a file-generation tool with four parameters, more detail is needed for full contextual completeness.

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%, with detailed descriptions and examples for all four parameters. The description itself adds no extra meaning beyond the schema, so it remains at the baseline of 3.

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 tool generates a .pptx file from POM-format XML, identifying the specific verb ('generate') and resource ('PowerPoint file'). However, it does not explicitly distinguish this from the sibling tool create_powerpoint_from_template, so it does not fully earn a 5.

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 description explicitly says '【最優先で使用】' (use with highest priority) and 'when the user requests creation of a PowerPoint file', giving clear when-to-use context. It does not mention exclusions or alternatives, so it misses the top score.

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

create_powerpoint_from_templateA

【テンプレート使用時】ユーザーが既存のPowerPointファイルをテンプレートとして使用する場合に使用します。テンプレートの背景(背景色や画像)を継承し、新しいスライドを生成します。

ParametersJSON Schema
NameRequiredDescriptionDefault
xmlYesPOM形式のXML文字列。<Slide>要素で各スライドを定義。複数スライドの場合は複数の<Slide>要素を並べる。
widthNoスライドの幅(ピクセル)。デフォルト1280
heightNoスライドの高さ(ピクセル)。デフォルト720
outputPathYes生成するPowerPointファイルのパス。例: './presentation.pptx'
templatePathYesテンプレートとして使用する.pptxファイルのパス。このファイルの背景(背景色や画像)が新しいプレゼンテーションに適用される。例: './template.pptx', 'C:/Users/templates/company_template.pptx'

TDQS

A3.6/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 that the template's background is inherited and new slides are generated, but omits other important behaviors such as whether existing files are overwritten, how the XML is validated, or what the return value is. For a file-creation tool with no annotations, this is insufficient.

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 immediately communicates the usage context and core behavior. Every clause earns its place with no unnecessary filler.

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?

Despite having 5 parameters, no annotations, and no output schema, the description is only one sentence. It covers the main purpose but lacks details about expected output, error handling, file overwrite behavior, or validation requirements. This is incomplete for a tool of this complexity.

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 baseline is 3. The description adds a small amount of meaning by explaining that templatePath's background is inherited, but this is already stated in the schema's parameter description. Thus the description contributes no significant semantic value beyond the schema.

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 creates a PowerPoint from an existing template, inheriting the template's background. The verb 'create...from_template' and the specific mention of template usage distinguish it from the sibling create_powerpoint tool.

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 description begins with '【テンプレート使用時】' meaning 'when using a template', explicitly indicating when this tool is appropriate. It does not mention exclusions or name the alternative create_powerpoint, but the context is clear enough for an agent to choose between the two.

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

get-pom-guideA

PowerPointスライドを作成する前に必ず実行してください。POM形式の完全な仕様、使用可能なノードタイプ(Text, VStack, HStack, Image, Table, Shape, Chart, Icon, Svg, Ul, Ol)、プロパティ、レイアウト方法を取得します。create_powerpointツールを使用する前に、この情報を参照する必要があります。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description must convey behavior, and it does by describing the tool as a retrieval action ('取得します') of the POM specification. It also enumerates the exact content returned (node types, properties, layout methods), making the read-only, informational nature clear.

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 compact and front-loaded with the mandatory action. It lists the covered node types in a single parenthetical and includes only relevant instruction and content information, with no filler.

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

Completeness5/5

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

For a 0-parameter guide-retrieval tool with no output schema, the description is complete: it specifies when to run it, what the guide contains, and its relationship to create_powerpoint. An agent has enough context to select and invoke it correctly.

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?

The tool has zero parameters and an empty properties schema, so there are no parameter details to document. The 0-param baseline of 4 applies, and the description appropriately focuses on content rather than parameter semantics.

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 states a clear action ('取得します') and a specific resource: the POM format specification along with node types, properties, and layout methods. It also ties the tool to the create_powerpoint workflow, which distinguishes it from sibling tools like get-slide-example and validate-pom-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 description explicitly instructs when to use the tool: 'PowerPointスライドを作成する前に必ず実行してください' and 'create_powerpointツールを使用する前に'. This is clear contextual guidance, though it does not mention exclusions or alternative tools for other use cases.

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

get-slide-exampleA

特定のタイプのスライドのサンプルXMLを取得します。実際に動作するXML例が含まれており、そのままcreate_powerpointに渡すことができます。タイトルスライド、コンテンツスライド、比較スライド、表スライドの例が利用可能です。

ParametersJSON Schema
NameRequiredDescriptionDefault
slide_typeNo取得するスライドタイプ: 'title'(タイトルスライド), 'content'(箇条書きスライド), 'comparison'(2カラム比較), 'table'(表を含むスライド)title

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It discloses that the XML is working and directly usable with create_powerpoint, but does not explicitly state whether the operation is read-only or has side effects, though '取得します' implies retrieval.

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?

Three concise sentences, front-loaded with the main purpose, followed by useful integration context and a list of supported types. No redundant or irrelevant content.

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 one-parameter getter with no output schema, the description provides enough context: what it does, what types are supported, and how the result is used. It doesn't detail XML structure, but that's not necessary given the 'pass to create_powerpoint' hint. Could mention error behavior for invalid slide_type, but enum constraints mitigate that.

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 covers 100% of the parameter with a detailed description and enum. The tool description simply repeats the available slide types in plain language, adding no extra meaning beyond what the schema already provides. 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 clearly states it retrieves sample XML for specific slide types, with a specific verb ('取得します') and resource (slide XML). It also mentions integration with create_powerpoint, distinguishing its purpose from sibling tools like validate-pom-slide and create_powerpoint.

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?

Provides clear context: use when you need a working sample XML to pass to create_powerpoint. It lists available slide types, but doesn't explicitly mention when not to use it or name alternative sibling tools.

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

validate-pom-slideA

【任意】POM形式のXMLを作成した後、PowerPoint生成前に構文エラーがないか確認する場合に使用します。

ParametersJSON Schema
NameRequiredDescriptionDefault
xmlYes検証するPOM形式のXML文字列。<Slide>要素で囲まれたXML

TDQS

A3.7/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 the core behavior (syntax checking) but does not mention side effects, return values, or error handling. As a validation tool, it likely has no destructive side effects, but this is not explicitly stated, leaving a gap in 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 focused sentence that conveys the tool's optional nature, the timing, and the purpose. It is front-loaded with the optional marker and successfully communicates the value without unnecessary words.

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 simplicity (1 parameter, no annotations, no output schema), the description covers the essential context of when to use it, but it does not explain what the tool returns or how the validation result is communicated. This is a noticeable gap for a validation tool, though the simplicity of the tool mitigates the severity.

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%, and the parameter 'xml' is well-described in the schema as 'POM形式のXML文字列'. The tool description adds no additional parameter semantics beyond what the schema already provides, 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 clearly states the tool validates POM-format XML for syntax errors, specifying both the resource (POM XML) and the action (check). It distinguishes itself from sibling tools like create_powerpoint and get-pom-guide by focusing on validation before PowerPoint generation.

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 description explicitly states when to use the tool: after creating POM XML and before generating PowerPoint. This provides clear contextual usage. It does not name alternatives but the timing guidance makes the intended workflow evident.

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.

  1. 5 tool updatesv1.1.0
    • First observedcreate_powerpoint
    • First observedcreate_powerpoint_from_template
    • First observedget-pom-guide
    • First observedget-slide-example
    • First observedvalidate-pom-slide

TDQS

A3.8/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a clearly distinct role: fetching the spec, fetching examples, validating XML, creating a PPTX, and creating from a template. No two tools overlap in purpose, so agents should not confuse them.

Naming Consistency2/5

Tool names are inconsistent: three use kebab-case (get-pom-guide, get-slide-example, validate-pom-slide) while two use snake_case (create_powerpoint, create_powerpoint_from_template). This mixed convention makes the API surface feel disjointed and harder to predict.

Tool Count5/5

With exactly five tools, the server is well-scoped for PowerPoint generation. Each tool serves a necessary step in the workflow (guide, example, validate, create, template-create) without excess or bloat.

Completeness5/5

The tool surface covers the full creation lifecycle: acquiring the POM specification, obtaining sample XML, validating user-authored XML, and generating the final .pptx (both from scratch and from a template). There are no obvious missing operations for the stated domain.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers