Skip to main content
Zoom Server-to-Server OAuth tokens expire after one hour. The Zoom MCP Server handles this for you: it monitors your token continuously, displays its status in the terminal every 60 seconds, and automatically fetches a new token when expiration is approaching. Under normal conditions, you do not need to take any action.
Token management is fully automatic. The server monitors, refreshes, and reloads your token without any intervention required on your part.

Token status display

While the server is running, you will see a token status line in the terminal every 60 seconds (configurable). The status includes a visual indicator, the time remaining, and the exact expiration time.
The status icon changes based on how much time remains:

Automatic token refresh

When the token is within 5 minutes of expiring (configurable via ZOOM_AUTO_REFRESH_THRESHOLD), the server automatically runs a refresh sequence. You will see the following output in your terminal:
The refresh sequence runs the following steps:
1

Fetch a new token

Runs get_zoom_token.sh to request a fresh token from the Zoom API and write it to .env.
2

Load the new token into memory

Reloads the updated .env file and clears the cached token so the server uses the new one immediately.
3

Update Claude Desktop config

Runs update_claude_config.sh to inject the new ZOOM_ACCESS_TOKEN into the Claude Desktop configuration file.
4

Restart Claude Desktop

Runs restart_claude_app.sh to restart Claude so it picks up the updated configuration.
5

Display new token status

Shows the updated expiration time immediately — no need to wait for the next 60-second cycle.

Anti-loop safeguards

The server includes protections to prevent a failing refresh from causing a restart loop:
  • 30-second cooldown between refresh attempts — if a refresh is triggered while another is still within its cooldown window, the server waits before retrying.
  • Auto-refresh disabled after 3 consecutive failures — if the refresh fails three times in a row, the server stops attempting automatic refreshes to prevent repeated Claude restarts.
If auto-refresh is disabled after 3 consecutive failures, you will see this message in the terminal:
To recover, run the following command manually:
This forces a fresh token fetch, bypassing the validation check. After the token is updated, restart the server normally.

Customizing token monitoring

You can adjust token monitoring behavior using environment variables set before launching the server. Examples: