PPT maker MCP server について
PPT maker MCP サーバーは、LLM との対話によって PowerPoint プレゼンテーションを作成・編集・保存するための MCP サーバーです。python-pptx ライブラリを基盤とし、スライドや画像、表の追加に対応しています。
主な機能
- 01一意の ID を持つプレゼンテーションの作成
- 02タイトル、コンテンツ、セクション、画像、表のスライド
- 03ファイル保存および base64 データ URI の出力
- 04プレゼンテーション情報とアウトラインリソースの取得
- 051 始まりの番号によるスライドの削除
- 06rsvg-convert を用いた SVG からのスライド追加
活用シーン
- 01自然言語の説明からスライド資料を自動生成
- 02対話を通じた既存プレゼンテーションの構成編集
- 03表データや画像をスライドに変換
MCP 対応
MCP サーバーとして、プレゼンテーションの作成・編集・保存を行うツールを MCP クライアントに公開します。あわせてアウトラインリソースと SVG 用プロンプト関数も提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
PPT maker MCP サーバー
この MCP サーバーを使うと、PowerPoint プレゼンテーションを動的に作成、編集、保存できます。MCP を基盤とし、python-pptx ライブラリを使用して、スライド、画像、表などの要素を追加するための柔軟なインターフェースを提供します。ユーザーは LLM とチャットするだけで、プレゼンテーションを簡単に作成、編集、保存でき、ワークフロー全体を効率化できます。
機能
-
プレゼンテーションの作成
タイトルを指定して新しい PowerPoint プレゼンテーションを初期化し、一意のプレゼンテーション ID を生成します。 -
スライド操作
- タイトルスライド: 任意のサブタイトルを指定して、タイトルスライドを追加します。
- コンテンツスライド: タイトルと箇条書きのコンテンツを含むスライドを作成します。
- セクションスライド: 大きく中央揃えのタイトルと、任意の背景色を指定したセクション区切りスライドを挿入します。
- 画像スライド: ローカルファイルまたは URL の画像に、タイトルと説明的な代替テキストを付けてスライドに追加します。
- 表スライド: 定義したヘッダーと行データを含む表スライドを挿入します。
-
プレゼンテーション管理
- プレゼンテーションの保存: 必要に応じて一時ディレクトリを処理しながら、指定されたファイルパスにプレゼンテーションを書き込みます。
- ダウンロードリンク: プレゼンテーションの内容を Base64 エンコードしたデータ URI を生成し、直接ダウンロードできるようにします。
- プレゼンテーション情報: スライド数や利用可能なスライドレイアウトなど、プレゼンテーションのメタデータを取得します。
- プレゼンテーションのアウトライン: 専用のリソースエンドポイントを通じて、プレゼンテーションの構造をテキスト形式のアウトラインとして取得します。
- スライドの削除: 1 から始まるインデックスを指定してスライドを削除します。
- Base64 へのエクスポート: さらなる処理のために、プレゼンテーション全体を Base64 エンコード文字列としてエクスポートします。
インストール
-
リポジトリをクローンする
git clone https://github.com/ltc6539/mcp-ppt.git cd mcp-ppt -
仮想環境を作成する(任意ですが推奨)
python3 -m venv .venv source .venv/bin/activate # On Windows use: .venv\Scripts\activate -
次に、MCP をプロジェクトの依存関係に追加します
uv add "mcp[cli]" uv run mcp
Claude Desktop にこのサーバーをインストールすると、次のコマンドを実行するだけですぐに利用できます:
mcp install server-local.py
または、MCP Inspector でテストできます:
mcp dev server-local.py
Claude Desktop でエラーが発生する場合は、コマンドフィールドに uv 実行ファイルのフルパスを指定する必要があるかもしれません。MacOS/Linux では which uv、Windows では where uv を実行すると確認できます。
起動時に、サーバーは Python と python-pptx のバージョン情報を stderr に記録します。実行中にエラーが発生した場合も、デバッグしやすいよう stderr に出力されます。
ツール一覧
各 MCP ツール関数には、MCP サーバーから直接アクセスできます。以下に主な操作を示します:
1. プレゼンテーションの作成
- 関数:
create_presentation(title: str) -> str - 説明: 新しいプレゼンテーションを初期化し、一意のプレゼンテーション ID を返します。
2. タイトルスライドの追加
- 関数:
add_title_slide(prs_id: str, title: str, subtitle: Optional[str] = None) -> str - 説明: 指定されたプレゼンテーションにタイトルスライドを追加します。
3. コンテンツスライドの追加
- 関数:
add_content_slide(prs_id: str, title: str, content: List[str]) -> str - 説明: タイトルと複数の箇条書きを含むコンテンツスライドを挿入します。
4. セクションスライドの追加
- 関数:
add_section_slide(prs_id: str, section_title: str, background_color: Optional[str] = None) -> str - 説明: 背景色をカスタマイズでき、大きなテキストを中央揃えで配置したセクション区切りスライドを作成します。
5. 画像スライドの追加
- 関数:
add_image_slide(prs_id: str, title: str, image_path: str, image_description: str) -> str - 説明: 画像スライドを追加します。画像はローカルファイルから読み込むか、URL からダウンロードできます。
6. 表スライドの追加
- 関数:
add_table_slide(prs_id: str, title: str, headers: List[str], rows: List[List[str]]) -> str - 説明: 列ヘッダーとデータ行で定義された表を含むスライドを挿入します。
7. プレゼンテーションを保存
- 機能:
save_presentation(prs_id: str, output_path: str) -> str - 説明: 必要に応じて一時ディレクトリを管理しながら、指定された出力先にプレゼンテーションを保存します。
8. プレゼンテーションのダウンロードリンクを取得
- 機能:
get_presentation_download_link(prs_id: str) -> str - 説明: ブラウザーから直接ダウンロードするための、プレゼンテーションデータを Base64 エンコードしたデータ URI を返します。
9. プレゼンテーション情報を取得
- 機能:
get_presentation_info(prs_id: str) -> str - 説明: スライド数や利用可能なスライドレイアウトの詳細などのメタデータを取得します。
10. プレゼンテーションの概要を取得
- リソースエンドポイント:
presentation://{prs_id}/outline - 説明: スライドのタイトルや内容の概要など、プレゼンテーションの構成をテキストで示します。
11. スライドを削除
- 機能:
remove_slide(prs_id: str, slide_index: int) -> str - 説明: 1 始まりのインデックスで指定したスライドをプレゼンテーションから削除します。
12. Base64 にエクスポート
- 機能:
export_to_base64(prs_id: str) -> str - 説明: プレゼンテーションを Base64 エンコードされた文字列としてエクスポートします(サンプルとして先頭 100 文字を表示します)。
13. SVG 生成プロンプト関数
- 機能:
svggenerator_prompt(description: str) -> list[base.Message] - 説明: 自然言語による説明に基づいて SVG 画像を生成するよう Claude に指示するプロンプトを作成します。この関数は、次の 2 つのメッセージのリストを返します。
- Claude に SVG の専門家としての役割を設定するシステムメッセージ
- 具体的な SVG のリクエストを含むユーザーメッセージ
14. SVG 生成関数
- 機能:
generate_svg(prs_id: str, svg_markup: str, title: str = None, width: float = 6.0) -> str - 説明: SVG マークアップを受け取り、PowerPoint プレゼンテーションに追加します。
- プレゼンテーション ID と SVG マークアップが必要です
- タイトルと幅のパラメーターを任意で指定できます(幅のデフォルトは 6 インチです)
- SVG を一時ファイルに書き込みます
rsvg-convertツールを使用して SVG を PNG に変換します- プレゼンテーションに新しいスライドを作成します
- タイトルが指定されている場合は、スライドに追加します
- PNG 画像をスライド上に配置して追加します
- 一時ファイルをクリーンアップします
- スライドの位置を含む確認メッセージを返します
エラー処理とデバッグ
-
エラーチェック:
各ツールは入力(プレゼンテーション ID やファイルの存在など)を検証し、内容が明確なエラーメッセージを返します。 -
一時ディレクトリ:
サーバーは書き込み可能なディレクトリ(通常は/tmp)にファイルが保存されるようにし、指定されたパスが読み取り専用の場合は適切に代替します。 -
ログ:
デバッグと監視に役立てるため、エラーとバージョン情報は stderr に出力されます。
貢献
貢献を歓迎します。問題に遭遇した場合や改善案がある場合は、issue を作成するか、プルリクエストを送信してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。