POM MCP Server
Click on "Deploy 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., "@POM MCP ServerCreate a 3-slide pitch deck about our new product, save as pitch.pptx"
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.
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-pptx2. 依存関係のインストールとビルド
# 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が自動的に:
POM形式のXMLを生成
スライドレイアウトを設計
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
クレジット
POM by hirokisakabe
Model Context Protocol by Anthropic
Available Tools
5 toolscreate_powerpointB
【最優先で使用】ユーザーがPowerPointファイルの作成を要求した場合に使用します。POM形式のXMLを入力として、.pptxファイルを生成します。
| Name | Required | Description | Default |
|---|---|---|---|
| xml | Yes | POM形式のXML文字列。<Slide>要素で各スライドを定義。複数スライドの場合は複数の<Slide>要素を並べる。例: '<Slide><VStack w="100%" h="max" padding="50"><Text fontSize="48">タイトル</Text></VStack></Slide>' | |
| width | No | スライドの幅(ピクセル)。デフォルト1280。16:9の場合は1280x720、4:3の場合は1024x768 | |
| height | No | スライドの高さ(ピクセル)。デフォルト720。16:9の場合は1280x720、4:3の場合は1024x768 | |
| outputPath | Yes | 生成するPowerPointファイルのパス。例: './presentation.pptx', 'C:/Users/Desktop/output.pptx' |
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 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.
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.
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.
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.
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.
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ファイルをテンプレートとして使用する場合に使用します。テンプレートの背景(背景色や画像)を継承し、新しいスライドを生成します。
| Name | Required | Description | Default |
|---|---|---|---|
| xml | Yes | POM形式のXML文字列。<Slide>要素で各スライドを定義。複数スライドの場合は複数の<Slide>要素を並べる。 | |
| width | No | スライドの幅(ピクセル)。デフォルト1280 | |
| height | No | スライドの高さ(ピクセル)。デフォルト720 | |
| outputPath | Yes | 生成するPowerPointファイルのパス。例: './presentation.pptx' | |
| templatePath | Yes | テンプレートとして使用する.pptxファイルのパス。このファイルの背景(背景色や画像)が新しいプレゼンテーションに適用される。例: './template.pptx', 'C:/Users/templates/company_template.pptx' |
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 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.
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.
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.
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.
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.
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ツールを使用する前に、この情報を参照する必要があります。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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に渡すことができます。タイトルスライド、コンテンツスライド、比較スライド、表スライドの例が利用可能です。
| Name | Required | Description | Default |
|---|---|---|---|
| slide_type | No | 取得するスライドタイプ: 'title'(タイトルスライド), 'content'(箇条書きスライド), 'comparison'(2カラム比較), 'table'(表を含むスライド) | title |
TDQS
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.
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.
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.
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.
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.
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生成前に構文エラーがないか確認する場合に使用します。
| Name | Required | Description | Default |
|---|---|---|---|
| xml | Yes | 検証するPOM形式のXML文字列。<Slide>要素で囲まれたXML |
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 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.
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.
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.
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.
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.
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.
5 tool updates
v1.1.0- First observed
create_powerpoint - First observed
create_powerpoint_from_template - First observed
get-pom-guide - First observed
get-slide-example - First observed
validate-pom-slide
TDQS
Scored across 5 tools
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.
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.
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.
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
Related MCP Connectors
Generate professional PowerPoint presentations from text, YouTube videos, or structured JSON data.…
Generate polished PowerPoint presentations from text prompts, YouTube videos, or structured outlin…
Agent-Native Google Slides - generate and edit React presentations
Generate, edit, merge, translate and PDF-convert PowerPoint (.pptx) over MCP. 8 tools.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceCreates professional PowerPoint presentations from Markdown or JSON with intelligent layout recommendations, rich content support including tables and images, and automatic template selection based on content analysis.7Apache 2.0
- FlicenseAqualityDmaintenanceEnables AI assistants to create, edit, and manipulate PowerPoint presentations programmatically with support for text styling, shapes, slide rearrangement, and direct Office XML access.81-
- FlicenseNot gradedqualityDmaintenanceGenerates PowerPoint presentations from templates using AI, injecting text and images based on schema definitions.1-
- FlicenseNot gradedqualityDmaintenanceEnables AI-powered generation of PowerPoint presentations with dynamic content, themes, and tones. Supports custom topics, audience, and slide count via the generate_ppt tool.-