home-screen-mcp
Reads and writes iPhone/iPad Home Screen layouts over USB: reads the current layout from the device, lets you rearrange apps, folders, widgets and Dock items in a draft, sort by color/category/usage, move apps to the App Library, then applies the draft with a backup and readback verification (supports iOS 16+ layout modes).
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@home-screen-mcp read my iPhone's home screen and sort the apps by color"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Drag real app icons, arrange folders and widgets, sort by color or usage, and compare your draft before applying it over USB. Use the Mac app, local browser editor, CLI or an MCP assistant. Free and open source; no account or jailbreak required.
What you can do
Organize | Review | Work your way |
Drag apps, folders, widgets and Dock items | Compare device layout and draft | Native Mac app or local browser |
Sort by color, A–Z, category or usage | Undo and redo draft edits | CLI and standard stdio MCP |
Move apps to the App Library or App Bank | Back up before writes; verify by readback | Separate drafts and backups per device |
Multi-select, search, page editing and multi-page folders help with larger layouts. Category lookup and usage sorting have their own data sources and permissions.
Related MCP server: homescreen-mcp
Download
Open Releases and choose the archive matching Apple menu → About This Mac → Chip / Processor.
Your Mac | Download |
Apple silicon (M-series) |
|
Intel |
|
MCPB-compatible client |
|
Open the DMG and drag Home Screen Organizer into Applications. ZIP archives are also available. The app includes its Python engine and dependencies and requires macOS 14 or later.
The app is ad-hoc signed. If macOS requests approval, use System Settings → Privacy & Security → Open Anyway, then launch it again.
To verify a download, save SHA256SUMS.txt beside the chosen archive and run:
shasum -a 256 --check --ignore-missing SHA256SUMS.txtFor source installation, native builds and Actions artifacts, see Building Home Screen Organizer.
Quick start
Open Home Screen Organizer, connect your iPhone or iPad by USB, and unlock it. Tap Trust if asked.
Select the device and click Read to start a draft from its current layout.
Drag items or choose a sorting action. Empty the App Bank and review the layout comparison.
Before Apply: unhide Home Screen pages on the device (long-press the Home Screen, then tap the page dots) and recreate desired gaps in the editor. Choose Review & Apply to save a backup, write the draft and read back the result.
Edits stay in the draft until applied. With HOMESCREEN_READ_ONLY=1, you can read and edit drafts while Apply and Restore are disabled. For source installs, start that mode with:
HOMESCREEN_READ_ONLY=1 .venv/bin/home-screen-organizer uiAfter an interrupted or mismatching write, run Read again before continuing. See hidden pages, gaps and backups.
Compatibility
These version families select the following layout behavior. See compatibility and diagnostic guidance for details.
iOS family | Layout mode |
16 | Sequential app order; folders after widgets originally at the start of a page |
17 / 18 / 26 / 27 | Fixed-position editing, app and folder organization, widget configuration preservation |
All modes include Dock and App Library organization. iPad grid, Dock and folder capacities follow the device’s reported metrics. App Library contents are inferred from installed apps and the exported layout.
Use an MCP assistant
In the Mac app, choose Device → MCP to copy a launch command or configuration for Codex, Cursor, Claude, or VS Code / Copilot. The copied configurations start in read-only mode.
Any local stdio MCP client can launch the bundled engine:
HOMESCREEN_READ_ONLY=1 '/Applications/Home Screen Organizer.app/Contents/Resources/engine/engine' mcpSource installs use .venv/bin/home-screen-mcp. Ask the assistant to “group my apps by color” or “show a draft with my most-used apps on page 1.” Review diff and a preview before applying.
MCP setup guide · 中文配置指南 · Codex · Cursor / Claude · VS Code / Copilot · MCPB
The server runs on your Mac. Tool results go to the MCP client; its model and privacy settings determine subsequent processing. Assistant writes require an additional apply gate. See data handling and write controls.
Develop and explore
The primary commands are home-screen-organizer and home-screen-mcp. Existing ios-homescreen-organizer, ios-homescreen-mcp, homescreen and homescreen-mcp aliases remain available. The source checkout directory stays ios-homescreen-organizer.
Credits and license
Jonathan Kats created Homescreen. The original app, editor, screenshots and SpringBoard research come from the upstream project and its contributors. This fork maintains device sessions, backups, the local editor, the Mac launcher and distribution. Thanks to pymobiledevice3 for the USB interface.
MIT · Copyright © 2026 Jonathan Kats. The original license and copyright notice are preserved.
Report a fork issue with installation method, reproduction steps and a redacted error. Upstream source · upstream issues · upstream releases.
Disclaimer
Home Screen Organizer is not affiliated with, endorsed by, or sponsored by Apple Inc.
Mac, macOS, iPhone, iPad and Screen Time are trademarks of Apple Inc. IOS is a trademark or registered trademark of Cisco in the U.S. and other countries and is used by Apple under license.
This tool uses private device interfaces that may change with iOS updates. It saves a Home Screen layout backup before applying or restoring a layout and attempts to verify the result by reading the layout back. Keep a separate, up-to-date full backup of your iPhone or iPad. Use the tool at your own risk; it is provided “AS IS” under the MIT License.
Available Tools
30 toolsapplyA
Write the draft to the iPhone. Only call when the user explicitly asked to apply this draft. Needs the apply_token from the latest diff. Backs up first and verifies after.
Inputs: apply_token (required). Returns: object
app_store_categoriesA
App Store genre per app (Apple apps are 'Apple'). This sends the bundle ids to Apple's public lookup API, so only call it when the user is fine with that. Cached locally.
Inputs: ids. Returns: object
arrangeA
Set the whole top-level layout at once. pages = list of pages, each a list of ids in order (row by row). library = apps kept only in the App Library. Every top-level item and library app must appear exactly once. dock / library omitted = unchanged.
Inputs: pages (required), dock, library. Returns: object
close_gapsC
Let placed items flow with the rest again (removes their gaps).
Inputs: item_ids (required). Returns: object
create_folderC
Make a folder at target/index holding item_ids (in order).
Inputs: name (required), target (required), item_ids (required), index. Returns: object
diffA
What applying the draft would change, any problems, and the apply_token.
Inputs: no named parameters. Returns: object
dissolve_folderC
Remove a folder, putting its apps where it was.
Inputs: folder_id (required). Returns: object
file_into_foldersA
File loose apps into folders: {folder name: [app ids]}. Apps join an existing folder with that name, or a new folder (2+ apps). Apps on page 1 are left alone by default.
Inputs: groups (required), keep_first_page. Returns: object
find_appsC
Find items by name or bundle id substring.
Inputs: query (required). Returns: result
get_iconsB
Icon images for up to 24 apps, in the order given.
Inputs: ids (required).
icon_colorsA
Dominant icon color per app (family, background, hex, hue 0-360). Omit ids for every app.
Inputs: ids. Returns: object
list_backupsB
Layouts saved before each apply/restore, oldest first.
Inputs: no named parameters. Returns: result
moveA
Move one item to target ('dock', 'library', 'page:N', 'folder:[:N]'), at index
(0-based, default end) or just before the item with id before.
'library' = App Library only, off the Home Screen.
Inputs: target (required), item_id (required), index, before. Returns: object
optimize_by_usageB
Most-used apps and folders onto the earliest pages, most-used apps onto each folder's first page (usage from screen_time, else the device's memory reports, else Screen Time). Widgets keep their pages; dock and App Library untouched.
Inputs: keep_first_page. Returns: object
page_opA
Page operations: op='insert' (new empty page at page), 'move' (page -> to),
'delete' (its apps go to the App Library, like iOS).
Inputs: op (required), page (required), to. Returns: object
place_atB
Put an item in an exact spot (row 1-6, column 1-4) on a page, leaving empty spaces around it, like dragging it to an empty spot on the iPhone. Other items flow around it.
Inputs: row (required), page (required), column (required), item_id (required). Returns: object
read_phoneA
Read the Home Screen from the connected iPhone and start a fresh draft from it. Discards any unapplied draft.
Inputs: no named parameters. Returns: object
redoA
Redo the last undone draft edit.
Inputs: no named parameters. Returns: object
remove_emptyB
Drop empty pages and empty folders from the draft.
Inputs: no named parameters. Returns: object
rename_folderC
Rename a folder.
Inputs: name (required), folder_id (required). Returns: object
render_previewA
Write an HTML preview (draft vs phone, moved icons outlined) and return its path.
Inputs: no named parameters. Returns: object
reset_draftA
Throw away draft edits and go back to the layout as read from the phone (undoable).
Inputs: no named parameters. Returns: object
restoreC
Write a backup to the iPhone. Only when the user explicitly asked. Same gate as apply.
Inputs: backup (required). Returns: object
screen_timeB
Which apps get used, the top apps with where they are now, and estimated page swipes for
the device vs the draft. source='device': the device's own memory reports (no setup; apps iOS
keeps running for calls or in memory every day count less, listed under 'background');
source='mac': Screen Time synced to this Mac (Share Across Devices), last days days.
Inputs: days, source. Returns: object
show_layoutB
The current draft: dock, every page and the App Library-only apps, as {id, name} items (folders carry their contents, widgets their size).
Inputs: no named parameters. Returns: object
sort_alphabeticallyC
A-Z sort of folders and loose apps. Page 1 is left alone by default.
Inputs: folders_first, keep_first_page. Returns: object
sort_by_colorA
Rainbow-sort loose apps (red -> purple, then white/gray/black). Folders and widgets go first. Page 1 is left alone by default.
Inputs: keep_first_page. Returns: object
sort_folder_contentsC
A-Z inside every folder.
Inputs: no named parameters. Returns: object
swapC
Trade the places of two items.
Inputs: a (required), b (required). Returns: object
undoB
Undo the last draft edit.
Inputs: no named parameters. Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 30 tools
Most tools target a clearly distinct operation: read_phone vs show_layout vs diff vs apply form a coherent draft lifecycle, and the sorting/moving tools are well differentiated by description. Minor overlap remains between read_phone and reset_draft (both discard edits, one re-reads the device) and between arrange/place_at/swap as different granularities of the same move action.
The set is overwhelmingly snake_case verb_noun or verb (move, swap, apply, create_folder, sort_by_color, list_backups). A handful of tools are noun-only or bare nouns (icon_colors, screen_time, page_op, app_store_categories, diff), which breaks the pattern slightly but stays readable and predictable.
At 30 tools this is well past the heavy threshold for a single domain, and several could be consolidated (three sort_* tools, place_at/swap/close_gaps, undo/redo/reset_draft). Individual tools are meaningful, but the surface is large enough that an agent must scan a lot to pick correctly.
Coverage is strong: read, inspect, diff, preview, apply with token gating, backup listing, restore, undo/redo, and full folder/page/item manipulation are all present. Gaps are minor — no tool to add/remove/edit widgets themselves, and no way to pick or prune a specific backup beyond restore and list_backups.
Maintenance
Related MCP Connectors
Create App Store screenshots, icons, ASO copy, localization, and revisions via hosted MCP.
EXZA Remote — AI Computer Commander Your computer. Your control. Securely connect your own macOS, Windows or Linux computer to compatible AI clients, including ChatGPT and Claude. EXZA Remote provides 59 MCP tools for authorized file management, terminal operations, system monitoring, desktop automation and email workflows. GETTING STARTED 1. Create an EXZA Remote account. 2. Install the official computer connection client. 3. Pair your device using a temporary six-digit PIN. 4. Approve the connection on your computer. 5. Connect your preferred MCP client using EXZA OAuth. MCP ENDPOINT https://remote.exza.de/mcp TRANSPORT Streamable HTTP with OAuth 2.0 KEY FEATURES • 59 MCP tool interfaces • Secure computer and file access • Terminal commands and background jobs • File search, reading and editing • System monitoring and desktop automation • macOS, Windows and Linux support • Owner-controlled permissions and approvals COMPLETE INSTALLATION & DOCUMENTATION Detailed setup instructions, terminal installation commands, all 59 tools, troubleshooting and security information: https://github.com/exzade/EXZA-Remote/blob/main/docs/GLAMA_OVERVIEW.md Official website: https://remote.exza.de EXZA Remote is an independent, OAuth-protected service. Computer access requires individual account authorization and device-owner approval.
List, read, edit, and deploy your GenMB AI-generated apps from any MCP client.
Read and edit the Revit 2024–2027 model on your PC. Needs the free Revit MCP add-in.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceLets an AI client read and reorganize a connected iPhone's home screen — moving apps and web clips, creating folders, and rearranging pages — with automatic backups, previews, and validation before any change is written to the device.50 PyPI29MIT
- AlicenseBqualityBmaintenanceEnables an AI assistant to read, rearrange, sort, and explain an iPhone Home Screen layout through MCP tools, with phone writes disabled unless explicitly enabled.3013MIT
- AlicenseNot gradedqualityCmaintenanceEnables an MCP client on macOS to control a paired iPhone over Wi-Fi or USB through system developer services, without any app installed on the phone. Exposes tools for device discovery and connection, fresh screenshots, taps, drags, Home, app listing and launching, and Unicode text entry.GPL 3.0
- AlicenseNot gradedqualityBmaintenanceBridges local MCP clients to a device's HTTPS MCP endpoint, adding batched input actions, iPhone-oriented drag gestures, portrait screenshot cropping, and local macOS OCR chat reading.5MIT