Skip to main content
Glama

Moom MCP Server

by itrimble
README.md•6.65 kB
# Moom MCP Server A Model Context Protocol (MCP) server that enables programmatic control of [Moom](https://manytricks.com/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 ## 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](https://manytricks.com/moom/) installed and running - Node.js 14 or higher - [Claude Desktop](https://claude.ai/download) app - Terminal app with accessibility permissions - **Optional**: [DisplayPlacer](https://github.com/jakehilborn/displayplacer) for enhanced multi-monitor support ## Installation 1. Clone this repository: ```bash git clone https://github.com/itrimble/moom-mcp.git cd moom-mcp ``` 2. Install dependencies: ```bash npm install ``` 3. Grant accessibility permissions: - Open **System Preferences** → **Security & Privacy** → **Privacy** → **Accessibility** - Add and enable Terminal (or your terminal app) - Add and enable Claude Desktop 4. Add to Claude Desktop configuration: - Open Claude Desktop - Navigate to Settings → Developer → Edit Config - Add the following to your `claude_desktop_config.json`: ```json { "mcpServers": { "moom": { "command": "node", "args": ["/absolute/path/to/moom-mcp/src/index.js"] } } } ``` 5. 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 | |---------|-------------|---------| | `activate_layout` | Switch to a saved Moom layout | `{ "layoutName": "Teaching (Mac Mini)" }` | | `save_current_layout` | Save current window arrangement | `{ "layoutName": "Development Setup" }` | | `trigger_moom_action` | Execute window actions | `{ "action": "center" }` | | `show_moom_menu` | Display Moom popup menu | `{}` | ### Supported Window Actions - `grow` - Increase window size - `shrink` - Decrease window size - `move-left` - Move window left - `move-right` - Move window right - `move-up` - Move window up - `move-down` - Move window down - `center` - Center window on screen - `fill-screen` - Maximize window ## DisplayPlacer Integration The server now includes advanced multi-monitor support using [DisplayPlacer](https://github.com/jakehilborn/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) ```bash brew install jakehilborn/jakehilborn/displayplacer ``` ## Project 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 file ``` ## Development ### Testing Run the test suite: ```bash npm test # Basic tests npm run test-ui # UI automation tests npm run validate # Validate configuration ``` ### Debugging 1. Check if Moom is running: ```bash pgrep -x Moom ``` 2. Verify accessibility permissions are granted 3. Run the validation script: ```bash 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](LICENSE) file for details. ## Author **Ian Trimble** - [GitHub](https://github.com/itrimble) ## Acknowledgments - [Many Tricks](https://manytricks.com/) for creating Moom - [Anthropic](https://anthropic.com/) for the Model Context Protocol - The MCP community for inspiration and examples ## Related Projects - [Model Context Protocol](https://github.com/anthropics/model-context-protocol) - [Moom by Many Tricks](https://manytricks.com/moom/)

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/itrimble/moom-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server