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

# Configure your Zoom MCP Server environment variables

> Set required Zoom OAuth credentials in your .env file and tune token refresh timing, logging verbosity, and Claude Desktop config path overrides.

The Zoom MCP Server reads its configuration from a `.env` file in the project root. You must provide three Zoom OAuth credentials for the server to authenticate with the Zoom API. Beyond those required values, a set of optional variables lets you control token refresh timing, logging verbosity, and how the server locates your Claude Desktop config.

<Warning>
  Never commit your `.env` file to version control. It contains your Zoom OAuth credentials, which give API access to your Zoom account. Add `.env` to your `.gitignore` if you have not already.
</Warning>

## Setting up the .env file

Copy the example file to get started:

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

The example file looks like this:

```bash theme={null}
# Zoom MCP Server example .env
# Copy to .env and fill in real values:

# Zoom Server-to-Server OAuth credentials (required to fetch access token)
ZOOM_CLIENT_ID="your_zoom_client_id_here"
ZOOM_CLIENT_SECRET="your_zoom_client_secret_here"
ZOOM_ACCOUNT_ID="your_zoom_account_id_here"

# The access token is written by get_zoom_token.sh; you usually don't set this manually.
# ZOOM_ACCESS_TOKEN="your_existing_access_token_if_you_have_one"

# Optional: override Claude config file path, MCP server name, or env key
# CLAUDE_CONFIG_FILE="/Users/you/Library/Application Support/Claude/claude_desktop_config.json"
# CLAUDE_MCP_SERVER_NAME="zoom"
# CLAUDE_ZOOM_ENV_KEY="ZOOM_ACCESS_TOKEN"
```

Open `.env` and fill in your three required values. See [Set up your Zoom API credentials](/setup/zoom-credentials) for how to obtain them.

## Required variables

These three variables must be set before the server can authenticate with the Zoom API:

| Variable             | Description                       |
| -------------------- | --------------------------------- |
| `ZOOM_CLIENT_ID`     | Your Zoom OAuth app client ID     |
| `ZOOM_CLIENT_SECRET` | Your Zoom OAuth app client secret |
| `ZOOM_ACCOUNT_ID`    | Your Zoom account ID              |

## Auto-managed variable

| Variable            | Description                                                                                                                                                        |
| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `ZOOM_ACCESS_TOKEN` | The active API access token. Written automatically by `get_zoom_token.sh` each time the server fetches or refreshes a token. You do not normally set this by hand. |

## Optional variables

You can override default behavior by setting any of the following variables in your `.env` file or as environment variables when invoking the server.

| Variable                      | Default                 | Description                                                                                                                 |
| ----------------------------- | ----------------------- | --------------------------------------------------------------------------------------------------------------------------- |
| `CLAUDE_CONFIG_FILE`          | macOS standard location | Override the path to your Claude Desktop config JSON file.                                                                  |
| `CLAUDE_MCP_SERVER_NAME`      | `zoom`                  | Override the MCP server name used in the Claude config.                                                                     |
| `ZOOM_TOKEN_THRESHOLD`        | `60`                    | How many seconds before expiration the token is treated as needing refresh.                                                 |
| `ZOOM_AUTO_REFRESH_THRESHOLD` | `300` (5 minutes)       | Seconds before expiration at which the running MCP server triggers an automatic token refresh.                              |
| `ZOOM_TOKEN_DISPLAY_INTERVAL` | `60`                    | How often (in seconds) the server prints a token status update to the terminal. Set to `0` to disable the periodic display. |
| `ZOOM_CHECK_VERBOSE`          | *(unset)*               | Enable verbose logging. Set to any non-empty value to turn on.                                                              |
| `ZOOM_CHECK_LOGFILE`          | `./logs/zoom_token.log` | Path to the token log file.                                                                                                 |
| `ZOOM_APP_AUTOSTART`          | *(enabled)*             | Electron app only. Set to `0` to prevent the MCP server from starting automatically when the app launches.                  |

## Setting optional variables inline

You can pass optional variables on the command line without editing `.env`. For example, to display token status every 30 seconds:

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

Or to display token status every 2 minutes:

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