homescreen-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| HOMESCREEN_ALLOW_APPLY | No | Set to 1 to let the MCP assistant apply changes to the phone by itself, instead of only editing a draft you apply in the app. | 0 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| read_phoneA | Read the Home Screen from the connected iPhone and start a fresh draft from it. Discards any unapplied draft. |
| 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). |
| find_appsC | Find items by name or bundle id substring. |
| icon_colorsA | Dominant icon color per app (family, background, hex, hue 0-360). Omit ids for every app. |
| get_iconsB | Icon images for up to 24 apps, in the order given. |
| 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. |
| moveC | Move one item to target ('dock', 'library', 'page:N', 'folder:[:N]'), at index
(0-based, default end) or just before the item with id |
| create_folderC | Make a folder at target/index holding item_ids (in order). |
| rename_folderC | Rename a folder. |
| dissolve_folderC | Remove a folder, putting its apps where it was. |
| 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. |
| 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. |
| sort_alphabeticallyC | A-Z sort of folders and loose apps. Page 1 is left alone by default. |
| sort_folder_contentsC | A-Z inside every folder. |
| 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. |
| 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. |
| close_gapsC | Let placed items flow with the rest again (removes their gaps). |
| swapC | Trade the places of two items. |
| 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 |
| 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. |
| page_opA | Page operations: op='insert' (new empty page at |
| remove_emptyB | Drop empty pages and empty folders from the draft. |
| undoB | Undo the last draft edit. |
| redoA | Redo the last undone draft edit. |
| reset_draftA | Throw away draft edits and go back to the layout as read from the phone (undoable). |
| diffA | What applying the draft would change, any problems, and the apply_token. |
| render_previewA | Write an HTML preview (draft vs phone, moved icons outlined) and return its path. |
| applyA | 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. |
| list_backupsB | Layouts saved before each apply/restore, oldest first. |
| restoreC | Write a backup to the iPhone. Only when the user explicitly asked. Same gate as apply. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 30 tools
Most tools target a clearly distinct operation (read_phone, diff, apply, undo/redo, page_op), and the descriptions draw useful boundaries between fine-grained moves (move vs place_at vs swap vs arrange). A few pairs still risk misselection: create_folder vs file_into_folders (which also creates folders), and reset_draft vs restore vs undo all sound like 'go back' operations.
All names use snake_case uniformly, and the dominant convention is verb-first for mutations (move, swap, create_folder, dissolve_folder, remove_empty) with noun-style names for query-like reads (screen_time, icon_colors, app_store_categories). The deviation is that some reads are verb-first (find_apps, get_icons, show_layout) while others are nouns, and bare verbs like 'diff' and 'arrange' sit alongside compound names.
30 tools is above the heavy threshold, and a few seems consolidatable (undo/redo, reset_draft vs undo, diff/apply sequencing). However the domain is genuinely rich — layout editing, grouping, preview, diff-token gating, and backup/restore — so most tools do earn a distinct place rather than being filler.
The lifecycle is well covered: read from device, inspect draft, fine-grained and bulk edits, page/folder management, color/usage-based sorting, preview, diff-gated apply, undo/redo, and backups with restore. Minor gaps remain, such as no explicit tool for creating or resizing widgets and no clear way to pull an App Library app back to the Home Screen other than a general move.