使用说明
PowerPoint MCP服务器(v1)
支持双引擎的PowerPoint MCP服务器:
COM安装了Microsoft PowerPoint的Windows上的模式(最高保真度)OOXML通过其他方式python-pptx以及安全的OOXML助手
TypeScript MCP服务器通过stdio JSON-RPC与本地Python桥通信。
状态
已实施v1第1-2阶段表面:
- 会话工具
- 发现工具
- 滑动工具
- 占位符工具
- 幻灯片快照工具
- 用于演示文稿/幻灯片/布局/母版/主题/快照的MCP资源
仅注册已实施的工具。
运行时目标
- Node.js
>=22 - python
>=3.12
注意:本地开发可以使用兼容的较低补丁/次要版本运行,但Node 22/Python 3.12是声明的基线。
安装
npm install
python3 -m pip install -r requirements.txt -r requirements-dev.txt
pre-commit install --install-hooks
你可以用以下方式做同样的事情:
make install
make precommit-install
跑
npm run dev
# or
npm run build && npm start
创建快捷方式:
make mcp
make mcp-start
Web UI(本地测试控制台)
该仓库包括一个轻量级的FastAPI+静态HTML UI,用于对工具、会话和日志进行交互式测试。
从项目根目录运行它:
python3 -m uvicorn web_ui:app --app-dir python --host 127.0.0.1 --port 8000 --reload
然后打开:
http://127.0.0.1:8000
它揭示了什么:
- 按类别分组的工具目录浏览器(
GET /api/tools) - 发动机信息(
GET /api/engine) - 开放会话列表(
GET /api/sessions) - 通用方法调度器(
POST /api/dispatch) - 通过WebSocket进行实时后端日志记录(
/ws/logs)
相关文件:
python/web_ui.py(FastAPI应用程序+API路由+WebSocket日志广播)python/tool_catalog.py(面向UI的工具元数据/目录整形)web/index.html(单页测试UI)
建筑
src/index.ts:MCP标准输入点src/server.ts:MCP工具/资源注册和验证src/bridge/client.ts:持久Python子进程客户端src/tools/catalog.ts:所有v1工具的扁平zod模式python/bridge.py:以行分隔的JSON-RPC调度程序python/service.py:发动机选择+方法路线python/engines/ooxml_engine.py:跨平台实施python/engines/com_engine.py:Windows COM实现python/com_worker.py:STA线程COM调用隔离
已实施的工具
pptx_get_engine_infopptx_create_presentationpptx_open_presentationpptx_save_presentationpptx_close_presentationpptx_list_open_presentationspptx_get_presentation_statepptx_get_layoutspptx_get_layout_detailpptx_get_masterspptx_get_themepptx_get_slidepptx_add_slidepptx_duplicate_slidepptx_delete_slidepptx_reorder_slidespptx_move_slidepptx_set_slide_backgroundpptx_get_slide_snapshotpptx_get_placeholderspptx_set_placeholder_textpptx_set_placeholder_imagepptx_clear_placeholderpptx_get_placeholder_text
所有变异操作返回 success 加上更新 presentation_state (close除外,它返回关闭确认)。
文件安全模型
- 打开/创建的演示文稿将在临时工作副本中编辑。
- 在明确之前,原始文件不会被修改
pptx_save_presentation. - 会话在内存中,无法在进程重启后继续运行。
快照
- COM模式:本机
Slide.Export - OOXML模式:
soffice --headless+pdftoppm - 如果OOXML模式中缺少依赖项,快照将返回
dependency_missing带有安装提示。
测试
npm test
npm run test:py
基于笔记本电脑的验证(Windows)
以Windows为中心的Jupyter笔记本可在 notebooks/ 对于第1/2阶段验证:
notebooks/01_engine_session_smoke.ipynbnotebooks/02_discovery_and_slide_management.ipynbnotebooks/03_placeholders_background.ipynbnotebooks/04_snapshot_and_reports.ipynb
看 notebooks/README.md 用于运行指导和预期输出。
质量和格式
# Python lint and formatting
npm run lint:py
npm run format:check:py
# Full validation suite
npm run check
# Run all pre-commit hooks manually
npm run precommit:run
等效制造目标:
make check
make lint-py
make format-check-py
make precommit-run
Python工具配置集中在 pyproject.toml:
black用于格式化ruff用于分拣/导入排序规则pytest测试执行的默认值
安全和秘密保护
- 预提交秘密扫描:
detect-secrets随着.secrets.baselinedetect-private-key钩子
- CI秘密扫描
gitleaks(.github/workflows/security.yml) - 建议的GitHub设置:
- 启用分支保护
main - 要求
ci+security合并前检查 - 启用秘密扫描和推送保护
- 启用分支保护
切勿提交真实凭证。使用 .env.example 作为唯一跟踪的env模板。
依赖自动化
Dependabot配置在.github/dependabot.yml用于npm、pip和GitHub操作更新。
Windows COM烟雾运行程序
在安装了PowerPoint的许可Windows计算机上运行此程序,以快速验证COM奇偶校验。
PowerShell包装器:
.\scripts\run_windows_com_smoke.ps1
Python直接调用:
PYTHONPATH=python python scripts/windows_com_smoke.py --output-dir /abs/path/to/artifacts/com-smoke
创建快捷方式:
make com-smoke
make com-smoke-ooxml
有用的选项:
--input-pptx <absolute_path>:对现有甲板进行烟雾检查--layout-name \"Title Slide\":强制添加幻灯片的特定布局--skip-snapshot:跳过图像快照验证--allow-ooxml:调试非Windows主机上的脚本流(不是COM奇偶校验)
输出被写入 artifacts/com-smoke/ 默认情况下:
com_smoke_output_<timestamp>.pptxcom_smoke_snapshot_<timestamp>.jpg(除非跳过)com_smoke_report_<timestamp>.jsoncom_smoke_report_<timestamp>.md(自动状态+手动检查表)
