Apple iWork 자동화를 위한 MCP 서버 — Numbers, Pages, Keynote를 위한 113개의 도구
요약
Apple iWork(Numbers, Pages, Keynote)를 자동화할 수 있는 113개의 도구를 제공하는 MCP 서버입니다. Claude Desktop 및 Claude Code와 연동하여 AI가 직접 Mac의 오피스 앱을 제어하고 문서를 생성하거나 편집할 수 있습니다.
핵심 포인트
- Claude 및 MCP 클라이언트를 통해 iWork 앱 직접 제어 가능
- Numbers, Pages, Keynote를 위한 113개의 전용 도구 제공
- JXA(JavaScript for Automation)를 활용한 실제 앱 조작
- 스프레드시트 생성, 이력서 작성, 프레젠테이션 제작 자동화 지원
Apple iWork 자동화를 위한 MCP 서버 — Numbers, Pages, Keynote를 위한 113개의 도구.
한 줄로 설치 가능합니다. Claude Desktop, Claude Code, Codex 및 모든 MCP 클라이언트와 연동됩니다.
Claude에게 스프레드시트 작성, 문서 작성, 프레젠테이션 생성을 요청하세요 — Claude는 Apple의 JavaScript for Automation (JXA) 스크립팅 브릿지를 통해 Mac의 실제 iWork 앱을 제어합니다.
Numbers — 내장 템플릿(예산, 송장, 일정 등) 탐색 또는 처음부터 생성, 셀 및 범위 읽기/쓰기, 수식 설정(SUMIFS와 같은 시트 간 참조 포함), 행 정렬, 셀 병합, 셀 서식 지정(글꼴, 색상, 배경, 정렬, 백분율 및 통화와 같은 숫자 형식), 시트 및 테이블 관리, 열 너비 및 행 높이 설정, 한 번의 호출로 데이터와 서식이 포함된 시트를 대량 생성, PDF/Excel/CSV로 내보내기.
Keynote — 사용 가능한 테마 탐색 또는 특정 테마로 생성, 한 번의 호출로 여러 개의 완전히 구성된 슬라이드가 포함된 프레젠테이션 생성(레이아웃, 제목, 본문, 노트, 전환 효과), 슬라이드 추가/삭제/복제/순서 변경/건너뛰기, 마스터 슬라이드에서 슬라이드 레이아웃 선택, 슬라이드 내용 읽기, 제목 및 글머리 기호 설정, 이미지 및 도형 추가, 슬라이드 쇼 시작/중지, PDF/PowerPoint/HTML로 내보내기.
npx iwork-mcp install
그 다음 Claude Desktop을 재시작하세요 (Cmd+Q 후 다시 열기). 완료되었습니다.
claude mcp add iwork -- npx -y iwork-mcp
codex mcp add iwork -- npx -y iwork-mcp
macOS 13 Ventura 이상(macOS 14 Sonoma에서 테스트됨) Numbers, Pages, Keynote 14.0 이상(14.5 및 15.1.1 Creator Studio에서 테스트됨; App Store에서 무료로 제공) - Node.js 18+ (Homebrew가 있는 경우 brew install node 실행) - 처음 사용 시 macOS에서 자동화(Automation) 권한 허용을 요청합니다 — OK를 클릭하세요.
Numbers에서 수입, 지출, 순저축 행이 포함된 월간 예산 스프레드시트를 만드세요. 양수 차액은 초록색으로, 음수 차액은 빨간색으로 표시하세요.
Pages에서 세 개의 회사 경력, 학력, 기술 섹션이 포함된 소프트웨어 엔지니어를 위한 전문적인 이력서를 만드세요.
하이라이트, 매출, 제품 마일스톤(milestones), 로드맵(roadmap)을 포함하여 6개의 슬라이드로 구성된 4분기(Q4) 비즈니스 리뷰용 Keynote 프레젠테이션을 만드세요. 모든 슬라이드에 발표자 노트(presenter notes)를 추가하세요.
~/Documents/budget.numbers에 있는 내 예산 스프레드시트를 열고 2월을 위한 새로운 행을 추가하세요.
Numbers에서 각 월별 시트, 색상이 지정된 헤더, 주말 강조 표시가 포함된 2026년 달력을 만드세요.
| 도구 (Tool) | 설명 (Description) |
|---|---|
numbers_list_documents | 모든 열려 있는 문서 목록 나열 |
numbers_list_templates | 사용 가능한 템플릿 목록 나열 (예: 개인 예산, 인보이스) |
numbers_create_document | 새로운 스프레드시트 생성 |
numbers_open_document | .numbers 파일 열기 |
numbers_save_document | 문서 저장 |
numbers_export_document | PDF, Excel 또는 CSV로 내보내기 |
numbers_close_document | 문서 닫기 |
numbers_list_sheets | 문서 내 시트 목록 나열 |
numbers_add_sheet | 새로운 시트 추가 |
numbers_rename_sheet | 시트 이름 변경 |
numbers_delete_sheet | 시트 삭제 |
numbers_list_tables | 크기(dimensions) 정보와 함께 테이블 목록 나열 |
numbers_add_table | 새로운 테이블 생성 (헤더 설정 가능) |
numbers_rename_table | 테이블 이름 변경 |
numbers_delete_table | 테이블 삭제 |
numbers_read_table | 모든 데이터를 2D 배열로 읽기 |
numbers_read_cell | 단일 셀 읽기 |
numbers_read_range | 특정 셀 범위 읽기 |
numbers_get_table_info | 테이블 메타데이터(이름, 크기, 위치) 가져오기 |
numbers_get_cell_format | 셀의 숫자 형식 및 정렬 읽기 |
numbers_move_table | 테이블을 시트 내 새로운 위치로 이동 |
numbers_write_cell | 셀에 값 쓰기 |
numbers_write_cells | 여러 셀에 일괄 쓰기 |
numbers_write_table | 2D 배열을 대량으로 쓰기 (빠름) |
numbers_set_formula | 셀에 수식(formula) 설정 |
numbers_add_row | 선택적 데이터를 포함하여 행 추가 |
numbers_insert_row_at | 특정 위치에 행을 삽입하고 기존 행을 아래로 밀기 |
numbers_add_column | 열 추가 |
numbers_insert_column_at |
특정 위치에 열 삽입, 기존 열을 오른쪽으로 밀기 |
| numbers_delete_row | 행 삭제 |
| numbers_delete_column | 열 삭제 |
| numbers_sort_rows | 특정 열을 기준으로 테이블 정렬 |
| numbers_set_header_rows | 헤더 행 개수 설정 (0 설정 시 헤더 스타일링 제거) |
| numbers_set_header_columns | 헤더 열 개수 설정 |
| numbers_merge_cells | 셀 범위 병합 |
| numbers_unmerge_cells | 셀 병합 해제 |
| numbers_clear_cells | 셀 내용 지우기 |
| numbers_format_cells | 글꼴, 크기, 색상, 굵게, 기울임꼴, 정렬, 배경, 숫자 형식 (백분율, 통화 등) 설정 |
| numbers_set_column_width | 열 너비 설정 |
| numbers_set_row_height | 행 높이 설정 |
| numbers_format_range | 한 번의 호출로 서로 다른 셀 범위에 여러 서식 규칙 적용 |
| numbers_auto_format | 문자열 값에서 서식(통화, 백분율, 숫자)을 자동 감지 및 적용 |
| numbers_copy_range | 열려 있는 문서 간에 값 복사 |
| numbers_add_image | 파일 경로로부터 시트에 이미지 추가 |
| numbers_list_images | 위치와 크기 정보를 포함하여 시트의 모든 이미지 목록 나열 |
| numbers_add_chart | 테이블 데이터를 사용하여 차트(막대, 선, 파이, 영역, 산점도) 생성 |
| numbers_create_sheet_with_table | 테이블, 데이터, 서식을 포함한 전체 시트를 한 번의 빠른 호출로 생성 |
| numbers_magic_fill | AI 패턴 채우기 — 예시를 제공하면 나머지 셀을 자동으로 채움 (Creator Studio) |
| numbers_super_resolution | AI 이미지 업스케일링 — 품질을 유지하면서 해상도 높임 (Creator Studio) |
| numbers_remove_background | 이미지에서 AI 배경 제거 (Creator Studio) |
| Tool | Description |
|---|---|
pages_list_documents | 모든 열려 있는 문서 목록 나열 |
pages_list_templates | 사용 가능한 템플릿 목록 나열 (예: 이력서, 보고서, 편지) |
pages_create_document | 새 문서 생성 |
pages_open_document | .pages 파일 열기 |
pages_save_document | 문서 저장 |
pages_export_document | PDF, Word, EPUB 또는 일반 텍스트로 내보내기 |
pages_close_document | 문서 닫기 |
pages_get_body_text | 모든 본문 텍스트 읽기 |
pages_get_paragraphs | 문단을 인덱스 배열 (indexed array) 형태로 가져오기 |
pages_get_document_info | 단어 수, 글자 수, 페이지 수, 수정 상태 가져오기 |
pages_list_images | 문서 내 모든 이미지의 위치 및 크기와 함께 목록 나열 |
pages_add_text | 텍스트 추가 (서식 유지) |
pages_insert_text_at | 특정 문단 인덱스에 텍스트 삽입 |
pages_delete_text | 문단 삭제 |
pages_replace_text | 찾기 및 바꾸기 (서식 유지) |
pages_format_text | 문단에 글꼴, 크기, 색상, 굵게, 기울임꼴 설정 |
pages_add_image | 이미지 삽입 |
pages_add_table | 표 삽입 |
pages_insert_page_break | 문단 사이에 페이지 나누기 삽입 |
pages_create_document_with_content | 한 번의 빠른 호출로 여러 개의 서식이 지정된 문단을 포함한 문서 생성 |
pages_super_resolution | AI 이미지 업스케일링 (upscaling) — 품질을 유지하면서 해상도 높이기 (Creator Studio) |
pages_remove_background | 이미지에서 AI 배경 제거 (Creator Studio) |
| Tool | Description |
|---|---|
keynote_list_presentations | 모든 열려 있는 프레젠테이션 (Presentations) 목록 표시 |
keynote_list_themes | 사용 가능한 테마 (예: White, Black, Gradient) 목록 표시 |
keynote_get_theme | 프레젠테이션의 현재 테마 (Theme) 가져오기 |
keynote_set_theme | 기존 프레젠테이션의 테마 (Theme) 변경 |
keynote_create_presentation | 새로운 프레젠테이션 (Presentation) 생성 |
keynote_open_presentation | .key 파일 열기 |
keynote_save_presentation | 프레젠테이션 (Presentation) 저장 |
keynote_export_presentation | PDF, PowerPoint, HTML 또는 이미지로 내보내기 (Export) |
keynote_close_presentation | 프레젠테이션 (Presentation) 닫기 |
keynote_list_slides | 제목이 포함된 슬라이드 (Slides) 목록 표시 |
keynote_get_slide_content | 슬라이드 (Slide)의 모든 콘텐츠 읽기 |
keynote_list_slide_items | 슬라이드 (Slide) 상의 모든 항목을 유형, 위치 및 크기와 함께 목록 표시 |
keynote_list_master_slides | 사용 가능한 슬라이드 레이아웃 (Slide Layouts) 목록 표시 |
keynote_add_slide | 선택적 레이아웃 (Layout)을 포함한 슬라이드 (Slide) 추가 |
keynote_delete_slide | 슬라이드 (Slide) 삭제 |
keynote_duplicate_slide | 슬라이드 (Slide) 복제 |
keynote_reorder_slide | 슬라이드 (Slide)를 새로운 위치로 이동 |
keynote_skip_slide | 슬라이드 (Slide) 숨기기/숨기기 해제 |
keynote_set_slide_layout | 기존 슬라이드 (Slide)의 마스터 슬라이드 레이아웃 (Master Slide Layout) 변경 |
keynote_set_slide_title | 슬라이드 (Slide) 제목 텍스트 설정 |
keynote_set_slide_body | 슬라이드 (Slide) 본문 / 글머리 기호 (Bullet points) 설정 |
keynote_add_image_to_slide | 슬라이드 (Slide)에 이미지 추가 |
keynote_add_shape | 텍스트가 포함된 도형 (Shape) 추가 |
keynote_add_line | 슬라이드 (Slide) 상의 두 지점 사이에 선 (Line) 추가 |
keynote_position_item | 유형 및 인덱스에 따라 도형 (Shape), 이미지, 또는 텍스트 항목 이동/크기 조정 |
keynote_align_items | 2개 이상의 항목을 가장자리 또는 중앙을 따라 정렬 (왼쪽, 오른쪽, 상단, 하단, 중앙, 중간) |
keynote_distribute_items | 3개 이상의 항목을 가로 또는 세로로 균등하게 배치 |
keynote_get_shape_info | 도형 (Shape) 속성 (위치, 크기, 불투명도, 회전, 텍스트 서식) 읽기 |
keynote_format_shape | 도형 (Shape)의 불투명도, 회전, 텍스트 글꼴/크기/색상/정렬 설정 |
keynote_add_table_to_slide |
| keynote_add_table_to_slide | 선택적 데이터를 포함하여 슬라이드에 테이블 (Table) 추가 |
| keynote_read_slide_table | 슬라이드 내 테이블의 모든 데이터 읽기 |
| keynote_write_slide_table | 슬라이드 내 기존 테이블의 셀 (Cell)에 데이터 쓰기 |
| keynote_format_slide_table | 슬라이드 테이블의 셀 서식 설정 (텍스트 색상, 숫자 형식) |
| keynote_set_presenter_notes | 발표자 노트 (Presenter notes) 설정 |
| keynote_set_transition | 슬라이드 전환 효과 (Transition effect) 설정 |
| keynote_start_slideshow | 프레젠테이션 재생 시작 |
| keynote_stop_slideshow | 슬라이드 쇼 중지 |
| keynote_create_presentation_with_slides | 단 한 번의 빠른 호출로 완전히 구성된 여러 슬라이드를 포함하는 프레젠테이션 생성 |
| keynote_clean_up_slide | AI 슬라이드 정리 — 레이아웃, 간격, 정렬 및 타이포그래피 (Typography) 자동 조정 (Creator Studio) |
| keynote_super_resolution | AI 이미지 업스케일링 (Upscaling) — 품질을 유지하면서 해상도 증가 (Creator Studio) |
| keynote_remove_background | AI 이미지 배경 제거 (Creator Studio) |
이 서버는 iWork 앱을 제어하기 위해 osascript를 통해 JXA (JavaScript for Automation) 스크립트를 실행합니다. 각 도구 호출은 단일 osascript 호출이며, 매개변수는 argv[0]를 통해 JSON으로 전달되고, 결과는 stdout을 통해 JSON으로 반환됩니다.
Claude Desktop / Claude Code / Codex
↓ stdio를 통한 MCP 프로토콜
iwork-mcp 서버 (Node.js)
...
git clone https://github.com/reichenbach/iwork_mcp.git
cd iwork-mcp
npm install
...
npm test # 단위 테스트 (Unit tests) — 도구 등록 + 오류 파싱 (~300ms, 앱 불필요)
npm run test:integration # 통합 테스트 (Integration tests) — Numbers/Pages/Keynote CRUD (~6s, iWork 앱 필요)
npm run test:all # 두 단계 모두 실행
테스트는 인메모리 (In-memory) MCP 전송 방식(서브프로세스 미사용)과 함께 node:test를 사용합니다. 통합 테스트는 해당 앱이 설치되어 있지 않은 경우 자동으로 건너뜁니다.
Claude Desktop으로 로컬에서 테스트하려면 로컬 빌드 경로를 지정하세요:
{
"mcpServers": {
"iwork": {
...
iWork의 스크립팅 사전 (scripting dictionary)는 무엇을 자동화할 수 있는지 정의합니다. 일부 기능(차트, 변경 내용 추적, 메모)은 Apple에서 단순히 노출하지 않습니다. iwork-mcp는 API가 허용하는 모든 것을 다룹니다. AI 도구가 생태계 전반에 더 통합됨에 따라 Apple이 자동화 기능을 확장하기를 기대합니다.
macOS 전용— Numbers, Pages, Keynote 14.0 이상 버전이 필요합니다 (14.5 및 15.1 Creator Studio에서 테스트됨; App Store에서 무료로 제공됨)
앱이 화면에 표시됨— iWork 앱이 실행되고 창이 나타납니다. 헤드리스 (headless) 모드는 지원되지 않습니다
호출당 약 430ms— 도구 호출당 osascript 시작 오버헤드가 발생합니다 (속도를 위해 create_sheet_with_table, create_document_with_content, create_presentation_with_slides와 같은 복합 도구를 사용하세요)
차트는 기본 기능만 제공— numbers_add_chart는 AppleScript 브리지 우회 방식을 통해 데이터 기반 차트(막대, 선, 파이, 영역, 산점도)를 생성하지만, 차트 사용자 지정(제목, 레이블, 색상)은 Apple의 스크립팅 사전에서 노출되지 않습니다
수식은 쓰기 전용— Apple의 스크립팅 사전는 수식 텍스트가 아닌 계산된 값을 반환합니다
메모 또는 변경 내용 추적 불가— 스크립팅 사전에 노출되지 않습니다
Pages 서식— 단락 서식은 폰트, 크기, 색상을 지원하는 bodyText.paragraphs를 사용합니다. 굵게/기울임꼴은 PostScript 폰트 이름(예: HelveticaNeue-Bold)이 필요하며, 직접적인 굵게/기울임꼴 토글 기능은 없습니다
최초 사용 권한 프롬프트— iWork를 처음 실행할 때 macOS에서 자동화 (Automation) 액세스 권한을 요청합니다
iWork 15.1–15.1.1 Creator Studio에는 iwork-mcp가 자동으로 우회하여 처리하는 스크립팅 버그가 있습니다:
PDF가 아닌 모든 형식에 대해 with error (6) 발생 — "문서를 내보낼 수 없습니다 (document could not be exported)". PDF 내보내기는 Quick Look 우회 방식을 통해 작동합니다 (app.export()가 qlmanage에서 실패하는 경우)
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Claude Ecosystem의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기