本项目是一个基于 FastMCP 框架构建的 MCP (Model Context Protocol) 服务器,旨在通过标准化的接口,赋予大型语言模型 (LLM) 程序化操作 PowerPoint 演示文稿(.pptx 文件)的能力。
项目简介
作为 MCP 服务器,它托管了用于创建、修改、查询 PPTX 文件的工具 (Tools) 和资源 (Resources)。LLM 客户端可以通过 JSON-RPC 协议与服务器通信,利用这些能力进行自动化演示文稿生成、内容提取或修改等任务。服务器支持多种传输协议,例如 SSE (Server-Sent Events),并负责管理文件资源和工具执行。
主要功能点
- 创建/清空演示文稿: 启动一个新的 PPTX 文件或重置现有文件。
- 添加幻灯片: 向演示文稿中插入带有指定布局的新幻灯片。
- 添加文本内容: 向幻灯片中的标题、内容占位符或任意位置添加文本框。
- 插入形状: 在幻灯片中添加各种预定义形状(如矩形、圆形、流程图元素),并可为其添加文本。
- 嵌入图片: 将图片文件添加到幻灯片中,并控制其位置和大小。
- 获取幻灯片内容描述: 提供指定幻灯片中所有形状和文本的详细文本描述(快速、轻量级)。
- 渲染幻灯片图片: 使用 LibreOffice 将指定幻灯片导出为 PNG 格式的图片(需要额外安装 LibreOffice)。
- 获取 PPTX 文件: 提供完整的 PPTX 文件作为二进制资源供客户端下载或处理。
- 获取 Base64 编码的 PPTX 文件: 以 Base64 字符串形式返回 PPTX 文件内容。
- 提供 Prompt 指南: 包含预定义的 Prompt,如创建流程图的指南和可用形状列表,帮助 LLM 理解如何有效使用工具。
安装步骤
- 安装 Python: 确保您的系统已安装 Python 3.12 或更高版本。
- 安装项目依赖:
或者使用 poetry 安装(如果存在 'pyproject.toml'):pip install -r requirements.txtpoetry install - 安装 LibreOffice (可选,用于图片渲染): 如果需要使用 'get_slide_image' 功能将幻灯片渲染为图片,您需要在服务器运行的机器上单独安装 LibreOffice,并确保 'soffice' 命令在系统 PATH 中可执行。
- Linux (apt): 'sudo apt install libreoffice'
- Linux (pacman): 'sudo pacman -S libreoffice-fresh'
- macOS (brew): 'brew install --cask libreoffice'
- Windows: 从 LibreOffice 官方网站 下载安装程序。
服务器配置 (供 MCP 客户端参考)
MCP 客户端需要配置如何启动和连接到此服务器。以下是典型的 MCP 客户端配置信息(通常在客户端的 JSON 或配置文件中设置):
- Server Name: 'PowerPoint MCP Server' (服务器的友好名称)
- Command: 'python' (用于启动服务器的可执行命令)
- Args: '["server.py"]' (传递给命令的参数,指向服务器启动脚本)
- Env (可选): '{ "HOST": "127.0.0.1", "PORT": "8000" }' (通过环境变量设置服务器监听地址和端口,客户端可根据需要修改或留空使用默认值)
- Transport: 'sse' (客户端与服务器通信使用的协议)
- URL (可选): 'http://127.0.0.1:8000/sse' (如果客户端连接到已独立运行的服务器,则需要配置此 URL,注意根据实际 HOST 和 PORT 修改)
客户端在启动时会根据这些信息执行指定的 'command' 和 'args' 来启动服务器进程,并使用 'transport' 定义的协议建立连接。
基本使用方法
-
启动服务器: 在项目根目录下运行:
python server.py您可以通过设置 'HOST' 和 'PORT' 环境变量来指定服务器监听的地址和端口,例如:
HOST=0.0.0.0 PORT=9000 python server.py服务器启动后会显示监听地址和端口,以及是否找到 LibreOffice。
-
连接客户端: 使用兼容 MCP 的 LLM 客户端(如 Google ADK 或其他 FastMCP 客户端),根据上述“服务器配置”信息连接到运行中的服务器。
-
LLM 交互: LLM 客户端发现服务器提供的工具 (Tools)、资源 (Resources) 和 Prompt 后,LLM 即可通过调用相应的 JSON-RPC 方法来创建、编辑 PPTX 文件,或获取文件内容。例如,LLM 可以:
- 调用 'create_or_clear_presentation' 工具创建一个新文件。
- 调用 'add_slide' 工具添加幻灯片。
- 调用 'add_textbox'、'add_shape'、'add_picture' 工具向幻灯片添加内容。
- 通过访问 'pptx://{filename}/slide/{slide_index}/description' 资源获取幻灯片文本描述。
- 调用 'get_slide_image' 工具获取幻灯片图片进行视觉验证。
- 通过访问 'pptx://{filename}/file' 资源或调用 'get_presentation_file_b64' 工具获取最终的 PPTX 文件。
服务器将在 'presentations/' 目录下保存生成的 PPTX 文件。
信息
分类
生产力应用