Moom MCP Server

Moom MCP Server

A Model Context Protocol server that enables programmatic control of Moom window layouts on macOS through natural language commands in Claude Desktop.

Category
Visit Server

README

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
  • Control window positioning and sizing
  • Manage your workspace layouts through conversational commands

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

Prerequisites

  • macOS (10.12 or later)
  • Moom installed and running
  • Node.js 14 or higher
  • Claude Desktop app
  • Terminal app with accessibility permissions

Installation

  1. Clone this repository:

    git clone https://github.com/itrimble/moom-mcp.git
    cd moom-mcp
    
  2. Install dependencies:

    npm install
    
  3. Grant accessibility permissions:

    • Open System PreferencesSecurity & PrivacyPrivacyAccessibility
    • 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:
    {
      "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"

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"

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

Project Structure

moom-mcp/
├── src/
│   └── index.js        # Main MCP server implementation
├── 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:

npm test          # Basic tests
npm run test-ui   # UI automation tests
npm run validate  # Validate configuration

Debugging

  1. Check if Moom is running:

    pgrep -x Moom
    
  2. Verify accessibility permissions are granted

  3. 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

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured