> ## Documentation Index
> Fetch the complete documentation index at: https://docs.peacock.support/llms.txt
> Use this file to discover all available pages before exploring further.

# Zoom MCP Server startup modes: terminal, app, and auto

> The Zoom MCP Server can be launched in several ways depending on whether you want a terminal banner, automatic startup, or a native macOS GUI application.

The Zoom MCP Server supports multiple startup modes so you can choose the one that fits your workflow. Whether you prefer running it from a terminal, having Claude Desktop launch it automatically, or using a packaged macOS app, there is an option for each scenario. Each mode runs the same underlying MCP server — they differ in how the server is started and what extra steps happen around it.

<Tip>
  For most users, `./run.sh` is the recommended starting point. It handles token validation, opens your Zoom meetings page, and ensures Claude Desktop is running — all in one command.
</Tip>

<Tabs>
  <Tab title="Interactive (./run.sh)">
    The interactive mode is the main user-facing entry point. It is best for daily use from the terminal.

    ```bash theme={null}
    ./run.sh
    ```

    When you run this command, the server will:

    <Steps>
      <Step title="Open Zoom in your browser">
        Your Zoom upcoming meetings page opens automatically in your default browser.
      </Step>

      <Step title="Display the startup banner">
        A startup banner appears in the terminal showing the current mode (normal or force).
      </Step>

      <Step title="Validate your token">
        The server checks whether your current Zoom token is still valid. It only fetches a new token if the existing one has expired.
      </Step>

      <Step title="Ensure Claude Desktop is running">
        The server verifies that Claude Desktop is open, launching it if needed, before starting the MCP process.
      </Step>

      <Step title="Start the MCP server">
        The server starts with periodic token and Claude status monitoring active.
      </Step>
    </Steps>

    **Options**

    | Flag | Description                                                    |
    | ---- | -------------------------------------------------------------- |
    | `-f` | Force a new token fetch even if the current one is still valid |
    | `-h` | Show the help message                                          |
  </Tab>

  <Tab title="Force refresh (./run.sh -f)">
    Force refresh mode runs the same interactive startup but always fetches a new token, even if the current one has not expired yet.

    ```bash theme={null}
    ./run.sh -f
    ```

    Use this when:

    * Your token seems stuck or is not working as expected
    * You want a clean start with a freshly issued token

    All other startup steps — banner, browser, Claude Desktop check — happen the same way as the standard interactive mode.
  </Tab>

  <Tab title="Engine-only (./run-mcp.sh)">
    The engine-only mode runs the same startup logic as `./run.sh` but skips the banner display and does not open the browser. It is best for scripted or automated startup scenarios where you do not want the interactive UX elements.

    ```bash theme={null}
    ./run-mcp.sh
    ```

    This mode still:

    * Checks and refreshes the token if expired
    * Ensures Claude Desktop is running
    * Starts the MCP server with token monitoring
  </Tab>

  <Tab title="Claude MCP config (node launch-mcp.js)">
    This mode is used when Claude Desktop launches the server automatically via its MCP configuration. It avoids macOS shell execution restrictions that can occur when Claude runs scripts from paths on iCloud Drive or non-standard locations.

    Add the following to your `claude_desktop_config.json`:

    ```json theme={null}
    {
      "mcpServers": {
        "zoom": {
          "command": "node",
          "args": ["/absolute/path/to/zoommcp/launch-mcp.js"]
        }
      }
    }
    ```

    **Default config location on macOS:**

    ```text theme={null}
    ~/Library/Application Support/Claude/claude_desktop_config.json
    ```

    `launch-mcp.js` loads your token values from `.env` and the Claude config, then starts `index.js` directly — no shell script execution involved. This is the best choice for fully automatic startup without a terminal.
  </Tab>

  <Tab title="Native macOS app">
    The native app is a packaged Electron application with a graphical interface showing real-time server logs. It is best for users who prefer working outside the terminal.

    **Run in development mode:**

    ```bash theme={null}
    npm run app
    ```

    **Or open the built app directly:**

    ```bash theme={null}
    open "dist/mac-arm64/Zoom MCP.app"
    ```

    The app features:

    * Real-time log display in the app window
    * Start/stop controls for the MCP server
    * Menu bar integration
    * Automatic MCP startup when the app launches

    <Note>
      MCP auto-start is enabled by default. To disable it, set `ZOOM_APP_AUTOSTART=0` in your environment before launching the app.
    </Note>
  </Tab>
</Tabs>
