PPT生成服务

基于MCP协议的动态PPT生成、编辑和管理服务,支持通过聊天交互创建包含文本、图片、表格等多种元素的演示文稿。

  • by ltc6539
  • Python
  • 本地部署
  • 66 星标
  • 更新于
在 GitHub 查看 ltc6539/mcp-ppt

使用说明

PPT制作MCP服务器

🌐 中文版README

此MCP服务器支持动态创建、编辑和保存PowerPoint演示文稿。建在 主控程序 并使用 python pptx 库,它提供了一个灵活的界面来添加幻灯片、图像、表格和其他元素。用户只需与大型语言模型聊天,即可轻松制作、编辑和保存演示文稿,简化整个工作流程

特性

  • 创建演示文稿
    使用生成唯一演示文稿ID的标题初始化新的PowerPoint演示文稿。

  • 滑动操作

    • 标题幻灯片: 添加带有可选字幕的标题幻灯片。
    • 内容幻灯片: 创建带有标题和要点内容的幻灯片。
    • 章节幻灯片: 插入一个带有大居中标题和可选背景颜色的分段幻灯片。
    • 图片幻灯片: 添加幻灯片,其中包含来自本地文件或URL的图像,并带有标题和描述性alt文本。
    • 表格幻灯片: 插入包含已定义标题和行数据的表格的幻灯片。
  • 展示管理

    • 保存演示文稿: 将演示文稿写入指定的文件路径,必要时处理临时目录。
    • 下载链接: 生成一个包含base64编码的演示内容的数据URI,以便直接下载。
    • 演示信息: 检索演示文稿的元数据,如幻灯片数量和可用幻灯片布局。
    • 演示大纲: 通过专用资源端点获取演示结构的基于文本的大纲。
    • 删除幻灯片: 按幻灯片从1开始的索引删除幻灯片。
    • 导出到Base64: 将完整的演示文稿导出为base64编码字符串以供进一步处理。

安装

  1. 克隆存储库

    git clone https://github.com/ltc6539/mcp-ppt.git
    cd mcp-ppt
    
  2. 创建虚拟环境(可选但推荐)

    python3 -m venv .venv
    source .venv/bin/activate  # On Windows use: .venv\Scripts\activate
    
  3. 然后将MCP添加到您的项目依赖关系中

    uv add "mcp[cli]"
    uv run mcp
    

您可以在以下位置安装此服务器 克劳德桌面版 并通过运行以下命令立即与之交互:

mcp install server-local.py

或者,您可以使用MCP检查器进行测试:

mcp dev server-local.py

如果claude桌面有错误,您可能需要在命令字段中输入uv可执行文件的完整路径。你可以通过跑步来获得这个 which uv 在MacOS/Linux或 where uv 在Windows上。 在启动期间,服务器将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
  • 说明: 返回一个数据URI,其中包含base64编码的演示数据,用于直接浏览器下载。

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]
  • 说明: 创建一个提示,指示Claude根据自然语言描述生成SVG图像。该函数返回两条消息的列表:
    1. 设置Claude作为SVG专家角色的系统消息
    2. 包含特定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转换工具将SVG转换为PNG
    • 在演示文稿中创建新幻灯片
    • 如果提供,将标题添加到幻灯片中
    • 将PNG图像定位并添加到幻灯片中
    • 清理临时文件
    • 返回带有幻灯片位置的确认消息

错误处理和调试

  • 错误检查:
    每个工具都会验证输入(例如,验证演示文稿ID或文件是否存在),并返回描述性错误消息。

  • 临时目录:
    服务器确保文件保存在可写目录中(通常 /tmp)如果提供的路径是只读的,则相应地回退。

  • 登录中:
    错误和版本信息被输出到stderr,以帮助调试和监控。

贡献

欢迎捐款。如果您遇到问题或有改进建议,请打开问题或提交拉取请求。