iWork Studio について
iWork Studioは、AIエージェント向けにNumbers、Keynote、Pagesの作成、読み取り、編集、書き出しを行うMCPサーバーです。バックアップ、変更プレビュー、再読み込みによる検証、取り消しでファイルを保護し、アラビア語やデータからのプレゼン作成にも対応します。
主な機能
- 01Numbers・Keynote・Pagesの編集
- 02データからKeynote資料を作成
- 03デザインキットとブランド適用
- 04レンダリング確認と変更プレビュー
- 05バックアップ・検証・取り消し
- 06アラビア語とRTL対応
活用シーン
- 01Numbersの表からプレゼン資料を作成
- 02表やスライドにブランドデザインを適用
- 03資料のはみ出しと読みやすさを確認
- 04iWorkファイルの書き出しと変更の取り消し
MCP 対応
MCPサーバーとして、AIクライアントにiWorkファイル操作ツールを提供します。アプリごとのツールセット選択と、アクセス可能なフォルダーの制限に対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx iwork-studioIWORK_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 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
64掲載時のツール一覧 · 2 週間前に更新
このツールにパラメーターはありません。
詳細
AIでNumbers、Keynote、Pagesのファイルを安全に編集する方法です。
データとブランドに合わせたスライドを作成し、レンダリング結果を確認できます。アラビア語にも対応。
変更はすべてバックアップされ、検証後に元に戻せます。リスクのある操作は推測せず、拒否します。
| 🛡️ ファイルを損傷しません | 🎨 データに基づいてデザイン | ع アラビア語に完全対応 |
|---|---|---|
| バックアップ → コピーを変更 → 再読み込みして比較 → アトミックに置換。開いているファイルには触れません。1回の呼び出しで変更を元に戻せます。 | スプレッドシートを、ブランドキットに合わせたグラフや表のスライドを含むKeynoteデッキに変換し、レンダリング結果を確認できます。 | すべてのアプリとエクスポートで、アラビア語と右から左へ読むテキストを正確に往復できます。 |
インストール · 試してみる · 安全性 · できること · すべてのツール · AIエージェント向け · 変更履歴
15秒:データ → デザインされたデッキ → 安全なロールバック → アラビア語。HD動画
▶ 音声付きの動画を見る(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設定に貼り付けます。MCP Registryにもio.github.Arkanji/iwork-studioとして掲載されています |
これで完了です。インストーラーは必要に応じて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、kit listは常に読み込まれます。 - **初回起動時:**macOSから、ClaudeによるKeynote/Pages/Numbersの操作を一度だけ許可するよう求められます。OKをクリックしてください。(見逃した場合:システム設定 → プライバシーとセキュリティ → オートメーション。)
- 動作を確認する:「このMacでiwork-studioにできることは?」と尋ねてください。
- アンインストール:
uvx --from iwork-studio@latest iwork-studio-mcp uninstall
誰かのために設定しているAIエージェントの方へアプリに対応する行を選んで実行し、続けて
iwork_capabilitiesを呼び出してください。ツールの使用ルールはAGENTS.mdに記載されています。
英語またはアラビア語で、話しかけるだけ
手元にファイルがありませんか?「iWork Studioのサンプルをデスクトップにコピーして、sample-sales.numbersをプレゼン資料にして」と頼んでください。サンプルは合成された売上データで、英語とアラビア語のシートが含まれています。
「太陽光パネルのスタートアップ向けに、midnight kitを使って6枚のピッチ資料を作成し、発表者ノートを追加してPowerPointに書き出してください。」
「sales.numbersをプレゼン資料にしてください。四半期ごとのグラフと、上位地域の表を入れ、Acme kitを使ってください。」
「brand.keyからフォントと色を取り出して、Acme kitとして保存してください。」
「pitch.keyを確認して、はみ出している部分や小さすぎて読めない部分を修正してください。」
「budget.numbersをbanking kitを使ってプロらしい見た目にしてください。先にプレビューを見せてください。」
「sales.csvをNumbersファイルに変換し、ヘッダーを太字のティール色の塗りつぶしにしてください。B列を小数点以下2桁のSARで表示し、合計行を追加してください。」
「pitch.keyでGradientテーマに切り替え、スライド1のタイトルを白の60 ptにしてください。すべてのスライド間にディゾルブを追加し、最後のスライドにlogo.pngを配置してください。」
「2025年と2026年の四半期ごとの売上を示す棒グラフをスライド4に追加してください。」
「スライド3を複製して、コピーを先頭に移動し、発表者ノートに次の内容を追加してください:ملاحظات المتحدث」
「offer-letter.pagesのNameフィールドとDateフィールドに入力し、パスワード保護されたPDFとして書き出してください。」
「invoice.pagesの表で、B3の数量を12に設定し、D9にD2:D8の合計を入力してください。」
「今週作成したKeynoteのプレゼン資料を見つけ、それぞれをPowerPointに書き出してください。」
「budget.numbersへの最後の変更を取り消してください。」
できること
| Numbers | Keynote | Pages | |
|---|---|---|---|
| 読み取り | すべてのシート、テーブル、セル、数式、書式 | すべてのスライドのテキスト、ノート、レイアウト、テーマ、スタイル、グラフ | 本文テキスト、プレースホルダー、テーブル |
| 作成 | データまたは CSV から ⚡ · 組み込みテンプレートから · 独自のファイルから | アウトラインからデザイン済みのデッキを作成。グラフやテーブルのスライドにも対応(Numbers のテーブルから直接) · 組み込みテーマから · 独自のデッキから | 組み込みテンプレートから · 独自のファイルから |
| コンテンツの編集 | セル ⚡ · 数式 · 再計算 · 行と列の挿入/削除 ⚡ · テーブルとシートの追加 ⚡ · 並べ替え | デッキ全体で検索/置換 ⚡ · スライドのタイトルと箇条書き · スライドの追加、複製、削除、移動、非表示 · 発表者ノート · 画像 · グラフ · テーブル | テキストの一括置換 · 本文の置換 · プレースホルダーへの入力 · テーブルのセル(テキスト、数値、数式) |
| デザイン | デザインキット ⚡ · ブランドキット ⚡ · フォント、色、塗りつぶし、配置、折り返し ⚡ · 通貨、%、日付、小数点 ⚡ · 罫線 ⚡ · 幅と高さ ⚡ · ヘッダー ⚡ · 結合 ⚡ | デザインキット · ブランドキット · テーマ · スライドレイアウト · テキストのフォント、サイズ、色 · スタイル設定されたテーブル · トランジション | — |
| レビュー | Keynote の描画内容のデザインレビュー:スライド外にはみ出したテキストやボックスを超えたテキスト、Keynote に縮小されたテキスト、重なり、小さなテキスト、情報が詰め込まれたスライド · 任意のスライドを画像として出力 | ||
| 書き出し | PDF · Excel · CSV | PDF · PowerPoint · 画像 · ムービー | PDF · Word · EPUB · テキスト · RTF |
| プレゼンテーション | 開始、停止、次へ、前へ |
⚡ = アプリ不要でどこでも動作(純粋な Python)。それ以外は、ログイン済みセッションのある Mac 上で実際のアプリ(従来の iWork または Creator Studio アプリ)を操作します。
すべてのファイル形式: 変更を加える前にプレビュー(dry_run)し、メタデータを調べ、プレビューのサムネイルを取得し、Spotlight でファイルを検索し、単語が画面上に表示されていることを確認し、描画されたフォント/サイズ/色を確認し、バックアップを一覧表示して元に戻せます。
対応しないこと
ファイルを壊さないため、意図的に対応していません。
- グラフを含むファイルは、アプリなしで動作するツールでは処理を拒否します。ファイルを書き換えると、グラフとデータのリンクが気付かないうちに壊れる可能性があるためです。アプリを操作するツール(Keynote のスライド、テーマ設定、トランジション、画像、Numbers の数式と並べ替え)はグラフを含むファイルに対応し、すべてのグラフが残っていることを確認します。
- Numbers と Pages のグラフは作成できません。確実にスクリプトで操作できず、ファイルを壊す危険を冒してアプリのメニューをクリックするのではなく、処理を拒否します。Keynote ではグラフを追加できます。Numbers のグラフに触れずに並べ替えたデータをグラフ化するには、新しいテーブルに並べ替え(
to_new_tableを指定したnumbers_sort)、そこから Keynote のグラフスライドを作成してください。 - Pagesで扱えるのはテキストと既存のテーブルに限られます。置換、本文の設定、プレースホルダー、テーブルのセルに対応しています。新しいテーブルは作成できません(Pages 15 ではスクリプト操作に対応していません)。また、ほとんどのレターテンプレートのようなページレイアウト書類には本文テキストがありません。Pages のファイル形式を解析する機能は存在しないため、そのような機能があるかのように装うこともありません。
- 数式と行の移動: 数式を含むテーブルでは、アプリを使わずに行や列を追加できるのは末尾のみです。途中に挿入すると、参照先が誤ったセルになるためです。
- Apple がスクリプト操作に対応していないため、提供していない機能: Numbers のテーブルスタイル、Keynote の図形の塗りつぶしとテキスト配置、Keynote のテーブルの削除、テーマのマスタースライドの編集。ページ余白とページ設定は今後対応予定です。
編集するだけでなく、デザインする
6 種類のデザインキットで、何の変哲もないスライドや表を、そのままプレゼンテーションに使える仕上がりにできます。フォントの組み合わせ(ラテン文字+アラビア文字、すべて macOS にバンドル済みで、インストール不要)、WCAG のコントラスト基準を確認した控えめなカラーパレット、そして文字サイズの段階が含まれています。
| キット | 印象 |
|---|---|
executive | 落ち着いたビジネス向けの印象:スレート系のニュートラルカラーに、ブルーをアクセントとして 1 色 |
banking | 信頼感と重厚さ:深いネイビーに、控えめなゴールド |
classic | 公式レポートや役員会向け:セリフ体の見出しに、ネイビーとアンバー |
teal | 新鮮で自信に満ちた印象:深いティール |
analytics | データを前面に出した印象:鮮やかなブルーに、アンバーのハイライト |
midnight | ダークな舞台:ほぼ黒のスライドに、白いタイトルとミントのアクセント |
キットを指定して作成(keynote_build_deck(..., kit="midnight"))したり、既存の資料を再スタイリング(keynote_apply_design、numbers_apply_design)したり、ブランドカラーとフォントを持ち込んだりできます。コントラストはチェックされます。エージェント向けにはデザインガイドも用意されています。1 スライドにつき 1 つのアイデア、要点を伝えるタイトル、右揃えの数値、控えめな色使いを推奨しています。
ブランドを一度設定すれば、あとはどこでも使えます。 すでにブランドのデザインが適用されているスライドや表を iwork_extract_design_kit に指定すると、フォント(ラテン文字とアラビア文字)と色を読み取り、名前を付けたキットとして保存します。保存したキットは、キットを指定できる場所ならどこでも使えます。また、色とフォントを iwork_save_design_kit で直接保存することもできます。
スライドに数値を表示。 keynote_build_deck のスライドには、データから作成したグラフや表、または Numbers の表から直接作成したグラフや表を配置できます。ヘッダー行が列を、最初の列が行を示します。表にはキットのヘッダーバンド、フォント、交互の行の塗り分け、右揃えの数値が適用され、すべてのセルが読み返されます。
作業結果を自らチェック。 keynote_review_deck は Keynote でスライドをレンダリングし、描画されたすべての行とテキストボックスを照合します。テキストがスライドからはみ出している場合や、ボックス内に収まらない場合はエラーになります。Keynote が文字を縮小して収めた場合、ボックスが重なっている場合、18 pt 未満のテキストがある場合、スライドが窮屈な場合は警告が表示されます。keynote_slide_image はスライドを画像として返すので、エージェントは「完了」と伝える前に内容を確認できます。
安全性モデル
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 の「デスクトップ」と「書類」フォルダがいっぱいになったり、同期されたりすることはありません。ファイルごとに直近 10 件を保持します。 - アプリに隠れて変更しない:ファイルが Numbers、Keynote、Pages で開かれている場合、書き込みは拒否されます。アプリが次に保存したとき、変更が気づかれないまま上書きされるおそれがあるためです。
- 再読み込みして比較:要求された変更だけが行われ、それ以外は何も変わっていないことを確認します。セルを編集した場合は編集後のセルを読み戻し、ほかのすべてのセルを確認します。行を挿入した場合は、新しい位置にあるすべてのセルを確認します。スライドに対する操作では、ほかのすべてのスライドを確認します。並べ替えでは純粋な順序変更であることを確認し、テーブルの数式がほかの行を参照している場合は、Numbers 本来の並べ替えで数式が壊れるため、事前に拒否します。グラフのあるファイルでは、変更前後ですべてのグラフの数を確認します。表のあるスライドデッキでは、すべての表のセルを比較します。エクスポート結果は、独立した別のツールで読み戻します。
- アトミックな置き換え:ファイルは一度の操作で置き換えられるため、クラッシュしてもファイルの一部だけが残ることはありません。
- アプリの「OK」は信用しない:アプリを介して書き込んだ内容はディスクから読み戻します。「成功」したはずの書き込みが反映されていなければ、ロールバックします。
- 1 回の呼び出しで元に戻す:
iwork_list_backups→iwork_restore_backup。復元前に現在のバージョンもバックアップするため、復元をさらに元に戻すこともできます。 - まずプレビュー:既存のドキュメントを変更するすべての書き込みで
dry_run=trueを指定します(復元とエクスポートを除きます)。使い捨てのコピーに対して実際の変更を実行し、すべてのチェックを行ったうえで、何が変更されるかを正確に表示します。元のファイルには触れません。 - 検索と置換でも書式を維持:Pages では、対象のテキストを含む段落だけを書き換えます。
- 新規ファイルで既存ファイルを上書きすることはありません。
- 壊すくらいなら拒否します。 最悪の場合でも、ファイルを壊すのではなく、明確に「いいえ」と返します。
アラビア語とRTL
- アラビア語のテキストは、発表者ノート、Pagesのプレースホルダー、Pagesの表のセルを含め、3つのアプリすべてで完全に往復します。
- 段落の方向はPagesで確認されます。 右から左の段落を左から右に切り替える置換はロールバックされます。Pagesはアラビア語の段落も左から右で書き込み、スクリプトでは変更できないため、こうした段落にはフラグが付けられます。Pagesで方向を設定してください(フォーマット › テキスト)。
- 値は入力したとおりに保持されます。アラビア・インド数字(
١٢٣)、"$1,234.56"、=…のテキストはテキストのままです。数値にしたい場合は、数値を渡してください。 - レンダリングされたPDFを確認するときは、アラビア語の単語を1つだけ検証してください。PDFのテキストレイヤーでは、複数語のRTLテキストの順序が入れ替わります。
全65ツール
書き込みは破壊的操作、読み取りは読み取り専用としてマークされるため、クライアントは書き込み前に確認できます。既存ファイルを変更する書き込みでは、プレビュー用にdry_run=trueを指定します。すべてのツールにはタイトルと各パラメーターの説明があり、類似ツールの代わりにそのツールを使う場面も説明されています。ツールを減らしたい場合は、一部のツールセットだけを読み込んでください(Installの読み込むツールを減らすを参照)。
すべてのファイル(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_export | PDF、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 | 1つのセルを設定 |
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` | 確認用に、1 枚のスライドを画像として表示します | | `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` | テーマ · 1 枚のスライドのレイアウト · 1 つのテキスト項目のフォント、サイズ、色 | | `keynote_set_transition` | エフェクト、再生時間、遅延、自動再生 | | `keynote_add_image` | スライドに画像を配置します | | `keynote_add_chart` | データから棒、折れ線、面、円、散布図のグラフを追加します | | `keynote_add_table` | デザインキットでスタイルを設定した表を追加します。すべてのセルを読み取れます | | `keynote_slideshow` | スライドショーの開始、停止、次へ、前へ |Pages(7)
| ツール | 機能 |
|---|---|
pages_preflight | Pages が応答できるか確認します(最初に 1 回実行してください) |
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 プロンプトを表示するクライアントでは、すぐに使える 4 つのワークフローが利用できます。概要からピッチデッキを作成、Numbers の表からレポートデッキを作成、ブランドに合わせてスタイルを変更、この表を見栄えよくデザインです。それぞれ、デザインルールに書き込み、1 回の呼び出しで作成し、スタイル変更の前にプレビューしてから、作業完了とする前にデザインレビューを実行します。
AI エージェント向け
AGENTS.md:あらゆるエージェント(Codex、Cursor、Copilot、Gemini)のセットアップと使用ルールです(Claude Code はCLAUDE.mdを通じて読み込みます)。- MCP の指示:サーバーは接続時にルールを送信するため、このリポジトリがなくてもモデルはルールを確認できます。
- スキル:
skill-pack/SKILL.mdは、このリポジトリ内では Claude Code が自動検出します。それ以外のスキルベースのエージェントでは、bash skill-pack/install.shを実行してください。MCP を利用しないエージェント向けに、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"])
エージェントがつまずかないように特定した落とし穴
save in <path>は iWork のサンドボックスによって拒否されます。 ファイル内でのsaveとexportは機能します。→sandbox-trap.md- Keynote のスライドの
title/bodyプロパティは-1700を返します。 テキスト項目のobject textを使用してください。→keynote-1700-defect.md - ファイルレベルのライブラリがファイルを書き換えると、グラフファイルは気づかないうちに破損するため、それらの経路では処理を拒否します。 アプリ上で編集すると、そのアプリがグラフのリンクを保持するため、アプリ経由の処理ではグラフを許可し、編集の前後ですべてのグラフを数えます。
- iWork の形式では、バイト単位で完全に一致する保存はできません。 実際の基準は意味的なものです。再度開けることと、モデル全体が一致することが条件です。
- 初回起動時のアクセス許可ダイアログとテンプレート選択ダイアログは、すべてのスクリプト呼び出しをブロックします。事前チェックにより、ハングを明確なプロンプトに置き換えます。→
tcc-preflight.md - 「Creator Studio」アプリの名前は異なります。
Application("Numbers")をハードコードすると誤ったアプリが起動するため、名前は呼び出しごとに解決されます。→apps.py - stdout は MCP の通信経路です。 ライブラリのインポート時の警告で破損するため、警告は stderr に出力します。
- Keynote の JavaScript による挿入と移動は機能しません。 AppleScript の
make new slideとmove slide … to before slide …は機能します。 - Keynote のマスタースライドには JavaScript からアクセスできません(
-1700)。レイアウトには AppleScript 経由でアクセスします。 - numbers-parser は、スタイルの変更をファイル内に保存しません。 スタイルを先に登録してから適用します。
- numbers-parser は 12 を 12.000000000000002 として保存しました。 現在は小数を正確にエンコードします。
- numbers-parser は行の移動時に数式の参照を更新しないため、数式を含む表の途中への行の挿入は拒否されます。
- Keynote の色はチャンネルごとに 0~65535 です。 0~255 や 0~1 ではありません。
- Pages のページレイアウト書類には本文テキストがありません(
bodyText()は null です)。また、レターやチラシのテンプレートのほとんどはページレイアウトです。代わりに、すべてのテキストボックスのプレースホルダーに入力し、内容を確認します。 - Pages の表は JavaScript からは見えませんが、AppleScript からは読み書きできます。Pages 15 では表の作成が機能しないため、既存の表のみを対象とします。
- Pages のサンドボックスは、範囲外のファイルに対する AppleScript の
openを拒否します。 JavaScript のopenは許可されるため、その方法で書類を開き、完全一致するパスで検索します。 - numbers-parser は再保存時に数式を壊すことがあります(上流で報告済み)。アプリを使わない書き込みでは、すべての数式を比較するため、破損があれば検出され、変更は行われません。
- Numbers は、Numbers を使わずに変更されたファイルを開いても数式を再計算しません。 合計には古い結果が残ります。アプリを使わない編集ではその旨を示し、
numbers_recalculateを使うと Numbers がすべての数式を再計算します。 - numbers-parser が使用する丸め処理ライブラリは、保存のたびにプロセス内のすべての警告フィルターを消去します。 他の設定には触れずに静かな状態を保てるよう、ライブラリをラップしています。
- リポジトリを iCloud Drive に置かないでください。 同期によって
.git内に「main 2」のコピーが作成されます。 - Keynote で表を作成する方法は 1 つだけです。
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。落とし穴も含まれています。ぜひ活用してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。