返回市场
MCP演示文稿工具

MCP演示文稿工具

作者:ltc653962 星标更新:2025-06-01

项目介绍

PPT maker MCP 服务器

🌐 中文版README

此MCP服务器支持动态创建、编辑和保存PowerPoint演示文稿。基于MCP,并使用python-pptx库,它提供了一个灵活的接口来添加幻灯片、图片、表格和其他元素。用户可以通过与大型语言模型聊天轻松地制作、编辑和保存演示文稿,简化整个工作流程。

功能

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

  • 幻灯片操作

    • 标题幻灯片: 添加一个带有可选副标题的标题幻灯片。
    • 内容幻灯片: 创建带有标题和项目符号内容的幻灯片。
    • 章节幻灯片: 插入一个带有大标题和可选背景颜色的章节分隔幻灯片。
    • 图片幻灯片: 添加带有来自本地文件或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  # 在Windows上使用:.venv\Scripts\activate
    
  3. 然后将MCP添加到您的项目依赖项中

    uv add "mcp[cli]"
    uv run mcp
    

您可以在Claude Desktop中安装此服务器,并通过运行以下命令立即与其交互:

mcp install server-local.py

或者,您可以使用MCP Inspector进行测试:

mcp dev server-local.py

如果Claude桌面出现错误,您可能需要在命令字段中放置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]
  • 描述: 创建一个提示,指示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-convert工具将SVG转换为PNG
    • 在演示文稿中创建新的幻灯片
    • 如果提供了标题,则将其添加到幻灯片中
    • 将PNG图像定位并添加到幻灯片中
    • 清理临时文件
    • 返回确认消息,其中包含幻灯片位置

错误处理与调试

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

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

  • 日志:
    错误和版本信息输出到stderr,以帮助调试和监控。

贡献

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