Moom MCP Server
Enables window management and layout control on macOS through Moom, allowing users to switch between saved layouts, create new window arrangements, and control window positioning and sizing.
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., "@Moom MCP Server activate my coding layout"
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.
Moom MCP Server
A Model Context Protocol (MCP) server that enables programmatic control of Moom window layouts on macOS through natural language commands in Claude Desktop.
Overview
This MCP server allows Claude to interact with Moom, a powerful macOS window management tool, enabling you to:
Switch between saved window layouts
Create new window arrangements with pixel-perfect precision
Control window positioning and sizing across multiple monitors
Manage your workspace layouts through conversational commands
NEW: DisplayPlacer integration for exact multi-monitor positioning
Related MCP server: MCP Memory Server
Features
🖼️ activate_layout - Instantly switch to any saved Moom layout
💾 save_current_layout - Save your current window arrangement as a reusable layout
🎯 trigger_moom_action - Execute Moom window actions (resize, move, center, etc.)
📋 show_moom_menu - Display the Moom popup menu
🖥️ DisplayPlacer Integration - Pixel-perfect multi-monitor window positioning
📐 Precision Layouts - Exact coordinate-based window management
Prerequisites
macOS (10.12 or later)
Moom installed and running
Node.js 14 or higher
Claude Desktop app
Terminal app with accessibility permissions
Optional: DisplayPlacer for enhanced multi-monitor support
Installation
Clone this repository:
git clone https://github.com/itrimble/moom-mcp.git cd moom-mcpInstall dependencies:
npm installGrant accessibility permissions:
Open System Preferences → Security & Privacy → Privacy → Accessibility
Add and enable Terminal (or your terminal app)
Add and enable Claude Desktop
Add to Claude Desktop configuration:
Open Claude Desktop
Navigate to Settings → Developer → Edit Config
Add the following to your
claude_desktop_config.json:
{ "mcpServers": { "moom": { "command": "node", "args": ["/absolute/path/to/moom-mcp/src/index.js"] } } }Restart Claude Desktop
Usage
Once installed, you can use natural language commands in Claude Desktop:
Activating Layouts
"Switch to my Teaching (Mac Mini) layout"
"Activate the AI Research Mode workspace"
"Use my coding layout"
NEW: "Switch to DisplayPlacer Coding Pro" (pixel-perfect positioning)
Saving Layouts
"Save the current window arrangement as 'Focus Mode'"
"Create a new layout called 'Video Editing'"
Window Actions
"Make this window bigger" (grow)
"Center the active window"
"Move window to the left"
"Fill the screen with current window"
Menu Access
"Show the Moom menu"
"Open Moom's layout picker"
Multi-Monitor Precision (NEW)
"Create a DisplayPlacer coding layout" (uses exact coordinates)
"Position windows with pixel precision"
"Optimize for my 4K display setup"
Available Commands
Command | Description | Example |
| Switch to a saved Moom layout |
|
| Save current window arrangement |
|
| Execute window actions |
|
| Display Moom popup menu |
|
Supported Window Actions
grow- Increase window sizeshrink- Decrease window sizemove-left- Move window leftmove-right- Move window rightmove-up- Move window upmove-down- Move window downcenter- Center window on screenfill-screen- Maximize window
DisplayPlacer Integration
The server now includes advanced multi-monitor support using DisplayPlacer:
Benefits
Pixel-perfect positioning using exact display coordinates
Multi-monitor awareness with proper origin calculation
4K display optimization with scaling consideration
High refresh rate support (120Hz+)
Negative coordinate handling for left-positioned displays
Enhanced Layouts
DisplayPlacer Coding Pro: Precision layout for development
Ultimate Multi-Monitor Pro: Full display utilization across all monitors
Installation (Optional)
brew install jakehilborn/jakehilborn/displayplacerProject Structure
moom-mcp/
├── src/
│ ├── index.js # Main MCP server implementation
│ └── displayplacer-layouts.js # DisplayPlacer integration module
├── examples.md # Usage examples and workflows
├── test.js # Basic functionality tests
├── test-ui.js # UI automation tests
├── validate.js # Configuration validator
├── demo.js # Feature demonstration
├── package.json # Node.js configuration
├── LICENSE # MIT License
└── README.md # This fileDevelopment
Testing
Run the test suite:
npm test # Basic tests
npm run test-ui # UI automation tests
npm run validate # Validate configurationDebugging
Check if Moom is running:
pgrep -x MoomVerify accessibility permissions are granted
Run the validation script:
npm run validate
Troubleshooting
"Error accessing Moom menu"
Ensure Moom is running
Verify accessibility permissions for Terminal and Claude Desktop
Check that Moom's menu bar icon is visible
Layouts not activating
Layout names are case-sensitive
Verify the exact layout name in Moom preferences
Special characters in layout names may need escaping
MCP not loading in Claude
Restart Claude Desktop after configuration changes
Check the config file path is absolute
Verify Node.js is in your PATH
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Author
Ian Trimble - GitHub
Acknowledgments
Many Tricks for creating Moom
Anthropic for the Model Context Protocol
The MCP community for inspiration and examples
Related Projects
Available Tools
11 toolsactivate_layoutC
Activate a specific Moom layout by name
Inputs: layoutName (required).
create_custom_grid_layoutC
Create a custom grid layout (e.g., 3x2, 4x3) for high-res displays
Inputs: layoutName (required), columns (required), rows (required).
create_quad_layoutB
Create a quad (2x2) window layout on a specific display
Inputs: layoutName (required), apps (required), display.
get_monitorsB
Get monitor configuration data for layout adaptation
Inputs: no named parameters.
launch_applicationC
Launch a specified application for workflow setup
Inputs: appName (required).
list_layoutsB
List all saved Moom layouts
Inputs: no named parameters.
save_current_layoutB
Save the current window arrangement as a new Moom layout
Inputs: layoutName (required).
set_window_positionC
Move a window to a specific position for precise control
Inputs: appName (required), x (required), y (required).
set_window_sizeC
Resize a window to specific dimensions
Inputs: appName (required), width (required), height (required).
trigger_moom_actionC
Trigger common Moom actions via keyboard shortcuts
Inputs: action (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 11 tools
Most tools have distinct purposes, but there is some potential overlap between 'activate_layout' and 'trigger_moom_action' (which could include layout activation), and 'create_custom_grid_layout' and 'create_quad_layout' are both layout creation tools with different grid types. Descriptions help clarify, but an agent might occasionally misselect between these similar functions.
Tool names follow a consistent verb_noun pattern throughout, such as 'activate_layout', 'create_custom_grid_layout', 'get_monitors', and 'list_layouts'. All tools use snake_case with clear, descriptive verbs, making the set predictable and easy to navigate.
With 11 tools, the count is well-scoped for a Moom window management server, covering layout activation, creation, monitoring, window control, and application launching. Each tool appears to serve a specific, useful function without unnecessary redundancy or bloat.
The toolset provides comprehensive coverage for window layout management, including CRUD-like operations (list, create, save, activate layouts), window positioning, and monitor configuration. A minor gap is the lack of a tool to delete or modify existing layouts, which could limit full lifecycle management, but core workflows are well-supported.
Maintenance
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
MCP Server for Web2MD — convert URLs to Markdown from Claude Desktop, Cursor, etc.
Zotero MCP server for Claude and ChatGPT: search, citations, safe writes, PDF passages and pages.
A Model Context Protocol server for Wix AI tools
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceA Python-based server that implements the Model Context Protocol to interface with Claude Desktop as an MCP client, supporting interaction through efficient memory management.1MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server for Claude Desktop that provides structured memory management across chat sessions, allowing Claude to maintain context and build a knowledge base within project directories.10 npm7MIT
- AlicenseNot gradedqualityDmaintenanceA custom Model Context Protocol server that gives Claude Desktop and other LLMs access to file system operations and command execution capabilities through standardized tool interfaces.23Apache 2.0
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables Claude Desktop to perform file operations like reading, writing, listing directories, and managing files through natural language commands.MIT