MCP.Market

iWork Studio MCP server

by Arkanji·io.github.Arkanji/iwork-studio·v2.6.1·2 stars

Create, edit, design and export Apple Numbers, Keynote and Pages files. Verified and Arabic-safe.

A92/100grade A
What users say
No reviews yet
Be the first
Safety scan
A92/100

full report

Adoption
Growing

2 stars149 downloads/wk

Reviews

Write one

Nobody has reviewed iWork Studio yet.

If you have run it, two minutes of your experience saves the next person an afternoon.

iWork Studio tools (65, 10 write)

write = sends, deletes, buys or posts

Read from the package source without running it. The installed server may list more.

  • iwork_capabilities

    What this machine can do right now: routes, GUI session, installed apps, Keynote slide-op status. Call first when unsure.

  • iwork_createwrite action

    New .numbers / .key / .pages from Apple's built-in templates (Keynote: themes); names from iwork_list_templates. Omit template for Blank / Basic White. Refuses to overwrite. Needs macOS + the app.

  • iwork_create_from_templatewrite action

    Start a new document from one of the user's own files (any .numbers / .key / .pages): copies it to `path` and checks it opens. Refuses to overwrite.

  • iwork_delete_design_kitwrite action

    Delete a saved design kit (presets can't be deleted). Returns the kit's contents, so it can be saved again with iwork_save_design_kit.

  • iwork_export

    Export to another format. Numbers: pdf | xlsx | csv. Pages: pdf | docx | epub | txt | rtf. Keynote: pdf | pptx | images | movie. Optional password (+hint) for pdf/xlsx/docx/pptx, image_quality (good|better|best), image_format for slide images (jpeg|png|tiff). Default output sits next to the source. The export is checked against the source with a second tool and the source is verified unchanged. Ne

  • iwork_extract_design_kit

    Make a design kit from the user's own deck or table: heading and body fonts (Latin and Arabic) and the title, body and brand colours. .numbers reads the table's header and body styles (no app); .key reads every slide's title and body (needs macOS + Keynote). Parts the file doesn't show come from the nearest preset and are listed in notes. save=true with a name keeps it for reuse by name (contrast

  • iwork_find

    Find Numbers / Keynote / Pages files (newest first). kind: numbers | keynote | pages; name: part of the file name. Searches `folder`, else the allowed folders, else Documents/Desktop/Downloads. Uses Spotlight on macOS.

  • iwork_list_backups

    List the versioned backups (newest first) every write left for this file, plus the Keynote write manifest.

  • iwork_list_design_kits

    Design kits for good-looking decks and tables: font pairs (Latin + Arabic, bundled with macOS), contrast-checked palettes and a type scale. Lists the presets and the kits you saved (saved: true). Use with keynote_build_deck(kit=…), keynote_apply_design, numbers_apply_design. Custom kits: pass {"fonts": {...}, "colors": {...}}.

  • iwork_list_templates

    Built-in templates for Numbers or Pages, or themes for Keynote (app: numbers | pages | keynote). Needs macOS + the app.

  • iwork_metadata

    What a file says about itself, without the app: kind, size, modified, template it was made from, app builds that saved it, file format version, slide count (Keynote), embedded media count.

  • iwork_read

    Read a .numbers, .key or .pages file into JSON (.pages needs the Pages app and a GUI session).

  • iwork_restore_backup

    Undo: atomically restore a backup (a name from iwork_list_backups). The current version is backed up first.

  • iwork_samples

    Copy sample files (sample-sales.numbers with English and Arabic sheets of synthetic sales data, and sample-outline.md for a deck) into a folder, so a first try needs none of the user's own files. Never overwrites. Returns try-it prompts.

  • iwork_save_design_kit

    Save a design kit by name for reuse anywhere a kit is accepted. kit = {"fonts": {...}, "colors": {...}, "theme": "...", "background": "#RRGGBB"} (missing parts come from the "executive" preset, or from "base": "<preset>"), or a preset name to copy. Contrast is checked (4.5:1). Never replaces a saved kit unless overwrite=true; can't reuse a preset's name.

  • iwork_thumbnail

    Extract the preview image stored in the file (first page/slide) to a JPEG and return its path — a quick look without opening the app. Reflects the app's last save.

  • iwork_verify_format

    Independent check of formatting: export a PDF through the app and confirm `text` is drawn with the given font (name contains), size (pt), color (#RRGGBB), bold, and page size (pt). Needs macOS + the app.

  • iwork_verify_render

    Export the file to PDF through its app and assert `assert_text` is visibly rendered. For Arabic, use one word.

  • keynote_add_chart

    Add a chart to a slide from data. rows = series names, columns = category names, data = one list of numbers per row (rows × columns). type: bar | stacked_bar | horizontal_bar | stacked_horizontal_bar | line | area | stacked_area | pie | scatter (or *_3d). group_by: row | column. Text and other charts are verified untouched. dry_run=true previews the change on a copy without touching the file.

  • keynote_add_image

    Place an image file (png, jpg, heic, pdf…) on a slide; optional x/y position and width in points. All text verified untouched. dry_run=true previews the change on a copy without touching the file.

  • keynote_add_slidewrite action

    Insert a slide after slide number `after` (0 = first, omit = end). Every other slide is verified unchanged. dry_run=true previews the change on a copy without touching the file.

  • keynote_add_table

    Add a table to a slide (1-based). rows = [["Region", "Q1"], ["Riyadh", 1200], …]: text, numbers, or null; text starting with "=" is a formula. kit (iwork_list_design_kits name or your own) styles it: header band, fonts (Arabic-aware), banding, numbers right-aligned. Optional x, y (points from top-left) and width. Every cell, font and colour is read back; other slides and tables are checked untouch

  • keynote_apply_design

    Make a deck look designed: the kit's theme (optional), then every slide's title and body fonts (Arabic-aware), sizes from a type scale, and colours from a contrast-checked palette. kit = a name from iwork_list_design_kits or your own {"fonts": {...}, "colors": {...}}. Text is verified unchanged. dry_run=true previews the change on a copy without touching the file.

  • keynote_build_deck

    Build a new Keynote deck from an outline. slides = [{"title": "…", "body": ["bullet", "bullet"], "layout": "Title & Bullets", "notes": "…", "image": "/path/pic.png"}, …]; the first slide defaults to a title layout, the rest to Title & Bullets. theme from keynote_list_themes; optional transition for every slide (e.g. dissolve). Every slide is read back and checked; on any mismatch the new file is r

  • keynote_delete_slidewrite action

    Delete slide number `slide` (1-based). Recoverable with iwork_restore_backup. dry_run=true previews the change on a copy without touching the file.

  • keynote_duplicate_slide

    Duplicate slide number `slide` (1-based); the copy lands right after it. dry_run=true previews the change on a copy without touching the file.

  • keynote_format_text

    Font (PostScript name, e.g. "HelveticaNeue-Bold"), size (pt) and/or colour ("#RRGGBB") of one text item on a slide — pick it by item index (from keynote_inspect_style) or by a unique piece of its text (match). Alignment and shape fill are not scriptable. dry_run=true previews the change on a copy without touching the file.

  • keynote_inspect_style

    A deck's styling: current theme, available slide layouts, and per slide its layout plus each text item's text, font, size and colour. Read this before theming.

  • keynote_list_slides

    Every slide with its text, presenter notes and whether it is hidden (via Keynote). Use slide numbers from here for slide operations.

  • keynote_list_themes

    Themes available in Keynote on this Mac (names to pass to keynote_set_theme).

  • keynote_move_slide

    Move slide number `slide` so it ends up at position `to` (both 1-based). dry_run=true previews the change on a copy without touching the file.

  • keynote_replace_text

    Find/replace text across every slide of a .key deck (literal unless regex=true). Formatting and structure are verified unchanged. dry_run=true previews the change on a copy without touching the file.

  • keynote_review_deck

    Design review of a deck as Keynote actually draws it: renders to PDF and reports, per slide, text drawn off the slide or past the bottom of its box (errors), text boxes drawn on top of each other, text under 18 pt, and slides that are too dense (warnings). Run it after building or restyling a deck, fix the errors, then look at a flagged slide with keynote_slide_image. The file isn't changed. Needs

  • keynote_set_presenter_notes

    Set the presenter notes of slide number `slide` (1-based). Arabic-safe. dry_run=true previews the change on a copy without touching the file.

  • keynote_set_slide_layout

    Change one slide's layout (master), e.g. "Title & Bullets". Other slides are verified untouched. dry_run=true previews the change on a copy without touching the file.

  • keynote_set_slide_text

    Fill a slide's title and/or body box (body may be a list of bullet lines). The title box is the top-most text box, the body the largest other one. Other slides and text boxes are verified untouched. dry_run=true previews the change on a copy without touching the file.

  • keynote_set_theme

    Apply a different Keynote theme to the whole deck. Rolled back if any slide loses text. dry_run=true previews the change on a copy without touching the file.

  • keynote_set_transition

    Transition into a slide: effect such as dissolve, push, wipe, magic move, cube, flip, move in, reveal, "none"; duration/delay in seconds; automatic=true advances on its own. Other slides verified untouched. dry_run=true previews the change on a copy without touching the file.

  • keynote_skip_slide

    Hide (skipped=true) or show a slide in the slideshow. dry_run=true previews the change on a copy without touching the file.

  • keynote_slide_image

    One slide as an image (JPEG, `width` px wide), exported by Keynote, so you can look at the design yourself. Skipped slides aren't exported. The file isn't changed. Needs macOS + Keynote.

  • keynote_slideshow

    Present: action = start (needs path; from_slide 1-based) | stop | next | previous. Doesn't change the file. Needs macOS + Keynote.

  • numbers_add_table

    Add a table with data to an existing sheet (`sheet`, default the first) or to a new sheet (`new_sheet`). Every existing table is verified unchanged. dry_run=true previews the change on a copy without touching the file.

  • numbers_apply_design

    Style a whole table from a design kit: header band (fill, bold, contrast-checked text), body font and colour (Arabic cells get the Arabic font), alternate-row banding, number columns right-aligned. Values never change; every other table is verified untouched. No app needed. dry_run=true previews the change on a copy without touching the file.

  • numbers_createwrite action

    Create a new .numbers file from data. sheets = [{"name": "Sales", "tables": [{"name": "Q1", "rows": [["Region", "Revenue"], ["Riyadh", 1200]], "header_rows": 1}]}]. Numbers stay numbers, text stays text exactly (Arabic included). Refuses to overwrite. No app needed.

  • numbers_deletewrite action

    Delete `count` rows or columns (what = rows | columns) starting at 1-based position `at`. Remaining cells are verified. Refused in tables with formulas or merged cells. Undo with iwork_restore_backup. dry_run=true previews the change on a copy without touching the file.

  • numbers_edit_cell

    Set one cell (e.g. ref "B2") in a .numbers file. Backed up, verified, atomic; every other cell is checked unchanged. dry_run=true previews the change on a copy without touching the file.

  • numbers_import_csv

    Turn a CSV/TSV into a new .numbers file (UTF-8, delimiter auto-detected). Plain numbers become numbers (numbers=false keeps everything as text); dates, "$1,234" and Arabic-Indic digits stay text exactly as written. Refuses to overwrite.

  • numbers_insertwrite action

    Insert rows or columns (what = rows | columns) before 1-based position `at`; omit `at` to append. Optional `values`: one list per new row (or column). Every existing cell is verified at its new position. In tables with formulas, only appending is allowed (shifting would break references). dry_run=true previews the change on a copy without touching the file.

  • numbers_inspect_format

    Current formatting of a Numbers table: column widths, row heights, header rows/cols, merges, and per-cell font/colour/fill/alignment, number format (shown_as) and borders. Read this before formatting.

  • numbers_merge_cells

    Merge a rectangular range ("A1:C1"). Refused if any cell other than the top-left holds data (it would be hidden) or the range crosses the header edge. dry_run=true previews the change on a copy without touching the file.

  • numbers_recalculate

    Make Numbers recompute every formula from the current values. Numbers keeps showing a formula's old result after edits made without it (numbers_edit_cell, numbers_insert…), so run this after those when the file has formulas — their result says so (formulas_need_recalc). Formulas and inputs are verified unchanged. Needs macOS + Numbers, file closed. dry_run=true previews the change on a copy withou

  • numbers_set_borders

    Cell borders on a range: sides = all | outline | inner | top | right | bottom | left; width in points; color "#RRGGBB"; style = solid | dashes | dots | none. dry_run=true previews the change on a copy without touching the file.

  • numbers_set_cell_style

    Style a range ("A1:D1"): font_name, font_size, bold, italic, underline, strikethrough, font_color / fill_color as "#RRGGBB", align (left|center|right|justify|auto), valign (top|middle|bottom), wrap. Only the attributes you pass change; every other cell is verified untouched. dry_run=true previews the change on a copy without touching the file.

  • numbers_set_dimensions

    Set column widths and/or row heights in points, e.g. columns={"A": 160, "C": 90}, rows={"1": 32} (rows are 1-based). Nothing else changes. dry_run=true previews the change on a copy without touching the file.

  • numbers_set_formulawrite action

    Put a formula in one cell, e.g. ref "D10", formula "=SUM(D2:D9)"; Numbers computes it and the result is returned. Every other cell's input is verified unchanged. Needs macOS + Numbers, file closed. dry_run=true previews the change on a copy without touching the file.

  • numbers_set_headers

    Set how many header rows / header columns a table has (0–5). dry_run=true previews the change on a copy without touching the file.

  • numbers_set_number_format

    How numbers display in a range ("B2:B9"): format = number | currency | percentage | scientific | fraction | datetime | text. Options: decimal_places, thousands_separator, negative_style (minus|red|parentheses|red_parentheses), currency_code (ISO, e.g. SAR, USD), accounting, date_format (e.g. "d MMM yyyy"). Values are not changed; the result shows how each cell now displays. dry_run=true previews t

  • numbers_sort

    Sort a table's body rows by a column letter (header rows stay on top). Verified as a pure reorder. A table whose formulas read other rows (e.g. =B2*0.1 below a base-figure row) is refused, because Numbers' sort would break them; for it, to_new_table=true leaves the table, its formulas and its charts as they are and puts a sorted copy of its values (no formulas) in a new table on the same sheet (na

  • pages_fill_placeholders

    Fill template placeholders by tag, e.g. {"Name": "Sara", "Date": "3 October"}. Formatting is kept; the body is verified to change only there. Needs macOS + Pages. dry_run=true previews the change on a copy without touching the file.

  • pages_list_placeholders

    Template placeholders in a .pages document (tag + current text), e.g. a letter's "Name" or "Date" fields. Needs macOS + Pages.

  • pages_preflight

    Check Pages can answer AppleEvents. Run once before any Pages op; never loop on failure.

  • pages_read_tables

    Every table in a .pages document: name, size, and each cell's value, shown text and formula. Needs macOS + Pages.

  • pages_replace_all

    Replace every occurrence of `find` in a .pages body (needs Pages + GUI session). Rolled back if the readback disagrees. dry_run=true previews the change on a copy without touching the file.

  • pages_set_body

    Replace the entire body text of a .pages document (needs Pages + GUI session). Body formatting is reset. dry_run=true previews the change on a copy without touching the file.

  • pages_set_table_cellswrite action

    Write cells of an existing table in a .pages document. table = its name or number (from pages_read_tables); cells = {"B2": 1200, "C3": "تم", "D9": "=SUM(D2:D8)"} — numbers stay numbers, "=…" makes a formula, null clears. Every other cell and the body text are verified unchanged. New tables can't be created (Pages 15 doesn't script it). Needs macOS + Pages, document closed. dry_run=true previews th

Public scan report

scanner v0.1.10 · 2026-10-13 · same rubric, same numbers if you re-run it

no findings
  • Code scan29 source files scanned25/25
  • –Live reliabilityno gateway calls yet and no remote to proben/a
  • –Tool poisoningtools not inspected (local package is not executed); not countedn/a
  • Auth qualitylocal package, no credentials required12/15
  • Maintenancelast push 0 days ago15/15
  • Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
Overall 92/100. Components that don't apply are left out of the denominator. Any critical finding is an F.RubricAppeal a findingJSON

How iWork Studio compares

Against every graded Media MCP server, from our own scans and uptime checks. Updated after each scan run.

Safety score
92/100
higher than 85% of 1,337 Media servers
Tools
65
the typical Media server has 7
Tools that change things
15%
typical: 4%. Fewer write tools means less an agent can break
GitHub stars
2
more than 70% of 715 Media servers
Downloads a week
149
more than 70% of 365 Media servers with a package

What its tools let an agent do: 55 read · 10 change

Release history: 2 versions in the registry since 2026-10-04, latest 2026-10-13, typically one every 8 days.

Install iWork Studio in Claude Code, Cursor or VS Code

claude mcp add iwork-studio -- uvx iwork-studio
Add to Cursor

What the publisher says

From the iWork Studio repository's README, as published. We do not edit it. Read it on GitHub

<!-- mcp-name: io.github.Arkanji/iwork-studio -->

The safe way to let AI edit your Numbers, Keynote and Pages files.

Designed decks from your data and your brand, checked as rendered. Arabic-ready. Every change is backed up, verified and undoable, and anything risky is refused, never guessed.

Install · Try it · Safety · What it can do · All tools · For AI agents · Changelog

15 seconds: data → designed deck → a safe rollback → Arabic. HD video

▶ Watch the film with sound (46s) · Read the launch story

Install

Shortened. The full README is on GitHub.

Nothing above is checked by us. What we check is on the safety report.

iWork Studio: common questions

Is iWork Studio MCP server safe?
Yes, by our scan: it is graded A (92/100). Read the iWork Studio safety report
How do I install iWork Studio?
It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
Does iWork Studio need an API key?
No secret keys are declared. It reads 2 settings from the environment.
Is iWork Studio maintained?
The last commit was 22 days ago (2026-10-13). The latest release is v2.6.1.
What can I use instead of iWork Studio?
Servers from other publishers that do the same job: Codesign MCP server, b123d-print MCP server and OverlayQA MCP server. Compare all iWork Studio alternatives.
How does iWork Studio compare with other Media MCP servers?
safety score 92/100 (higher than 85% of 1,337 Media servers); tools 65 (the typical Media server has 7); tools that change things 15% (typical: 4%. Fewer write tools means less an agent can break). Full comparison.

Alternatives to iWork Studio

Same job from other publishers: the closest match first, then the best rated.

All iWork Studio alternatives →
  • Codesign
    Local design engine for AI agents: create, edit and export real, editable designs.
    A
  • b123d-print
    Vibe CAD for 3D printing: design, check and export printable parts with build123d.
    A
  • OverlayQA
    Run accessibility, contrast, and design token audits and file QA issues from your AI coding tool.
    A
  • Open Design
    Design skills, design systems and artifact tools: landing pages, decks, prototypes, posters, more.
    B
  • Dembrandt
    Design tokens from any live site: colours, type, spacing, components, drift against a baseline.
    B