PowerPoint自动化服务器

一个提供全面PowerPoint自动化功能的MCP服务器,支持通过编程方式创建、修改和管理PowerPoint演示文稿。

  • by buckylee2019
  • Python
  • 本地部署
  • 17 星标
  • 更新于
在 GitHub 查看 buckylee2019/powerpoint-automation-mcp

使用说明

PowerPoint自动化MCP服务器

一个模型上下文协议(MCP)服务器,使用python pptx提供全面的PowerPoint自动化功能。此服务器使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。

展示管理

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:“列”、“行”、“饼”、“条”
  • 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

取消幻灯片中所有包含组的文本的分组。

  • 仅处理简单组(无嵌套组)
  • 保留形状位置和属性
  • 跳过没有文本内容的组

使用工作流程

  1. 初始化:呼叫 initialize_powerpoint()
  2. 打开/创建:使用 open_presentation() 或 create_presentation()
  3. 检查:始终运行 get_slide_shapes() 首先要了解幻灯片结构
  4. 必要时取消分组:使用 ungroup_shapes() 如果检测到分组形状
  5. 修改:使用适当的工具添加/修改内容
  6. 保存:呼叫 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:模型上下文协议框架
  • fastmcp:简化了MCP服务器的创建

许可证

MIT许可证-有关详细信息,请参阅许可证文件。