mcpField
I
iWork Studio

iWork Studio

本地服务
github.com/Arkanji生产力32 周前更新

关于 iWork Studio

iWork Studio 是供 AI Agent 创建、读取、编辑和导出 Numbers、Keynote 与 Pages 文件的 MCP 服务。它通过备份、预览、重新读取校验和撤销来保护文件,并支持阿拉伯语及从数据生成演示文稿。

主要功能

  1. 01编辑 Numbers、Keynote 和 Pages
  2. 02从数据生成 Keynote 演示文稿
  3. 03设计套件与品牌样式
  4. 04渲染检查和变更预览
  5. 05备份、校验与撤销
  6. 06阿拉伯语和 RTL 支持

适用场景

  1. 01将 Numbers 表格制作成演示文稿
  2. 02按品牌样式调整表格或幻灯片
  3. 03检查演示文稿的溢出与可读性
  4. 04导出并撤销 iWork 文件变更

MCP 相关

作为 MCP 服务,向 AI 客户端提供 iWork 文件操作工具;可按应用选择工具集,并限制可访问的文件夹。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"arkanji-iwork-studio": {
"command": "uvx",
"args": [
"iwork-studio"
],
"env": {
"IWORK_STUDIO_ROOTS": "<IWORK_STUDIO_ROOTS>",
"IWORK_STUDIO_TOOLSETS": "<IWORK_STUDIO_TOOLSETS>"
}
}
}
}
启动命令uvx iwork-studio
需要配置的环境变量
IWORK_STUDIO_ROOTSFolders the server may touch, separated by ':' (recommended)
IWORK_STUDIO_TOOLSETSLoad only some tools: comma-separated files, numbers, keynote, pages, design (default all)

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypiiwork-studio2.6.1

工具

64

收录的工具列表 · 更新于 2 周前

此工具无需参数。

详细介绍

iWork Studio — 使用 Python 读取和编辑 Apple Numbers、Keynote 和 Pages

CI Version License: MIT iWork MCP server Arabic safe Undo

让 AI 安全编辑你的 Numbers、Keynote 和 Pages 文件。

根据你的数据和品牌设计演示文稿,并检查渲染效果。支持阿拉伯语。
每项更改都有备份、经过验证且可撤销;遇到任何风险操作都会拒绝,绝不猜测。

🛡️ 绝不损坏你的文件🎨 根据你的数据设计ع 一流的阿拉伯语支持
备份 → 修改副本 → 重新读取并比较 → 原子替换。不会动正在打开的文件。一次调用即可撤销任何更改。将电子表格转换为符合你品牌规范的 Keynote 演示文稿,包含图表和表格幻灯片,然后检查渲染效果。在每款应用和每种导出格式中,阿拉伯语和从右到左的文本都能准确往返。

安装 · 试试看 · 安全机制 · 功能介绍 · 所有工具 · 面向 AI Agent · 更新日志


15 秒了解 iWork Studio:输入提示词,将 sales.numbers 转换为设计精美的 Keynote 幻灯片;若写入结果不符,则回滚且文件保持原样;同一张幻灯片还可呈现为从右向左排版的阿拉伯语

15 秒:数据 → 设计精美的演示文稿 → 安全回滚 → 阿拉伯语。高清视频



iWork Studio 实际演示:AI Agent 编辑 Numbers 单元格并保留公式、更新每张 Keynote 幻灯片但不影响格式,并在 Pages 中撰写阿拉伯语信件

▶ 观看带声音的演示影片(46 秒)· 阅读发布故事


安装

你的应用操作
Claude 桌面应用,一键安装(Mac)从最新版本下载 iwork-studio-<version>.mcpb,双击打开,然后选择它可以使用的文件夹
Claude 桌面应用(Mac,通过终端)在终端中粘贴:curl -LsSf https://raw.githubusercontent.com/Arkanji/iwork-studio/main/install.sh | sh,然后退出 Claude(Cmd-Q)并重新打开
Claude Code,作为插件(工具 + 技能)/plugin marketplace add Arkanji/iwork-studio,然后 /plugin install iwork-studio@iwork-studio
Claude Code,仅工具claude mcp add iwork-studio -- uvx --from iwork-studio@latest iwork-studio-mcp
Cursor、VS Code、Codex、任何 MCP 客户端uvx --from iwork-studio@latest iwork-studio-mcp config,然后将输出的 JSON 粘贴到客户端的 MCP 设置中。也已作为 io.github.Arkanji/iwork-studio 列入 MCP Registry

就这么简单。安装程序会在需要时安装 uv,而 uv 自带 Python。

  • 限制访问范围(推荐):… | sh -s -- --roots ~/Documents ~/Desktop 将访问范围限制在这些文件夹中。其他客户端:设置 IWORK_STUDIO_ROOTS(以 : 分隔)。
  • 减少加载内容(可选):只使用 Keynote?设置 IWORK_STUDIO_TOOLSETS=keynote,design(可选值为 files、numbers、keynote、pages、design;默认全部启用)。工具越少,AI 越专注,上下文也越精简。Claude Desktop 扩展有一个 Toolsets 字段;在 Claude Code 中:claude mcp add iwork-studio -e IWORK_STUDIO_TOOLSETS=keynote,design -- uvx --from iwork-studio@latest iwork-studio-mcp。Capabilities、read、find、undo 和工具包列表始终会加载。
  • **首次运行:**macOS 会询问一次是否允许 Claude 控制 Keynote / Pages / Numbers。点击 OK。(错过了?前往“系统设置” →“隐私与安全性” →“自动化”。)
  • **检查是否正常:**询问 “iwork-studio 在这台 Mac 上能做什么?”。
  • 移除:uvx --from iwork-studio@latest iwork-studio-mcp uninstall

**正在为他人设置的 AI Agent?**选择适用于对方应用的那一行,运行命令,然后调用 iwork_capabilities。使用这些工具的规则请参阅 AGENTS.md。

直接用英文或阿拉伯文提出需求

**手边没有文件?**可以这样说:“把 iWork Studio 示例复制到我的桌面,并将 sample-sales.numbers 制作成董事会演示文稿。” 示例是合成销售数据,包含英文和阿拉伯文工作表。

“使用 midnight 工具包,为一家太阳能电池板初创公司制作一份 6 页的路演演示文稿,添加演讲者备注,并导出为 PowerPoint。”

“把 sales.numbers 制作成董事会演示文稿:绘制各季度图表,添加地区销售额前列的表格,并使用我们的 Acme 工具包。”

“从 brand.key 中提取字体和颜色,并将其保存为我们的 Acme 工具包。”

“检查 pitch.key,并修复所有溢出或字号太小、难以阅读的内容。”

“用 banking 工具包美化 budget.numbers——并先给我看预览。”

“将 sales.csv 转成 Numbers 文件,把表头设为粗体、填充青绿色,将 B 列显示为 SAR,保留两位小数,并添加合计行。”

“在 pitch.key 中切换到 Gradient 主题,将第 1 张幻灯片的标题设为白色、60 pt,在每张幻灯片之间添加溶解转场,并将 logo.png 放到最后一张幻灯片。”

“在第 4 张幻灯片中添加一张柱状图,显示 2025 年和 2026 年各季度的收入。”

“复制第 3 张幻灯片,将副本移到最前面,并添加演讲者备注:ملاحظات المتحدث”

“填写 offer-letter.pages 中的 Name 和 Date 字段,然后将其导出为受密码保护的 PDF。”

“在 invoice.pages 的表格中,将 B3 的数量设为 12,并将 D9 设为 D2:D8 的合计。”

“找出我本周的 Keynote 演示文稿,并将每个文件都导出为 PowerPoint。”

“撤销对 budget.numbers 的上一次更改。”

功能

NumbersKeynotePages
读取每张工作表、表格、单元格、公式和格式每张幻灯片的文本、备注、布局、主题、样式和图表正文文本、占位符和表格
创建根据数据或 CSV 创建 ⚡ · 根据内置模板创建 · 根据自己的文件创建根据大纲创建设计精美的演示文稿,其中包含图表和表格幻灯片(直接使用 Numbers 表格)· 根据内置主题创建 · 根据自己的演示文稿创建根据内置模板创建 · 根据自己的文件创建
编辑内容单元格 ⚡ · 公式 · 重新计算 · 插入/删除行和列 ⚡ · 添加表格和工作表 ⚡ · 排序在整个演示文稿中查找/替换 ⚡ · 幻灯片标题和项目符号 · 添加、复制、删除、移动、隐藏幻灯片 · 演讲者备注 · 图像 · 图表 · 表格全文替换 · 替换正文 · 填写占位符 · 表格单元格(文本、数字、公式)
设计设计套件 ⚡ · 品牌套件 ⚡ · 字体、颜色、填充、对齐、换行 ⚡ · 货币、%、日期、小数 ⚡ · 边框 ⚡ · 宽度和高度 ⚡ · 标题 ⚡ · 合并 ⚡设计套件 · 品牌套件 · 主题 · 幻灯片布局 · 文本字体、大小和颜色 · 样式化表格 · 转场效果—
审阅Keynote 渲染内容的设计审阅:文本超出幻灯片或其文本框、Keynote 被迫缩小的文本、重叠、小号文本、内容拥挤的幻灯片 · 将任意幻灯片导出为图像
导出PDF · Excel · CSVPDF · PowerPoint · 图像 · 影片PDF · Word · EPUB · 文本 · RTF
演示开始、停止、下一张、上一张

⚡ = 随处可用,无需应用(纯 Python)。其他功能都需要在已登录会话的 Mac 上驱动实际应用,包括经典版 iWork 或 Creator Studio 应用。

支持所有文件类型: 在更改前预览(dry_run)、查询元数据、获取预览缩略图、使用 Spotlight 查找文件、检查某个词是否已实际渲染、检查渲染后的字体/大小/颜色、列出备份并撤销操作。

不支持的功能

这是有意为之,以免损坏文件:

  • 包含图表的文件无法使用无需应用的工具处理:重写操作可能会在不提示的情况下破坏图表与其数据的关联。由应用驱动的工具(Keynote 幻灯片、主题设置、转场效果、图像;Numbers 公式和排序)可以处理这类文件,并会检查所有图表是否仍然存在。
  • Numbers 和 Pages 中的图表无法创建:这些操作无法可靠地通过脚本实现,因此我们选择拒绝操作,而不是点击应用菜单并冒着损坏文件的风险。Keynote 可以添加图表。若要对排序后的数据创建图表,同时不改动 Numbers 图表,可将数据排序到新表格中(使用 numbers_sort 的 to_new_table),再据此创建 Keynote 图表幻灯片。
  • Pages仅支持文本和现有表格:替换文本、设置正文、填充占位符和修改表格单元格。无法创建新表格(Pages 15 不支持脚本操作),而且页面布局文稿(例如大多数信件模板)没有正文文本。没有任何 Pages 文件格式解析器,因此不会假装有这样的解析器。
  • 公式和行移位:含有公式的表格,只能在不使用应用的情况下追加行和列。在中间插入会导致引用指向错误的单元格。
  • Apple 脚本不支持的功能,因此不提供:Numbers 表格样式、Keynote 形状填充和文本对齐、删除 Keynote 表格、编辑主题的母版幻灯片。页面边距和页面设置已列入计划。

不只是编辑,更是设计

六套设计套件能把普通的演示文稿或表格变成适合展示的作品:一组字体搭配(拉丁字母 + 阿拉伯字母,均已随 macOS 附带,无需安装)、经过 WCAG 对比度检查的克制配色,以及一套字号比例。

套件风格
executive沉稳、商务:石板色中性色,搭配一种蓝色点缀
banking可信、厚重:深海军蓝,搭配克制的金色
classic正式报告与董事会风格:衬线标题,搭配海军蓝和琥珀色
teal清新、自信:深青色
analytics突出数据:亮蓝色,搭配琥珀色高光
midnight暗色舞台:近黑色幻灯片、白色标题、薄荷色点缀

使用一套套件构建(keynote_build_deck(..., kit="midnight"))、为任何内容重新设计样式(keynote_apply_design、numbers_apply_design),也可以用自己的品牌颜色和字体——系统会检查对比度。Agent 还可以使用设计指南:每张幻灯片表达一个想法、标题直陈要点、数字右对齐、配色克制。

一次设置品牌。 将已有品牌风格的演示文稿或表格交给 iwork_extract_design_kit,它会读取字体(拉丁字母和阿拉伯字母)与颜色,并将其保存为命名套件,可在任何支持套件的地方使用。也可以用 iwork_save_design_kit 直接保存颜色和字体。

幻灯片上的数字。 keynote_build_deck 中的幻灯片可以包含图表或表格,数据可以来自数据集,也可以直接取自 Numbers 表格:标题行定义列,第一列定义行。表格会应用套件的标题栏、字体、交替底色和右对齐数字,并读取回每个单元格。

它会检查自己的工作。 keynote_review_deck 会通过 Keynote 渲染演示文稿,并将每一行绘制内容与对应的文本框进行比较:文本超出幻灯片或溢出文本框属于错误;Keynote 为适应文本而缩小字号、文本框重叠、字号低于 18 pt 以及幻灯片内容过于拥挤属于警告。keynote_slide_image 会将幻灯片作为图像返回,让 Agent 在说“完成”前先检查效果。

安全模型

iWork 应用会轻易地对一个刚被它弄坏的文件说“已保存”。这里绝不相信“已保存”。

backup → change a scratch copy → re-open it and compare → atomic swap
                       ↘ anything off: your file is untouched, the error says why
  • 先备份,备份带版本且仅供本地使用:存放于 ~/.iwork-studio/backups/(或 IWORK_STUDIO_BACKUP_DIR),绝不放在文件旁边,以免备份占满或同步到 iCloud Desktop 和 Documents。每个文件保留最近 10 份备份。
  • 绝不绕过应用直接修改:如果文件已在 Numbers、Keynote 或 Pages 中打开,就会拒绝写入。否则应用下次保存时可能会悄悄覆盖更改。
  • 重新读取并比较:确认只发生了请求的更改,没有其他改动。编辑单元格后会重新读取该单元格,并检查所有其他单元格。插入行后会检查新位置上的每个单元格。幻灯片操作会检查所有其他幻灯片。排序会检查是否只是重新排列;如果表格公式引用了其他行,就会提前拒绝操作,因为 Numbers 自带的排序会破坏公式。对于含图表的文件,会在操作前后统计所有图表;对于含表格的演示文稿,会比较所有表格的单元格。导出内容会由第二个独立工具重新读取。
  • 原子替换:文件一次性替换,因此即使崩溃也不会留下不完整的文件。
  • 绝不相信应用的“正常”反馈。 应用执行的写入会从磁盘重新读取;如果写入显示“成功”却未实际生效,就会回滚。
  • 一次调用即可撤销:iwork_list_backups → iwork_restore_backup。恢复前会先备份当前版本,因此撤销操作也可以撤销。
  • 先预览:所有会更改现有文档的写入都需要设置 dry_run=true(恢复和导出除外)。它会在临时副本上执行实际更改并运行所有检查,准确展示将要发生的变化。你的文件不会受到影响。
  • 查找和替换会保留格式:在 Pages 中,只会重写包含目标文本的段落。
  • 新文件绝不覆盖已有文件。
  • 宁可拒绝,也不损坏。 最坏的结果只是明确说“不”,绝不会弄坏文件。

阿拉伯语与 RTL

  • 阿拉伯语文本在三个应用中都能精确往返,包括演讲者备注、Pages 占位符和 Pages 表格单元格。
  • 在 Pages 中检查段落方向。 如果替换操作将从右向左的段落改为从左向右,则会回滚。Pages 会将新段落设为从左向右,即使内容是阿拉伯语也一样,而且脚本无法更改方向,因此这类情况会被标记:请在 Pages 中设置方向(格式 › 文本)。
  • 按原样保留输入的值:阿拉伯-印度数字(١٢٣)、"$1,234.56" 和 =… 文本仍为文本。需要数字时,请传入真正的数值。
  • 检查渲染后的 PDF 时,请断言一个阿拉伯语词。PDF 文本层会重新排列多个 RTL 词语。

全部 65 个工具

写入操作标记为有破坏性,读取操作标记为只读,因此客户端可以在写入前询问。每个会更改现有文件的写入操作都支持 dry_run=true 预览。每个工具都有标题和参数说明,并注明应在何时使用它,而不是同类工具。需要更少工具?只加载部分工具集(参见安装中的减少加载)。

任意文件(17)
工具功能
iwork_capabilities此设备的能力:应用、GUI 会话、可用的操作路径
iwork_read任意 .numbers / .key / .pages → JSON
iwork_find按类型和名称查找 iWork 文件(Mac 上使用 Spotlight)
iwork_samples复制示例文件(合成销售数据、英语和阿拉伯语),无需使用自己的文件即可试用
iwork_metadata · iwork_thumbnail模板、应用构建版本、格式版本、幻灯片数量 · 存储的预览图像
iwork_create · iwork_create_from_template使用 Apple 内置模板创建新文件 · 复制自己的文件
iwork_list_templates内置模板(Numbers、Pages)和主题(Keynote)
iwork_list_design_kits设计套件:字体、调色板、字体比例 — 预设和已保存的套件
iwork_extract_design_kit从自己的演示文稿或表格提取套件:其中的字体和颜色;可按名称保存
iwork_save_design_kit · iwork_delete_design_kit按名称保留品牌套件 · 删除套件
iwork_exportPDF、Excel、CSV、Word、EPUB、文本、RTF、PowerPoint、幻灯片图像、影片;可选密码
iwork_verify_render · iwork_verify_format渲染后的 PDF 是否显示此文本 · 字体、字号、颜色和页面尺寸是否符合要求
iwork_list_backups · iwork_restore_backup撤销
Numbers(17)
工具功能
numbers_create · numbers_import_csv使用数据行创建新文件 · 从 CSV/TSV 创建
numbers_edit_cell设置一个单元格
numbers_set_formula在单元格中填入公式;由 Numbers 计算
numbers_recalculate对未通过 Numbers 执行的编辑后,让 Numbers 重新计算所有公式
numbers_insert · numbers_delete在任意位置插入或删除行、列
numbers_add_table在工作表上或新工作表上创建新表格
numbers_sort按列对表格数据行排序。若表格公式会读取其他行,则拒绝排序,因为 Numbers 的排序会破坏这些公式;to_new_table 会将已排序的值副本放入新表格,并保留原表格、公式和图表
numbers_inspect_format列宽、行高、标题、合并单元格,以及每个单元格的样式、数字格式和边框
numbers_set_cell_style字体、字号、粗体/斜体/下划线/删除线、颜色、填充、对齐、换行
numbers_set_number_format数字、货币(任意 ISO 代码)、百分比、科学计数、分数、日期、文本;小数位数、分隔符、负数
numbers_set_borders全部 / 外框 / 内部 / 单侧;宽度、颜色、样式
numbers_set_dimensions · numbers_set_headers · numbers_merge_cells列宽和行高 · 标题行/列 · 合并单元格
Keynote(23) | 工具 | 功能 | |---|---| | `keynote_build_deck` | 根据大纲新建演示文稿:标题、项目符号、备注、图片、图表和表格幻灯片、切换效果、设计套件 | | `keynote_review_deck` | 审查渲染后的演示文稿设计:超出幻灯片范围和溢出的文本、重叠内容、小字号文本、内容拥挤的幻灯片 | | `keynote_slide_image` | 将单张幻灯片呈现为图像,供查看 | | `keynote_set_slide_text` | 填写幻灯片的标题和正文 | | `keynote_apply_design` | 使用设计套件为每张幻灯片重新设置样式 | | `keynote_replace_text` | 在每张幻灯片中查找并替换文本,不更改格式 | | `keynote_list_slides` | 列出每张幻灯片的文本、备注、隐藏状态和图表数量 | | `keynote_add_slide` · `keynote_duplicate_slide` · `keynote_delete_slide` · `keynote_move_slide` · `keynote_skip_slide` | 幻灯片操作 | | `keynote_set_presenter_notes` | 演讲者备注 | | `keynote_list_themes` · `keynote_inspect_style` | 可用主题 · 演示文稿的主题、版式和文本样式 | | `keynote_set_theme` · `keynote_set_slide_layout` · `keynote_format_text` | 主题 · 单张幻灯片的版式 · 单个文本项的字体、字号、颜色 | | `keynote_set_transition` | 效果、时长、延迟、自动播放 | | `keynote_add_image` | 在幻灯片上放置图片 | | `keynote_add_chart` | 根据数据添加柱状图、折线图、面积图、饼图或散点图 | | `keynote_add_table` | 添加使用设计套件设置样式的表格;会回读每个单元格 | | `keynote_slideshow` | 开始、停止、下一张、上一张 |
Pages(7)
工具功能
pages_preflight检查 Pages 是否可以响应(先运行一次)
pages_replace_all · pages_set_body替换所有位置的文本 · 替换整个正文(重置其格式)
pages_list_placeholders · pages_fill_placeholders模板字段,例如姓名和日期
pages_read_tables · pages_set_table_cells读取所有表格 · 向现有表格中写入文本、数字和公式

如果演示文稿已在 Keynote 中打开,Keynote 幻灯片、主题、切换效果和图片工具会拒绝操作(它们绝不会关闭可能包含未保存内容的窗口)。要全部隐藏这些工具:IWORK_STUDIO_DISABLE_SLIDE_OPS=1。

提示词。 能显示 MCP 提示词的客户端会提供四种现成的工作流:根据大纲制作推介演示文稿、根据 Numbers 表格制作报告演示文稿、使用我的品牌重新设置样式和为这个表格设计样式。每种工作流都会写入设计规则、通过一次调用完成构建、在重新设置样式前预览,并在宣布任务完成前进行设计审查。

面向 AI Agent

  • AGENTS.md:适用于任何 Agent(Codex、Cursor、Copilot、Gemini;Claude Code 通过 CLAUDE.md 读取)的设置和使用规则。
  • MCP 说明:服务在连接时会发送规则,因此即使没有此仓库,模型也能获取这些规则。
  • 技能:skill-pack/SKILL.md,Claude Code 会在此仓库中自动发现此文件;其他基于技能的 Agent 可运行 bash skill-pack/install.sh。其中包含为不使用 MCP 的 Agent 提供 JSON 输出的 CLI 脚本。
  • llms.txt:简短、机器可读的摘要。

**约定:**输入 JSON,输出 JSON。错误均有明确类型,并说明应告知用户的内容,例如 ChartRefusalError、DocumentOpenError、PagesOutOfScopeError、AquaSessionError(此处没有 Mac GUI),等等。写入操作遭拒时,不要试图绕过限制后重试。

Python

pip install iwork-studio      # Python 3.12
from iwork_studio import numbers_structure, numbers_format, numbers_io, keynote_io, keynote_slides, exporter, backups

from iwork_studio import keynote_deck, design, review

keynote_deck.build_deck("pitch.key", [{"title": "شمس", "body": "Clean energy for every home"},
                                      {"title": "Why now", "body": ["Trust", "Access"]},
                                      {"title": "Riyadh leads growth", "chart": {"type": "bar", "from": "sales.numbers"}}],
                        kit="midnight")                                  # macOS + Keynote
review.review_deck("pitch.key")["findings"]                              # macOS + Keynote
design.extract_kit("brand.numbers", name="Acme", save=True)
numbers_structure.import_csv("sales.csv", "sales.numbers")
design.apply_to_numbers("sales.numbers", "banking")
numbers_format.set_cell_style("sales.numbers", "A1:D1", bold=True, fill_color="#1A7F79", font_color="#FFFFFF")
numbers_format.set_number_format("sales.numbers", "B2:B99", "currency", currency_code="SAR", decimal_places=2)
numbers_io.edit_cell("sales.numbers", "B2", 2500)
keynote_io.edit_text("pitch.key", "2025", "2026")
keynote_slides.set_presenter_notes("pitch.key", 1, "ملاحظات")          # macOS + Keynote
exporter.export("pitch.key", "pptx")                                     # macOS + Keynote
backups.restore_backup("sales.numbers", backups.list_backups("sales.numbers")[0]["name"])
我们已摸清这些陷阱,避免你的 Agent 踩坑
  1. iWork 沙盒会拒绝 save in <path>。 原地 save 和 export 可以正常使用。→ sandbox-trap.md
  2. Keynote 的幻灯片 title/body 属性会报错 -1700。 请使用文本项的 object text。→ keynote-1700-defect.md
  3. 图表文件会悄无声息地损坏,因此文件级库重写图表文件的处理方式会拒绝这些文件。由应用执行编辑时,图表会保持关联,因此应用驱动的处理方式允许编辑,并会在前后统计每个图表。
  4. iWork 格式不支持保存后字节完全相同。 真正的标准是语义正确:文件可以重新打开,且完整模型保持一致。
  5. 首次运行时的权限和模板选择器对话框会阻塞所有脚本调用。预检会将卡住的问题转化为一条明确提示。→ tcc-preflight.md
  6. “Creator Studio”应用的名称各不相同。 硬编码的 Application("Numbers") 会驱动错误的应用;应用名称会在每次调用时解析。→ apps.py
  7. stdout 是 MCP 的通信通道。 库在导入时输出的警告会破坏通信,因此这些警告会发送到 stderr。
  8. Keynote 的 JavaScript 插入和移动功能有缺陷;AppleScript make new slide 和 move slide … to before slide … 可以正常使用。
  9. 无法通过 JavaScript 访问 Keynote 母版幻灯片(-1700);布局操作通过 AppleScript 完成。
  10. numbers-parser 不会保存原地进行的样式编辑。 必须先注册样式,再应用样式。
  11. numbers-parser 会将 12 存储为 12.000000000000002。 现在会对小数进行精确编码。
  12. numbers-parser 移动行时不会更新公式引用,因此会拒绝在公式表格中间插入行。
  13. Keynote 颜色的每个通道范围是 0–65535,而不是 0–255 或 0–1。
  14. Pages 页面布局文档没有正文文本(bodyText() 为 null),而且大多数信件和传单模板都采用页面布局。我们会改为填充占位符,并检查每个文本框。
  15. JavaScript 脚本无法读取 Pages 表格,但 AppleScript 可以读写;Pages 15 中创建表格的功能有缺陷,因此只提供现有表格。
  16. Pages 沙盒会拒绝 AppleScript open 打开沙盒外的文件;JavaScript open 则可以,因此会通过 JavaScript 打开文档,再按其确切路径查找。
  17. numbers-parser 重新保存时可能会破坏公式(上游报告)。所有不使用应用的写入操作都会逐一比较每个公式,因此一旦公式损坏就会被发现,且不会进行任何更改。
  18. Numbers 打开未经其修改的文件时不会重新计算公式:总计会保留旧结果。未通过应用进行的编辑会明确说明这一点,而 numbers_recalculate 会让 Numbers 重新计算所有公式。
  19. numbers-parser 使用的舍入库每次保存时都会清除进程中的所有警告筛选器。 我们对它进行了封装,使其保持静默,同时不影响其他人的设置。
  20. 不要将仓库放在 iCloud Drive 中。 同步会在 .git 中创建“main 2”副本。
  21. Keynote 只能通过一种方式创建表格:tell slide n to make new table 可以正常使用,而 make new table at end of tables of slide n 和删除表格会报错 -10000。添加表格失败时,会通过恢复备份撤销操作。

更多陷阱及其状态,请参阅:jxa-traps.md(包括从 reichenbach/iwork_mcp 借鉴的陷阱)。

构建方式
pure Python file parsers (headless, deterministic)  →  .numbers everything, .key text
the real app via AppleScript / JXA                   →  .key slides & theming, .pages text & tables, formulas, sort, export, render checks
MCP server · CLI scripts · skill                     →  thin wrappers over the same library and the same safety model
src/iwork_studio/   numbers_io · numbers_format · numbers_structure · keynote_io · keynote_slides · keynote_theme
                    keynote_deck · keynote_table · design · review · preview · pages_io · app_ops · exporter
                    helpers · format_check · render_verify · pdf · backups · apps · mcp_server
mcpb/               Claude Desktop extension manifest (scripts/build_mcpb.sh builds the .mcpb)
skill-pack/         SKILL.md · CLI scripts · references (capabilities, traps, pins); also the Claude Code plugin
.claude-plugin/     plugin marketplace (one plugin: skill-pack/)
tests/              headless suite (CI) · `pytest -m aqua` = live suite for a Mac with iWork
install.sh          one-line setup for the Claude desktop app
## 贡献
git clone https://github.com/Arkanji/iwork-studio.git && cd iwork-studio
uv run --extra test pytest -m "not aqua"      # headless suite, what CI runs
uv run --extra test pytest -m aqua            # live suite: a Mac with Numbers, Keynote and Pages
scripts/live.sh                               # the same, unattended: logs to ~/.iwork-studio/probes, quits the apps it opened

iWork 在不同版本间会有变化。如果出现问题,请查看功能和陷阱,运行实时测试套件,并记录发生的变化。新的写入路由必须遵循安全模型,并附带证明可回滚的测试。请在 iCloud 同步文件夹之外克隆仓库。

许可证

MIT,包含陷阱。拿去吧。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。