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.
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.
Setting up the .env file
Copy the example file to get started:
The example file looks like this:
# 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 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:
ZOOM_TOKEN_DISPLAY_INTERVAL=30 ./run.sh
Or to display token status every 2 minutes:
ZOOM_TOKEN_DISPLAY_INTERVAL=120 ./run.sh