MCP Server Demo - PowerPoint Automation について
python-pptx を使い、AI アシスタントが PowerPoint プレゼンテーションを作成、確認、編集できる MCP サーバーです。プレゼンテーション、スライド、テキスト、図形、表、グラフを操作できます。
主な機能
- 01プレゼンテーションの作成、開閉、保存
- 02スライドの追加、削除、管理
- 03テキストの取得と書式設定
- 04図形の位置とプロパティの変更
- 05表の作成とセルの編集
- 06複数種類のグラフの追加
活用シーン
- 01プレゼンテーションの内容を分割して翻訳
- 02スライドのテキストと書式の更新
- 03スライドへの画像、表、グラフの追加
MCP 対応
この MCP サーバーは、PowerPoint のプレゼンテーションやスライドを管理するツールを AI アシスタントに公開し、内容の確認、編集、保存を可能にします。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
PowerPoint 自動化 MCP サーバー
python-pptx を使用して包括的な PowerPoint 自動化機能を提供する、Model Context Protocol(MCP)サーバーです。このサーバーを使用すると、AI アシスタントはプログラムから PowerPoint プレゼンテーションを作成、変更、管理できます。
デモ
https://github.com/user-attachments/assets/3daf3bef-4d75-4639-a891-0e64b80b4807
機能
- プレゼンテーション管理:プレゼンテーションの作成、開く、保存、閉じる
- スライド操作:さまざまなレイアウトでスライドを追加、削除、管理
- コンテンツ作成:テキストボックス、画像、表、グラフを追加
- テキスト書式設定:フォントスタイル(名前、サイズ、太字、斜体)を指定してテキストを更新
- 図形操作:図形のプロパティを移動、サイズ変更、変更
- 表の操作:表を作成し、セルの内容を更新
- グラフ作成:データを使ってさまざまな種類のグラフ(縦棒、折れ線、円、横棒)を追加
- グループ管理:図形をグループ解除して操作しやすくする
- レイアウトのサポート:さまざまなスライドレイアウトやプレースホルダーを使用
推奨プロンプト
翻訳シナリオ
プレゼンテーションを翻訳する場合は、コンテキストのあふれを防ぎ、データの安全性を確保するため、バッチに分けて処理します。
Translate this presentation [absolute path of ppt], processing 10 slides at a time and saving after each batch of 10 slides.
この方法には、次の利点があります。
- 大規模なプレゼンテーションでのトークン制限の問題を防ぎます
- 進行状況を段階的に保存し、データの損失を防ぎます
- バッチごとに確認できます
インストール
git clone https://github.com/buckylee2019/powerpoint-automation-mcp.git
cd powerpoint-automation-mcp
uv sync
サーバーの実行
uv run --directory /path/to/powerpoint-automation-mcp mcp-ppt-server
API リファレンス
このサーバーは、包括的な PowerPoint 自動化を実現する25以上のツールを提供します。API をシンプルにするため、すべての操作は1つのアクティブなプレゼンテーションを対象に実行されます。
プレゼンテーション管理
initialize_powerpoint() -> bool
PowerPoint 自動化システムを初期化します。
create_presentation(template: str = None) -> Dict
必要に応じてテンプレートから新しいプレゼンテーションを作成します。
template:テンプレートファイルへの任意のパス
open_presentation(file_path: str) -> Dict
既存の PowerPoint ファイルを開きます。
file_path:.pptx ファイルのフルパス
get_presentation() -> Dict
現在アクティブなプレゼンテーションの情報を取得します。
save_presentation(path: str = None) -> Dict
アクティブなプレゼンテーションを保存します。
path:保存先の任意のパス(省略した場合は現在のパスを使用)
close_presentation() -> Dict
アクティブなプレゼンテーションを閉じます。
スライド管理
get_slides() -> List[Dict]
メタデータ付きで、すべてのスライドの一覧を取得します。
add_slide(layout_index: int = 1) -> Dict
指定したレイアウトで新しいスライドを追加します。
layout_index:レイアウトの種類(0=タイトル、1=タイトル+コンテンツなど)
delete_slide(slide_index: int) -> Dict
プレゼンテーションからスライドを削除します。
slide_index:0から始まるスライドインデックス
get_slide_layouts() -> Dict
利用可能なすべてのスライドレイアウトとそのプロパティを取得します。
set_slide_title(slide_index: int, title: str) -> Dict
スライドのタイトルを設定します。
コンテンツの確認
get_slide_shapes(slide_index: int) -> Dict
必ず最初に実行してください! スライド内のすべての図形と、そのプロパティおよび ID を取得します。
- 図形の種類、位置、サイズ、テキストコンテンツを返します
- グループ解除が必要な場合があるグループ化された図形を特定します
get_slide_text(slide_index: int) -> Dict
スライド内のすべてのテキストコンテンツを図形ごとに整理して取得します。
- 最初にグループ解除が必要な場合があるグループ化された図形を検出します
テキストと図形の操作
update_text(slide_index: int, shape_index: int, text: str, font_name: str = None, font_size: int = None, bold: bool = None, italic: bool = None, preserve_existing: bool = True) -> Dict
任意の書式設定を指定してテキストコンテンツを更新します。
- 既存の書式設定を保持しながら、フォントスタイルを指定できます
preserve_existing:指定されていないプロパティについて、元の書式設定を保持します
update_shape_by_id(slide_index: int, shape_id: str, text: str = None, left: float = None, top: float = None, width: float = None, height: float = None) -> Dict
ID を指定して図形のプロパティを更新します。
- 位置とサイズの単位はインチです
コンテンツ作成
add_textbox(slide_index: int, text: str, left: float = 1, top: float = 1, width: float = 4, height: float = 2) -> Dict
スライドにテキストボックスを追加します。
add_image(slide_index: int, image_path: str, left: float = 1, top: float = 1, width: float = None, height: float = None) -> Dict
スライドに画像を追加します。
- 幅または高さのみを指定した場合、アスペクト比を維持します
add_table(slide_index: int, rows: int, cols: int, left: float = 1, top: float = 1, width: float = 8, height: float = 4) -> Dict
スライドに表を追加します。
add_chart(slide_index: int, chart_type: str, categories: List[str], series_names: List[str], series_values: List[List[float]], left: float = 1, top: float = 1, width: float = 8, height: float = 4, has_legend: bool = True) -> Dict
複数のデータ系列を含むグラフを追加します。
chart_type:'COLUMN'、'LINE'、'PIE'、'BAR'categories:X 軸のラベルseries_names:凡例のラベルseries_values:各系列のデータ値
表の操作
update_table_cell(slide_index: int, shape_index: int, row: int, col: int, text: str) -> Dict
指定した表のセルのテキストを更新します。
get_table_content(slide_index: int, shape_index: int) -> Dict
表のすべての内容を取得します。
高度な操作
ungroup_shapes(slide_index: int) -> Dict
スライド内のテキストを含むグループをすべてグループ解除します。
- ネストされたグループを含まない単純なグループのみを処理します
- 図形の位置とプロパティを保持します
- テキストを含まないグループはスキップします
使用ワークフロー
- 初期化:
initialize_powerpoint()を呼び出します - 開く/作成する:
open_presentation()またはcreate_presentation()を使用します - 確認する:スライドの構造を把握するため、必ず最初に
get_slide_shapes()を実行します - 必要に応じてグループ解除する:グループ化された図形が検出された場合は、
ungroup_shapes()を使用します - 変更する:適切なツールを使用してコンテンツを追加/変更します
- 保存する:変更を保存するため、
save_presentation()を呼び出します
エラー処理
すべての関数は、成功時のデータまたはエラー情報を含む辞書を返します。
// Success response
{
"success": true,
"message": "Operation completed",
"data": {...}
}
// Error response
{
"error": "Description of what went wrong"
}
MCP の設定
MCP の設定に追加します。
{
"mcpServers": {
"powerpoint-automation": {
"command": "uv",
"args": [
"run",
"--directory",
"/path/to/powerpoint-automation-mcp",
"mcp-ppt-server"
]
}
}
}
依存関係
python-pptx:PowerPoint ファイルの操作mcp:Model Context Protocol フレームワークfastmcp:MCP サーバーを簡単に作成するためのツール
ライセンス
MIT ライセンス。詳細は LICENSE ファイルを参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。