内容
# 幻灯片 MCP 服务器
[](LICENSE)
[](https://enterprise.adk-rust.com)
[](https://www.zavora.ai)
一个 [模型上下文协议](https://modelcontextprotocol.io/) (MCP)服务器,赋予 AI 助手对 PowerPoint 演示文稿的完全控制权。使用 Rust 构建,借助 [zavora-slide](https://github.com/zavora-ai/zavora-slide) 实现原生 pptx 读取和写入,使用 [rmcp](https://github.com/modelcontextprotocol/rust-sdk) 实现 MCP 协议层。
**71 种工具**涵盖演示文稿的整个生命周期 — 幻灯片、文本块、形状和连接符、表格、图像、图表、主题和布局模式、演讲者备注、超链接和点击操作、SVG 和 PNG 渲染、PDF 导出、markdown 提取以及设计评审,包括对比度检查。
## 安装
```bash
cargo build --release
```
二进制文件位于 `target/release/slides-mcp-server`。
> 需要 [Rust](https://rustup.rs/) 1.85+。如果您没有安装 Rust,请运行:`curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh`
## 客户端配置
### Claude 桌面版
在 `claude_desktop_config.json` 中添加:
```json
{
"mcpServers": {
"slides": {
"command": "/path/to/slides-mcp-server"
}
}
}
```
### Kiro / Cursor
在 `.kiro/settings/mcp.json` 或 `.cursor/mcp.json` 中添加:
```json
{
"mcpServers": {
"slides": {
"command": "/path/to/slides-mcp-server"
}
}
}
```
## 功能
- **创建、打开、编辑和保存** pptx 文件,通过自然语言
- **字节级完全一致** — 打开和保存未更改的演示文稿,文件保持原样
- **幻灯片生命周期** — 添加、复制、删除、重新排序、重新布局、调整大小
- **各级文本** — 文本框、段落、文本块、换行符、项目符号、自适应
- **形状** — 预设、自适应形状、自由形状、连接符、填充、轮廓、z-order
- **表格** — 单元格、样式、行和列插入和删除、合并和拆分、调整大小
- **图像** — 放置、裁剪、旋转
- **图表** — 插入和数据更新
- **主题和布局模式** — 应用外观或布局到整个演示文稿
- **调色板和字体配对** — 列出可用选项,然后选择
- **设计评审** — `lint_design` 检查布局问题,`check_contrast` 检查投影仪上的可读性
- **渲染** — 每张幻灯片的 SVG 或 PNG,以及 `diff_slide_render` 比较两个版本
- **导出** — 整个演示文稿的 PDF,文本的 markdown
- **演讲者备注、页脚、超链接和点击操作**
- **文档属性** — 读取和写入核心元数据
- **注册表清单** — `mcp-server.toml` 声明所有 71 种工具及其风险类别
## 工具参考(71 种工具)
### 演示文稿生命周期(9)
`create_presentation` · `open_presentation` · `save_presentation` · `close_presentation` ·
`save_pdf` · `describe_presentation` · `get_doc_properties` · `set_doc_properties` ·
`list_templates`
### 幻灯片(12)
`add_slide` · `duplicate_slide` · `delete_slide` · `move_slide` · `set_slide_layout` ·
`set_slide_size` · `set_background` · `set_title` · `set_notes` · `set_footer` · `read_slide` ·
`inspect_slide`
### 文本(13)
`add_text_box` · `add_paragraph` · `delete_paragraph` · `move_paragraph` · `add_run` ·
`edit_run` · `delete_run` · `add_line_break` · `add_bullets` · `format_text` ·
`set_run_format` · `set_paragraph_format` · `set_autofit`
### 形状(11)
`add_shape` · `add_autoshape` · `add_freeform` · `add_connector` · `delete_shape` ·
`reorder_shape` · `set_shape_fill` · `set_shape_line` · `set_shape_geometry` ·
`set_hyperlink` · `set_click_action`
### 表格(11)
`add_table` · `set_table_cell` · `set_cell_text` · `set_cell_style` · `set_table_sizing` ·
`table_add_row` · `table_remove_row` · `table_add_column` · `table_remove_column` ·
`merge_cells` · `split_cell`
### 图像和图表(5)
`add_image` · `set_image_crop` · `set_image_rotation` · `add_chart` · `set_chart_data`
### 渲染和导出(4)
`render_slide` · `diff_slide_render` · `to_markdown` · `extract_outline`
### 设计和评审(6)
`apply_theme` · `apply_layout_pattern` · `list_palettes` · `list_font_pairings` ·
`check_contrast` · `lint_design`
## 示例
### 构建演示文稿
**提示:** “为 Q3 收入制作一个包含第二张幻灯片图表的三张幻灯片演示文稿”
助手调用 `create_presentation`,然后为每个幻灯片调用 `add_slide` 和 `set_title`,然后调用 `add_chart` 和 `set_chart_data`,最后调用 `save_presentation`。
### 编辑现有演示文稿
**提示:** “打开 board-deck.pptx 并缩短第 4 张幻灯片的文本”
`open_presentation` 返回一个句柄和幻灯片数量。`read_slide` 显示内容,然后 `edit_run` 修改一个文本块的文本,最后 `save_presentation` 将其写回。
编辑通过索引进行 — `slide`,然后 `shape_idx`,然后 `para_idx` 和 `run_idx` — 因此更改会命名它适用的对象,而不是根据文本进行匹配。
### 检查投影仪的可读性
**提示:** “第 5 张幻灯片在会议室后面是否可读?”
`check_contrast` 报告每个文本块与背景的对比度比率。`lint_design` 检查其他问题:文本溢出形状、元素超出幻灯片、字体大小不一致。
## 地址说明
演示文稿是一棵树 — 幻灯片包含形状,形状包含段落,段落包含文本块 — 工具遵循此结构。任何更改文本的操作都会索引到它操作的级别。
`render_slide` 返回绘图,但尚未识别其中包含的内容。如果您需要一种渲染方式,其元素可以追溯到它们来源的形状 — 例如,使点击可选择 — 引擎在 [zavora-slide](https://github.com/zavora-ai/zavora-slide) 中获得了此功能,名为 `SvgOptions { identify }`,它将在某个版本中在此处公开。
## 从源代码构建
```bash
git clone https://github.com/zavora-ai/mcp_slides
cd mcp_slides
cargo build --release
cargo test
```
## 许可证
Apache-2.0 — 参见 [LICENSE](LICENSE) 了解详情。
---
[ADK-Rust 企业版](https://enterprise.adk-rust.com) MCP 服务器生态系统的一部分。
由 [Zavora AI](https://zavora.ai) 用 ❤️ 构建。