此仓库包含用于通过AI辅助与Microsoft Office应用程序交互的模型上下文协议(MCP)服务器。当前支持的应用程序包括:
两个服务器都使用 pywin32 进行COM自动化,允许直接与正在运行的Office应用程序进行交互。
pywin32 包git clone https://github.com/jenstangen1/mcp-pptx.git
cd mcp-pptx
uv 安装依赖项:uv pip install pywin32
pywin32 的后安装脚本:python C:\path\to\your\env\Scripts\pywin32_postinstall.py -install
要将这些MCP服务器与Claude集成,请在Claude Desktop应用设置中添加以下配置:
{
"mcpServers": {
"powerpoint_mcp_win32": {
"command": "uv",
"args": [
"run",
"mcp_powerpoint_server_win32.py"
],
"cwd": "C:\\path\\to\\your\\workspace"
},
"excel_mcp_win32": {
"command": "uv",
"args": [
"run",
"mcp_excel_server_win32.py"
],
"cwd": "C:\\path\\to\\your\\workspace"
}
}
}
注意:请用实际的工作区路径替换 C:\\path\\to\\your\\workspace。
PowerPoint服务器提供了一个全面的API,使AI模型能够与PowerPoint演示文稿进行交互,支持高级格式化、财务图表和数据整合。
注意:您可能需要修改目录路径以匹配您的安装位置。
list_presentations:列出工作区中的所有PowerPoint文件upload_presentation:将新的演示文稿上传到工作区save_presentation:保存当前演示文稿add_slide:向演示文稿添加新幻灯片delete_slide:从演示文稿中删除幻灯片get_slide_count:获取演示文稿中的幻灯片总数analyze_slide:分析幻灯片的内容set_background_color:设置幻灯片的背景颜色add_text:向幻灯片添加文本add_shape:向幻灯片添加形状edit_element:编辑元素的属性style_element:对元素应用样式connect_shapes:用连接线连接两个形状find_element:根据标准查找幻灯片上的元素get_company_financials:获取公司的财务数据(目前返回虚拟数据)create_financial_chart:在幻灯片上创建财务图表create_comparison_table:为公司创建比较表注意:财务工具目前使用虚拟数据。未来版本计划集成Proff API以自动获取挪威公司的数据。用户可以修改代码以连接本地或首选的财务数据提供商。
list_templates:列出所有可用模板apply_template:将模板应用于演示文稿create_slide_from_template:从模板创建新幻灯片save_as_template:将幻灯片保存为模板debug_element_mappings:调试工具,用于检查幻灯片的元素映射一旦在您的Claude Desktop应用中配置了MCP服务器,您就可以通过自然语言命令与PowerPoint和Excel进行交互。这里有一些例子:
您:创建一个带有标题“市场分析”的新幻灯片,并添加一个显示收入增长的条形图。
Claude:我将帮助您创建这个带有标题和图表的幻灯片。我将:
1. 添加新幻灯片
2. 添加标题文本
3. 创建收入图表
[Claude 将依次使用以下MCP工具:
- add_slide
- add_text
- create_financial_chart]
您:让标题更大并将其颜色改为蓝色。
Claude:我将修改标题的格式。
[Claude 将使用:
- find_element(找到标题)
- edit_element(更新格式)]
您:在图表下方添加一个比较表,比较三个公司。
Claude:我将在现有图表下方添加一个比较表。
[Claude 将使用:
- create_comparison_table]
您:打开Q4报告并显示B2到B5单元格的收入数字。
Claude:我将帮助您检索这些收入数字。
[Claude 将使用:
- list_open_workbooks(找到工作簿)
- get_range_values(读取指定的单元格)]
您:计算这些数字的总和并将它放在B6单元格中。
Claude:我将计算总和并写入B6。
[Claude 将使用:
- get_range_values(获取数字)
- set_cell_value(写入总和)]
您:创建一个名为“总结”的新工作表并将这些值复制过去。
Claude:我将创建一个新的工作表并复制数据。
[Claude 将使用:
- add_worksheet
- get_range_values(从源处获取)
- set_range_values(到目标处)]
自然语言理解
工具选择
上下文管理
错误处理
具体明确
复杂操作
故障排除
您:创建一个关于Q4财务结果的新演示文稿。
Claude:我将创建一个带有标题幻灯片的新演示文稿。
您:添加过去四个季度的收入图表。
Claude:我将在新幻灯片上创建一个展示季度收入的图表。
您:现在添加与竞争对手的比较。
Claude:我将添加一个包含关键指标的比较表,包括您和竞争对手。
您:显示Q4分析工作簿中的所有工作表。
Claude:我将列出该工作簿中的所有工作表。
您:找出B列中的最高收入值。
Claude:我将扫描B列并找到最大值。
您:创建前五个值的摘要。
Claude:我将创建一个新的工作表,包含前五个收入数字。
pptx-mcp/
├── mcp_powerpoint_server.py # 主服务器实现
├── requirements.txt # Python依赖项
├── presentations/ # 演示文稿工作区
│ └── templates/ # 模板存储
└── README.md # 本文件
欢迎贡献!请随意提交Pull Request。
本项目采用MIT许可证 - 查看LICENSE文件了解详情。
Excel服务器提供了通过AI辅助与Excel工作簿、工作表和单元格数据进行交互的工具。
list_open_workbooks:列出所有当前打开的Excel工作簿save_workbook:将工作簿保存到磁盘,可选格式选择list_worksheets:列出工作簿中的所有工作表add_worksheet:向工作簿添加新工作表get_worksheet:通过名称或索引获取工作表get_cell_value:读取单个单元格的值set_cell_value:设置单个单元格的值get_range_values:从单元格范围读取值set_range_values:设置单元格范围的值makepy 生成Office常量