小贴士:按下Ctrl+D 或 ⌘+D,一键收藏本站,方便下次快速访问!
MIT License
47
最近更新:1个月前

一个用于通过 python-pptx 操作 PowerPoint 的 MCP(Model Context Protocol)服务器。该服务器提供通过 MCP 协议创建、编辑和操作 PowerPoint 演示文稿的工具。

Office-PowerPoint-MCP-Server

smithery 徽章

一个基于python-pptx的PowerPoint操作MCP(模型上下文协议)服务器。该服务器提供通过MCP协议创建、编辑和操作PowerPoint演示文稿的工具。

示例

提示词

650f4cc5d0f1ea4f3b1580800cb0deb

输出结果

084f1cf4bc7e4fcd4890c8f94f536c1

演示GIF -> (./public/demo.mp4)

演示

功能特性

  • 完整保留所有元素的Open XML演示文稿(.pptx文件)往返处理
  • 添加幻灯片
  • 填充文本占位符,例如创建项目符号幻灯片
  • 在任意位置和尺寸添加图片到幻灯片
  • 向幻灯片添加文本框;操控文本字体大小和加粗样式
  • 向幻灯片添加表格
  • 向幻灯片添加自动形状(如多边形、流程图形状等)
  • 添加并操作柱状图、条形图、折线图和饼图
  • 访问和修改核心文档属性如标题和主题

安装指南

通过Smithery安装

通过Smithery为Claude Desktop自动安装PowerPoint操作服务器:

bash 复制代码
npx -y @smithery/cli install @GongRzhe/Office-PowerPoint-MCP-Server --client claude

前置要求

  • Python 3.10或更高版本
  • pip包管理器

安装选项

选项1:使用安装脚本(推荐)

最简单的方式是使用提供的安装脚本自动完成安装流程:

bash 复制代码
python setup_mcp.py

该脚本将:

  • 检查前置条件
  • 提供安装选项:
    • 从PyPI安装(推荐大多数用户)
    • 设置本地开发环境
  • 安装所需依赖
  • 生成合适的MCP配置文件
  • 提供与Claude Desktop集成的指导

脚本根据环境提供不同路径:

  • 如果已安装uvx,将使用UVX配置(推荐)
  • 如果服务器已安装,提供配置选项
  • 如果服务器未安装,提供安装方法

选项2:手动安装

  1. 克隆仓库:

    bash 复制代码
    git clone https://github.com/GongRzhe/Office-PowerPoint-MCP-Server.git
    cd Office-PowerPoint-MCP-Server
  2. 安装依赖:

    bash 复制代码
    pip install -r requirements.txt
  3. 使服务器可执行:

    bash 复制代码
    chmod +x ppt_mcp_server.py

使用说明

启动服务器

运行服务器:

bash 复制代码
python ppt_mcp_server.py

MCP配置

选项1:本地Python服务器

将服务器添加到MCP设置配置文件中:

json 复制代码
{
  "mcpServers": {
    "ppt": {
      "command": "python",
      "args": ["/path/to/ppt_mcp_server.py"],
      "env": {}
    }
  }
}

选项2:使用UVX(无需本地安装)

如果已安装uvx,可以直接从PyPI运行服务器而无需本地安装:

json 复制代码
{
  "mcpServers": {
    "ppt": {
      "command": "uvx",
      "args": [
        "--from", "office-powerpoint-mcp-server", "ppt_mcp_server"
      ],
      "env": {}
    }
  }
}

可用工具

演示文稿工具

  • create_presentation:创建新的PowerPoint演示文稿
  • open_presentation:从文件打开现有PowerPoint演示文稿
  • save_presentation:将当前演示文稿保存到文件
  • get_presentation_info:获取当前演示文稿的信息
  • set_core_properties:设置当前演示文稿的核心文档属性

幻灯片工具

  • add_slide:向当前演示文稿添加新幻灯片
  • get_slide_info:获取特定幻灯片的信息
  • populate_placeholder:用文本填充占位符
  • add_bullet_points:向占位符添加项目符号

文本工具

  • add_textbox:向幻灯片添加文本框

图像工具

  • add_image:向幻灯片添加图片
  • add_image_from_base64:从base64编码字符串向幻灯片添加图片

表格工具

  • add_table:向幻灯片添加表格
  • format_table_cell:格式化表格单元格

形状工具

  • add_shape:向幻灯片添加自动形状

图表工具

  • add_chart:向幻灯片添加图表

示例

创建新演示文稿

python 复制代码
# 创建新演示文稿
result = use_mcp_tool(
    server_name="ppt",
    tool_name="create_presentation",
    arguments={}
)
presentation_id = result["presentation_id"]

# 添加标题幻灯片
result = use_mcp_tool(
    server_name="ppt",
    tool_name="add_slide",
    arguments={
        "layout_index": 0,  # 标题幻灯片布局
        "title": "我的演示文稿",
        "presentation_id": presentation_id
    }
)
slide_index = result["slide_index"]

# 填充副标题占位符
result = use_mcp_tool(
    server_name="ppt",
    tool_name="populate_placeholder",
    arguments={
        "slide_index": slide_index,
        "placeholder_idx": 1,  # 副标题占位符
        "text": "使用PowerPoint MCP服务器创建",
        "presentation_id": presentation_id
    }
)

# 保存演示文稿
result = use_mcp_tool(
    server_name="ppt",
    tool_name="save_presentation",
    arguments={
        "file_path": "my_presentation.pptx",
        "presentation_id": presentation_id
    }
)

添加图表

python 复制代码
# 添加图表幻灯片
result = use_mcp_tool(
    server_name="ppt",
    tool_name="add_slide",
    arguments={
        "layout_index": 1,  # 内容幻灯片布局
        "title": "销售数据",
        "presentation_id": presentation_id
    }
)
slide_index = result["slide_index"]

# 添加柱状图
result = use_mcp_tool(
    server_name="ppt",
    tool_name="add_chart",
    arguments={
        "slide_index": slide_index,
        "chart_type": "column",
        "left": 1.0,
        "top": 2.0,
        "width": 8.0,
        "height": 4.5,
        "categories": ["Q1", "Q2", "Q3", "Q4"],
        "series_names": ["2023", "2024"],
        "series_values": [
            [100, 120, 140, 160],
            [110, 130, 150, 170]
        ],
        "has_legend": True,
        "legend_position": "bottom",
        "has_data_labels": True,
        "title": "季度销售额",
        "presentation_id": presentation_id
    }
)

许可协议

MIT