Skip to main content
Glama
atharva-bedekar

PowerPoint MCP Server

Antigravity 向け PowerPoint MCP サーバー

Google Antigravity 向けに、会話型・決定論的な PowerPoint(.pptx)の検査、精密編集、高解像度レンダリング、ビジュアル差分、ルールベース検証を実現する、本番品質のローカル Model Context Protocol(MCP)サーバー(Python 製)。


1. 概要と設計思想

最新の AI スライド編集は、LLM がプレゼンテーション全体をゼロから再生成しようとするため、細かな書式を破壊し、フォント階層を崩し、複雑なレイアウトをリセットしてしまうことがよくあります。

PowerPoint MCP サーバーは、決定論的かつ最小差分の編集哲学を実装しています。

  • 変更前の検査: 意味的役割(titlesubtitlebodydiagramimagefooter)と正確な EMU/インチ単位のバウンディングボックスを、OpenXML ツリーから直接抽出します。

  • ラン単位のスタイル保持: テキスト編集では、フォントフェイス、ポイントサイズ、色、余白、複数ランにわたるリッチテキスト書式を保持します。

  • 非破壊的な作業コピー: 変更は .ppt-agent/sessions/<session_id>/working.pptx 配下の分離されたセッションワークスペースで行われ、タイムスタンプ付きの自動バックアップ(presentation.backup-YYYYMMDD-HHMMSS.pptx)が作成されます。

  • ビジュアル検証ループ: 統合された Windows PowerPoint COM オートメーションとヘッドレス LibreOffice レンダリングにより、PNG スライド画像とピクセル差分ヒートマップを生成し、レイアウト変更を視覚的に検証します。


Related MCP server: PPTX MCP Server

2. アーキテクチャ

┌─────────────────────────────────────────────────────────────────┐
│                      Antigravity CLI Agent                      │
│        (Skill: .agents/skills/powerpoint-editor/SKILL.md)       │
└───────────────────────────────┬─────────────────────────────────┘
                                │ JSON-RPC 2.0 via Stdio
┌───────────────────────────────▼─────────────────────────────────┐
│              PowerPoint MCP Server (server.py)                  │
│       19 FastMCP / MCPServer Tools  &  3 MCP Resources          │
└───────┬───────────────────────┼─────────────────────────┬───────┘
        │                       │                         │
┌───────▼──────────────┐ ┌──────▼───────────────┐  ┌──────▼───────────────┐
│ Inspection & Models  │ │  Editing & Geometry  │  │ Rendering & Diffing  │
│ - Shape Hierarchies  │ │ - Move / Resize      │  │ - Windows PPT COM    │
│ - Semantic Inference │ │ - Align / Distribute │  │ - LibreOffice CLI    │
│ - Multi-Factor Match │ │ - Text Run Styling   │  │ - Pixel Diff Heatmaps│
│ - Rule Validation    │ │ - Safe OOXML Helpers │  │ - Bounding Clusters  │
└──────────────────────┘ └──────────────────────┘  └──────────────────────┘
                                │
┌───────────────────────────────▼─────────────────────────────────┐
│                  Session & Safety Layer                         │
│   .ppt-agent/sessions/<session_id>/working.pptx + backups/      │
└─────────────────────────────────────────────────────────────────┘

3. 前提条件と要件

  • オペレーティングシステム: Windows 10/11(ネイティブ PowerPoint COM オートメーション用)、macOS、または Linux。

  • Python: Python 3.10、3.11、3.12、または 3.13 以降。

  • パッケージマネージャー: uv(推奨)または pip

  • プレゼンテーションソフトウェア(レンダリングには推奨、必須ではない):

    • Microsoft PowerPoint 2016 / 2019 / 2021 / Office 365(Windows)。

    • LibreOffice(システム PATH 内の soffice CLI)。


4. インストールとセットアップ

リポジトリをクローンし、uv を使用して依存関係をインストールします:

# Clone the repository
git clone https://github.com/example/powerpoint-mcp.git
cd powerpoint-mcp

# Create and sync virtual environment with uv
uv sync

または、標準の pip を使用する場合:

python -m venv .venv
# On Windows PowerShell:
.venv\Scripts\Activate.ps1
# On macOS/Linux:
source .venv/bin/activate

pip install -e .

5. MCP サーバーの実行

標準入出力(stdio)で MCP サーバーを実行するには:

uv run python -m powerpoint_mcp.server

または、スクリプトのエントリポイントを直接使用する場合:

uv run powerpoint-mcp

6. Antigravity ワークスペース設定

ワークスペースの .agents/mcp_config.json を設定してサーバーを登録します:

{
  "mcpServers": {
    "powerpoint-mcp": {
      "command": "uv",
      "args": [
        "run",
        "python",
        "-m",
        "powerpoint_mcp.server"
      ],
      "env": {
        "PPT_RENDERER": "auto",
        "PPT_WORKSPACE_DIR": ".ppt-agent",
        "PPT_BACKUP_ENABLED": "true",
        "PPT_DEFAULT_OUTPUT_DIR": "./output"
      }
    }
  }
}

7. Antigravity スキルのインストール

スキル定義は .agents/skills/powerpoint-editor/SKILL.md にあります。Antigravity は .agents/skills/ 内のスキルを自動的に検出します。

このスキルには以下が含まれます:

  • PowerPoint 編集に関する 15 の不変ルール

  • テキスト編集、ジオメトリ調整、参照スライド照合のための構造化された決定ツリー。

  • ツール呼び出しの最適化とバッチ処理のルール。


8. 対応 MCP ツールリファレンス(19 のコアツール)

ツール名

パラメータ

説明

ppt_open

presentation_path: str

プレゼンテーションを開き、作業コピーを含む分離されたセッションワークスペースを初期化します。

ppt_inspect_presentation

presentation_path: Optional[str]

プレゼンテーションのメタデータ、スライド数、寸法、レイアウト、タイトルを検査します。

ppt_inspect_slide

slide_number: int, presentation_path: Optional[str]

スライドの図形、EMU/インチ座標、意味的役割、テキスト、スタイルを検査します。

ppt_inspect_shape

slide_number: int, shape_id: int, presentation_path: Optional[str]

単一図形の詳細検査: ラン、フォント、色、余白、線、塗りつぶし、XML。

ppt_modify_shape

slide_number: int, shape_id: int, x, y, width, height, rotation, z_order, dx, dy, dwidth, dheight, drotation, align, distribute, target_shape_ids, presentation_path

座標、寸法、回転、Z オーダー、または複数図形の整列/分布を変更します。

ppt_modify_text

slide_number: int, shape_id: int, text, font_family, font_size, bold, italic, underline, color, alignment, margins, paragraph_spacing, line_spacing, presentation_path

ラン単位のスタイル保持でテキストとスタイルを変更します。

ppt_copy_shape

slide_number: int, shape_id: int, target_slide_number, x_offset, y_offset, presentation_path

書式とリレーションシップを含む図形を、同じスライドまたは対象スライドに複製します。

ppt_move_shape

slide_number: int, shape_id: int, dx, dy, x, y, presentation_path

図形を絶対座標または相対オフセット(インチ単位)で移動します。

ppt_resize_shape

slide_number: int, shape_id: int, width, height, scale_width, scale_height, lock_aspect_ratio, presentation_path

絶対寸法またはスケーリング倍率で図形のサイズを変更します。

ppt_delete_shape

slide_number: int, shape_id: int, presentation_path

スライドの図形ツリーから図形をクリーンに削除します。

ppt_modify_ooxml

slide_number: int, shape_id, operation, xpath, attributes, xml_fragment, transparency_percent, gradient_start, gradient_end, shadow_blur_pt, presentation_path

透明度、グラデーション、シャドウのための安全な低レベル DrawingML 操作。

ppt_validate_slide

slide_number: int, rules: Optional[List[str]], presentation_path

重なり(VAL-01)、クリッピング(VAL-02)、極小フォント(VAL-05)、オーバーフロー(VAL-04)のルールベース検証。

ppt_render_slide

slide_number: int, output_dir, output_path, renderer, dpi, presentation_path

PowerPoint COM または LibreOffice を使用して単一スライドを高解像度 PNG にレンダリングします。

ppt_render_presentation

output_dir, renderer, dpi, presentation_path

プレゼンテーション内の全スライドを PNG 画像にレンダリングします。

ppt_compare_slides

slide_a: int, slide_b: int, match_shapes_flag, render_diff, presentation_path

2 つのスライド間のジオメトリ、レイアウト、タイポグラフィ、意味的マッチングを比較します。

ppt_visual_diff

before_image: str, after_image: str, output_diff_path, threshold

ピクセルレベルの差分オーバーレイ、変更されたバウンディングボックス、類似度パーセンテージ。

ppt_save

presentation_path: Optional[str]

作業コピーをタイムスタンプ付きの自動バックアップとともに元のパスに保存します。

ppt_save_as

output_path: str, overwrite: bool, presentation_path

作業コピーを新しい宛先パスに保存します。

ppt_revert

target: str, presentation_path

作業コピーを元のプレゼンテーションまたは指定されたバックアップのタイムスタンプに戻します。


9. 対応 MCP リソース

URI リソース

MIME タイプ

説明

ppt://current/presentation

application/json

プレゼンテーションのメタデータ、寸法、レイアウト、スライドタイトルの JSON サマリー。

ppt://current/slide/{slide_number}

application/json

スライド {slide_number} の役割、座標、タイポグラフィを含む構造化された図形ツリーの JSON。

ppt://current/slide/{slide_number}/render

image/png

スライド {slide_number} の高解像度 PNG バイナリレンダリング。


10. スタンドアロン CLI デバッグツール

プレゼンテーションまたはスライドの検査

# Inspect entire presentation metadata
python scripts/inspect_pptx.py presentation.pptx

# Inspect specific slide as ASCII tree
python scripts/inspect_pptx.py presentation.pptx --slide 1

# Inspect single shape in JSON format
python scripts/inspect_pptx.py presentation.pptx --slide 1 --shape 2 --json

スライドの PNG レンダリング

# Render all slides to ./renders/
python scripts/render_pptx.py presentation.pptx --output ./renders

# Render single slide at 300 DPI using PowerPoint COM
python scripts/render_pptx.py presentation.pptx --slide 1 --dpi 300 --renderer powerpoint

11. 会話型コマンドの例

以下は、PowerPoint MCP サーバーを使用して Antigravity が処理する典型的な自然言語プロンプトです:

  1. 「pitch_deck.pptx を開いて、スライド 2 を検査してください。」

  2. 「スライド 1 のタイトルを左に 0.2 インチ移動してください。」

  3. 「スライド 1 の 3 つのフィーチャーボックスを、等間隔で水平に分布させてください。」

  4. 「スライド 2 の 3 つのカードを上端に沿って整列させてください。」

  5. 「図形 4 の本文テキストを『Enterprise Cloud Solutions』に変更し、14pt の Calibri フォントを維持したまま太字にしてください。」

  6. 「スライド 2 のダイアグラムカードを複製し、0.5 インチ下にシフトしてください。」

  7. 「スライド 2 をスライド 1 のレイアウトとフォント階層に合わせてください。ただし、スライド 2 のコンテンツはそのまま保持してください。」

  8. 「スライド 3 の重なりやスライド外の要素を検証し、見つかった問題を修正してください。」

  9. 「スライド 1 をレンダリングして、以前のバージョンとのビジュアル差分を表示してください。」

  10. 「変更したデッキを final_presentation.pptx として保存してください。」


12. トラブルシューティングと FAQ

Windows での PowerPoint COM エラー

  • 症状: pywintypes.com_error: (-2147417848, 'The object invoked has disconnected from its clients.')

  • 解決策: Windows タスクマネージャーにハングした POWERPNT.EXE インスタンスがないことを確認してください。既存のバックグラウンド PowerPoint プロセスを終了するか、再起動してください。サーバーは CoInitialize / CoUninitialize を使用したスレッドセーフな COM ディスパッチを自動的に使用します。

ヘッドレス環境と LibreOffice フォールバック

  • Microsoft Office のないヘッドレス CI/CD 環境や Linux サーバーでは、LibreOffice をインストールしてください:

    sudo apt-get install libreoffice
  • 環境変数に PPT_RENDERER=libreoffice または PPT_RENDERER=auto を設定してください。

フォントとタイポグラフィのずれ

  • レンダリングされたスライドでカスタムフォントが欠落している場合は、ホストマシンに TrueType/OpenType フォントファイルをインストールしてください。プロプライエタリフォントがない場合、LibreOffice と PowerPoint は標準のシステムフォント(Calibri、Arial)で代替します。


ライセンス

MIT License。

Install Server
F
license - not found
C
quality
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Deterministic, fully editable PowerPoint from typed slide intents. 200+ layouts, brand templates.

  • Generate, edit, and export AI presentations to PDF, PPTX, or a shareable link.

  • Presentations.AI MCP server — create designed slide decks from a topic, text, or document.

View all MCP Connectors

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/atharva-bedekar/PowerPointMCP'

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