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

# Quickstart guide: set up Zoom MCP Server in minutes

> Go from zero to asking Claude about your Zoom meetings in minutes — clone the repo, add credentials, configure Claude Desktop, and start the server.

This guide walks you through setting up Zoom MCP Server from scratch. By the end, Claude Desktop will be connected to your Zoom account and you can manage meetings using natural language. The whole process takes about 10 minutes if you already have your Zoom credentials ready.

<Note>
  Before you begin, make sure you have everything listed on the [prerequisites](/prerequisites) page: Node.js 18+, a Zoom Server-to-Server OAuth app with the required scopes, Claude Desktop, and python3.
</Note>

<Steps>
  <Step title="Clone the repository and install dependencies">
    Clone the project to your local machine and install its Node.js dependencies.

    ```bash theme={null}
    git clone https://github.com/bstef/zoommcp.git
    cd zoommcp
    npm install
    ```
  </Step>

  <Step title="Configure your Zoom credentials">
    Copy the example environment file and fill in your Zoom OAuth credentials.

    ```bash theme={null}
    cp .env.example .env
    ```

    Open `.env` in a text editor and set the three required values:

    ```bash theme={null}
    ZOOM_CLIENT_ID="your_zoom_client_id_here"
    ZOOM_CLIENT_SECRET="your_zoom_client_secret_here"
    ZOOM_ACCOUNT_ID="your_zoom_account_id_here"
    ```

    You can find these values in your Server-to-Server OAuth app on the [Zoom Marketplace](https://marketplace.zoom.us/). The `ZOOM_ACCESS_TOKEN` field is populated automatically by the server — you do not need to set it manually.
  </Step>

  <Step title="Configure Claude Desktop">
    Add the Zoom MCP Server entry to your Claude Desktop configuration file.

    The configuration file is located at:

    ```
    ~/Library/Application Support/Claude/claude_desktop_config.json
    ```

    Add the following `mcpServers` block. If the file already contains other MCP servers, add the `"zoom"` entry inside the existing `mcpServers` object.

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

    <Note>
      The path in `args` must be an absolute path to `launch-mcp.js` on your machine — for example, `/Users/yourname/projects/zoommcp/launch-mcp.js`. Claude Desktop does not resolve relative paths or `~` shortcuts. Using `launch-mcp.js` as the entry point avoids shell execution issues that can occur in Claude's MCP environment on macOS and iCloud Drive paths.
    </Note>

    Restart Claude Desktop after saving the config file so it picks up the new server entry.
  </Step>

  <Step title="Make scripts executable and start the server">
    Before running for the first time, make all shell scripts executable:

    ```bash theme={null}
    chmod +x *.sh
    ```

    Then start the server:

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

    You should see the startup banner followed by confirmation that the server is running:

    ```
    ╔════════════════════════════════════════════════════════════════════╗
    ║                      ZOOM MCP SERVER                               ║
    ║               Connect Claude with Your Zoom Meetings               ║
    ╚════════════════════════════════════════════════════════════════════╝

    🚀 Starting Zoom MCP Server...
    ✅ Claude Desktop is running
    ✅ Zoom token is still valid. No refresh needed.
    🚀 Starting Zoom MCP server...
    ✅ Zoom MCP Server is running on stdio
    🔄 Token monitoring active - updates every 60 seconds
    🔑 Token Status: ✅ Expires in 57m 29s (at 1:51:23 PM)
    ```

    The server is now running and listening for requests from Claude Desktop over stdio.
  </Step>

  <Step title="Test the connection in Claude">
    Open Claude Desktop and type a natural language request about your Zoom account:

    > "Show me my upcoming Zoom meetings"

    Claude will call the `list_meetings` tool and return your meeting list. If you see meeting data in the response, everything is working correctly.

    <Tip>
      Try a few more requests to confirm the full range of tools is working: "List all active users in my Zoom account" or "Get the details for Zoom meeting ID 123456789".
    </Tip>
  </Step>
</Steps>

## Run options

`./run.sh` accepts a couple of flags for different startup scenarios:

| Flag             | Behavior                                                                          |
| ---------------- | --------------------------------------------------------------------------------- |
| *(none)*         | Start normally — refreshes token only if expired                                  |
| `-f` / `--force` | Force a new token fetch before starting, even if the current token is still valid |
| `-h` / `--help`  | Show help message                                                                 |

## What happens while the server runs

Once started, the server monitors your Zoom access token in the background every 60 seconds. When the token is within 5 minutes of expiring, it automatically fetches a new token, updates your Claude Desktop config, and restarts Claude — all without any action on your part. Watch the terminal for status messages if you want to track token health.
