一个用于通过 python-pptx 操作 PowerPoint 的 MCP(Model Context Protocol)服务器。该服务器提供通过 MCP 协议创建、编辑和操作 PowerPoint 演示文稿的工具。
概述
Office-PowerPoint-MCP-Server
一个基于python-pptx的PowerPoint操作MCP(模型上下文协议)服务器。该服务器提供通过MCP协议创建、编辑和操作PowerPoint演示文稿的工具。
示例
提示词
输出结果
演示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:手动安装
-
克隆仓库:
bashgit clone https://github.com/GongRzhe/Office-PowerPoint-MCP-Server.git cd Office-PowerPoint-MCP-Server
-
安装依赖:
bashpip install -r requirements.txt
-
使服务器可执行:
bashchmod +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