Atlas / MCP servers / reichenbach / iWork

iWorkSAFE

mcp/reichenbach/iwork

MCP server for Apple iWork automation — 113 tools for Numbers, Pages, and Keynote. Template discovery, Creator Studio AI tools, compound batch operations. One line to install.

Verdict
SAFE
Grade
B
Trust score
87 /100
Exposed tools
118 53r · 55w · 10d
Transport
stdio
License
—
Stars
37
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

MCP server for Apple iWork automation — 117 tools for Numbers, Pages, and Keynote.

One line to install. Works with Claude Desktop, Claude Code, Codex, and any MCP client.

What it does

Ask Claude to build spreadsheets, write documents, and create presentations — it controls the real iWork apps on your Mac through Apple's JavaScript for Automation (JXA) scripting bridge.

Numbers — Browse built-in templates (budget, invoice, schedule, etc.) or create from scratch, read/write cells and ranges, set formulas (including cross-sheet references like SUMIFS), sort rows, merge cells, format cells (fonts, colors, backgrounds, alignment, number formats like percent and currency), manage sheets and tables, set column widths and row heights, bulk-create sheets with data and formatting in one call, export to PDF/Excel/CSV.

Pages — Browse built-in templates (resume, report, letter, flyer, newsletter, etc.) or create from scratch, create documents with formatted content in one call, read and insert text at any position, find and replace (preserves formatting), format paragraphs (font, size, color), insert images and tables, export to PDF/Word/EPUB.

Keynote — Browse available themes or create with a specific theme, create presentations with multiple fully-configured slides in one call (layouts, titles, body, notes, transitions), add/delete/duplicate/reorder/skip slides, choose slide layouts from master slides, read slide content, set titles and bullet points, add images and shapes, start/stop slideshows, export to PDF/PowerPoint/HTML.

More examples

![2026

Read from source at commit b9425d10152fOBSERVED · 2026-10-08
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control.

claude-code
claude mcp add iwork-mcp -- npx -y [email protected]
claude-desktop
{
  "mcpServers": {
    "iwork-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ]
    }
  }
}
03

Exposed tools (118)

53 read · 55 write · 10 destructive. Blast radius: 10 tools can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.

ToolRiskDescription
iwork_statusreadCheck iwork-mcp availability on this platform
keynote_add_image_to_slidewriteAdd an image to a slide
keynote_add_linewriteAdd a line to a slide between two points
keynote_add_shapewriteAdd a shape with text to a slide
keynote_add_slidewriteAdd a new slide to the presentation
keynote_add_table_to_slidewriteAdd a table to a slide with optional data
keynote_align_itemsreadAlign two or more items on a slide along an edge or center
keynote_clean_up_slidereadAuto-adjust a slide
keynote_close_presentationreadClose a Keynote presentation
keynote_create_presentationwriteCreate a new Keynote presentation (optionally with a theme — use keynote_list_themes to see available themes)
keynote_create_presentation_with_slideswriteCreate a Keynote presentation with multiple fully-configured slides in one call (theme, layout, title, body, notes, transitions)
keynote_delete_slidedestructiveDelete a slide from the presentation
keynote_distribute_itemsreadEvenly space three or more items on a slide horizontally or vertically
keynote_duplicate_slidereadDuplicate an existing slide
keynote_export_presentationreadExport a Keynote presentation to a different format: PDF, PowerPoint (.pptx), HTML, or images (not .key — use keynote_save_presentation for that)
keynote_format_shapewriteSet shape properties: opacity, rotation, and text formatting (font, size, color, alignment). Note: fill and border colors are not accessible via scripting.
keynote_format_slide_tablereadFormat cells in a table on a slide (text color, number format)
keynote_get_shape_inforeadRead shape properties: position, size, text, opacity, rotation, and text formatting
keynote_get_slide_contentreadRead all content from a slide: title, body, presenter notes, and list of items
keynote_get_themereadGet the current theme of a Keynote presentation
keynote_list_master_slidesreadList all available master slide layouts in the current theme
keynote_list_presentationsreadList all open Keynote presentations
keynote_list_slide_itemsreadList all items on a slide with their types, positions, and sizes
keynote_list_slidesreadList all slides in a presentation with their titles
keynote_list_themesreadList all available Keynote themes (e.g. White, Black, Gradient)
keynote_open_presentationreadOpen a .key file from disk
keynote_position_itemwriteMove and/or resize an item (shape, image, or textItem) on a slide by type and index
keynote_read_slide_tablereadRead all data from a table on a slide as a 2D array
keynote_remove_backgrounddestructiveRemove the background from an image on a slide using AI (Creator Studio only).
keynote_reorder_slidewriteMove a slide from one position to another
keynote_save_presentationwriteSave a Keynote presentation as .key (use this to save to disk — use keynote_export_presentation for PDF/PowerPoint/HTML)
keynote_set_presenter_noteswriteSet presenter notes for a slide
keynote_set_slide_bodywriteSet the body text of a slide (bullet points separated by newlines)
keynote_set_slide_layoutwriteChange the master slide layout of an existing slide (use keynote_list_master_slides to see available layouts)
keynote_set_slide_titlewriteSet the title text of a slide
keynote_set_themewriteChange the theme of an existing Keynote presentation (use keynote_list_themes to see available themes)
keynote_set_transitionwriteSet a transition effect on a slide
keynote_skip_slidereadMark a slide as skipped (hidden) or unskipped
keynote_start_slideshowwriteStart playing the presentation slideshow
keynote_stop_slideshowwriteStop a running slideshow
keynote_super_resolutionreadUpscale an image on a slide using AI Super Resolution (Creator Studio only). Increases resolution while preserving quality.
keynote_write_slide_tablewriteWrite data to cells of an existing table on a slide
numbers_add_chartwriteCreate a chart from table data. Selects the specified data range and creates a chart on the same sheet. Chart type can be set after creation.
numbers_add_columnwriteAdd a column to a table
numbers_add_imagewriteAdd an image to a sheet from a file path
numbers_add_rowwriteAdd one or more rows at the end of a table, optionally with data
numbers_add_sheetwriteAdd a new sheet to a Numbers document. By default, deletes the empty
numbers_add_tablewriteCreate a new table in a sheet
numbers_auto_formatreadScan a cell range, detect formats from string values (currency, percent, numbers with commas), convert to numeric values and apply native formatting. For example:
numbers_clear_cellsdestructiveClear the contents of a cell or range
numbers_close_documentreadClose a Numbers document
numbers_copy_rangereadCopy values from one document/sheet/table range to another. Both documents must be open. Copies values only (not formulas or formatting).
numbers_create_documentwriteCreate a new Numbers document (optionally from a template — use numbers_list_templates to see available templates)
numbers_create_sheet_with_tablewriteCreate a complete sheet with a named table, data, and formatting in ONE operation. Much faster than calling individual tools. Use this for bulk setup like calendars, reports, dashboards.
numbers_delete_columndestructiveDelete one or more columns from a table
numbers_delete_rowdestructiveDelete one or more rows from a table
numbers_delete_sheetdestructiveDelete a sheet from a Numbers document
numbers_delete_tabledestructiveDelete a table from a sheet
numbers_export_documentreadExport a Numbers document to a different format: PDF, Excel (.xlsx), or CSV (not .numbers — use numbers_save_document for that)
numbers_format_cellswriteSet formatting on a cell or range: font, size, color, alignment, background color, bold, italic
numbers_format_rangewriteApply multiple formatting rules to different cell ranges in one call. More efficient than calling numbers_format_cells repeatedly.
numbers_get_cell_formatreadRead the number format and alignment of a cell (e.g. percent, currency, number, automatic)
numbers_get_table_inforeadGet table metadata: row/column counts, header info, table name, and position
numbers_insert_column_atwriteInsert one or more columns at a specific position in a table, shifting existing columns right
numbers_insert_row_atwriteInsert one or more rows at a specific position in a table, shifting existing rows down
numbers_list_documentsreadList all open Numbers documents
numbers_list_imagesreadList all images on a sheet with their positions and sizes
numbers_list_sheetsreadList all sheets in a Numbers document
numbers_list_tablesreadList all tables in a sheet with their dimensions
numbers_list_templatesreadList all available Numbers templates (e.g. Personal Budget, Invoice, Checklist)
numbers_magic_fillreadUse AI to fill cells based on a pattern (Creator Studio only). Provide example values in the first rows of a column, then specify the range of empty cells to fill. Magic Fill detects the pattern and fills the remaining cells automatically.
numbers_merge_cellswriteMerge a range of cells
numbers_move_tablewriteMove a table to a new position on the sheet
numbers_open_documentreadOpen a .numbers file from disk
numbers_read_cellreadRead a single cell
numbers_read_rangereadRead a specific cell range (e.g.
numbers_read_tablereadRead all data from a table as a 2D array. Returns rows of cell values.
numbers_remove_backgrounddestructiveRemove the background from an image using AI (Creator Studio only). Opens background removal mode.
numbers_rename_sheetwriteRename a sheet in a Numbers document
numbers_rename_tablewriteRename a table in a Numbers document
numbers_save_documentwriteSave a Numbers document as .numbers (use this to save to disk — use numbers_export_document for PDF/Excel/CSV)
numbers_set_column_widthwriteSet the width of a column
numbers_set_formulawriteSet a formula on a cell (e.g.
numbers_set_header_columnswriteSet the number of header columns on a table. Header columns get special styling. Set to 0 to remove header column styling.
numbers_set_header_rowswriteSet the number of header rows on a table. Header rows get special styling (bold text, grey background). Set to 0 to remove header styling entirely.
numbers_set_row_heightwriteSet the height of a row
numbers_sort_rowsreadSort table rows by a column
numbers_super_resolutionreadUpscale an image using AI Super Resolution (Creator Studio only). Increases resolution while preserving quality.
numbers_unmerge_cellsreadUnmerge a previously merged cell range
numbers_write_cellwriteWrite a value to a cell
numbers_write_cellswriteBatch write multiple cell values in a single operation
numbers_write_tablewriteBulk write an entire table of data in a single operation. Much faster than writing cells individually. Resizes the table to fit the data automatically.
pages_add_imagewriteInsert an image into the document
pages_add_tablewriteInsert a table into the document
pages_add_textwriteAppend text to the end of the document body (preserves existing formatting). Include a trailing newline to start a new paragraph.
pages_close_documentreadClose a Pages document
pages_create_documentwriteCreate a new Pages document (optionally from a template — use pages_list_templates to see available templates)
pages_create_document_with_contentwriteCreate a Pages document with multiple formatted paragraphs in one call (much faster than adding paragraphs individually). For bold/italic, use PostScript font names like
pages_delete_textdestructiveDelete a paragraph by index (preserves formatting on other paragraphs)
pages_export_documentreadExport a Pages document to a different format: PDF, Word (.docx), EPUB, or plain text (not .pages — use pages_save_document for that)
pages_format_textwriteSet formatting on a paragraph: font (PostScript name), size, color. For bold use a bold font name like
pages_get_body_textreadRead all body text from a Pages document
pages_get_document_inforeadGet document metadata: word count, character count, page count, modified status
pages_get_paragraphsreadGet all paragraphs from a Pages document with their text, font, size, and color
pages_insert_page_breakwriteInsert a page break after a specific paragraph. Creates a visual page break in the document.
pages_insert_text_atwriteInsert text at a specific paragraph index (preserves formatting on other paragraphs)
pages_list_documentsreadList all open Pages documents
pages_list_imagesreadList all images in a Pages document with their positions and sizes
pages_list_tablesreadList all tables in a Pages document with their name, size, and header configuration
pages_list_templatesreadList all available Pages templates (e.g. Resume, Report, Letter, Flyer)
pages_open_documentreadOpen a .pages file from disk
pages_read_tablereadRead all cell values and formulas from a table in a Pages document (1-based table index; use pages_list_tables to see available tables)
pages_remove_backgrounddestructiveRemove the background from an image in a document using AI (Creator Studio only).
pages_replace_textreadFind and replace text in a Pages document (preserves formatting)
pages_resize_tablereadChange the row and/or column count of a table in a Pages document. Shrinking deletes the content of removed rows/columns.
pages_save_documentwriteSave a Pages document as .pages (use this to save to disk — use pages_export_document for PDF/Word/EPUB)
pages_super_resolutionreadUpscale an image in a document using AI Super Resolution (Creator Studio only). Increases resolution while preserving quality.
pages_write_table_cellswriteWrite values into table cells in a Pages document (1-based row/column). Strings starting with
04

Trust audit

SAFEgrade B · trust 87/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codePASS
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfaceWARN
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (1 observation(s))
Network
none-observed
Shell
none-observed
Dependencies
not all pinned
Secrets in source
none-found

Findings (13)

MEDIUMFilesystem / path · mcp.destructive_tools · CWE-22, CWE-59
keynote_delete_slide, keynote_remove_background, numbers_clear_cells, numbers_delete_column, numbers_delete_row, numbers_delete_sheet, numbers_delete_table, numbers_remove_background, pages_delete_tex
Why it matters. 10 tool(s) can delete or overwrite
Fix. prefer a read-only mode or scoped tokens; the page states the blast radius
LOWInventory / provenance · inv.binary · CWE-1104
examples/Apple Q1 FY2026 Earnings.numbers
Apple Q1 FY2026 Earnings.numbers
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
LOWInventory / provenance · inv.binary · CWE-1104
examples/sample.key
sample.key
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
LOWInventory / provenance · inv.binary · CWE-1104
examples/sample.numbers
sample.numbers
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
LOWInventory / provenance · inv.binary · CWE-1104
examples/sample.pages
sample.pages
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
LOWInventory / provenance · inv.no_license · CWE-1104
Why it matters. no LICENSE file and no repo licence
Fix. add a licence
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
test/jxa.test.ts:128
assert.doesNotThrow(() => new Function(result));
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
test/helpers/app-check.ts:2
import { resolveAppName } from "../../src/jxa.js";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
test/helpers/server.ts:4
import { registerNumbersTools } from "../../src/tools/numbers.js";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
test/helpers/server.ts:5
import { registerPagesTools } from "../../src/tools/pages.js";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
test/helpers/server.ts:6
import { registerKeynoteTools } from "../../src/tools/keynote.js";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
test/helpers/server.ts:7
import { INSTRUCTIONS } from "../../src/instructions.js";
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
@modelcontextprotocol/sdk, zod, @types/node, tsx, typescript
Why it matters. 5 dependency range(s) float
Fix. pin exact versions or ship a lockfile

Gates applied: no_behavioural_pass, no_license.

Audited 2026-10-08 · audit v0.4.1 · source sha b9425d10152ffull audit observations/trust-audit/mcp-server/reichenbach__iwork.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-08b9425d10152fSAFEB87first audit
06

Questions

What is the iWork MCP server?

MCP server for Apple iWork automation — 113 tools for Numbers, Pages, and Keynote. Template discovery, Creator Studio AI tools, compound batch operations. One line to install.

What tools does iWork expose?

118 in total: 53 read-only, 55 that write, and 10 that can delete or overwrite (keynote_delete_slide, keynote_remove_background, numbers_clear_cells, numbers_delete_column, numbers_delete_row). Every one is listed on this page with its risk.

Is iWork safe to connect to an agent?

The audit found nothing in the source that contradicts what it says it does, and graded it B (87/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean server reads B. Separately from the audit: 10 of its tools can destroy data, so scope the token you give it to what you actually need.

What credentials does iWork need?

No credential environment variables were found in its source, so it appears to need none.

How does iWork run?

It speaks stdio, so it runs as a local process your client starts. It is published on npm as iwork-mcp at 0.8.8.

How current is this page?

The grade is for one exact copy of the source (b9425d10152f), read on 2026-10-08. The repository is watched and re-audited when it changes.

Advertisement