Skip the install. Get this working in under 2 minutes.
Start a free trial on cloud.anythingmcp.com, add the Zoom in one click, then point your AI client (Claude, ChatGPT, Copilot or Cursor) at the generated MCP endpoint. No Docker, no git clone, zero engineering experience required.
Summary
Let your AI work with Zoom: find and read your meetings, schedule, change and cancel them, manage registrants, see who attended past meetings, list cloud recordings and webinars, and pull usage reports. Signed in with your Zoom account through a Zoom app of your own (OAuth).
Try asking
Example prompts for Zoom
Click any prompt to copy it. Paste into Claude, ChatGPT, Cursor, Gemini, Copilot or OpenClaw to run it against this connector.
Claude is AI and can make mistakes. Please double-check responses.
💡 No install? Use cloud.anythingmcp.com directly. Sign in, click Connectors → Zoom, paste your credentials, mint an MCP API key and you're done. No Docker, no
git clone, no local server.
Zoom + Gemini
Let your AI work with Zoom: find and read your meetings, schedule, change and cancel them, manage registrants, see who attended past meetings, list cloud recordings and webinars, and pull usage reports. Signed in with your Zoom account through a Zoom app of your own (OAuth).
Prerequisites
See the full setup instructions baked into the connector (visible in the in-app store when you select the connector). The required environment variables for this connector are:
ZOOM_CLIENT_ID, ZOOM_CLIENT_SECRET
Step 1 — Get credentials
- Sign in at marketplace.zoom.us as the account owner, an admin, or a user with the Zoom for developers role. In the lower-left navigation click Developer, then Develop (top right) → Build an app → General app → Create. A free Zoom Basic account is enough for the meeting tools.
- On Basic Info, rename the app (for example "AnythingMCP") and choose how it is managed: User-managed when the AI should work with your own meetings and recordings (the usual case), Admin-managed when it should also read other users, their meetings and the usage reports. An admin then authorizes it.
- Under App Credentials, copy the development Client ID and Client Secret into
ZOOM_CLIENT_IDandZOOM_CLIENT_SECRET. Development credentials are enough for your own account: an app that is never published can only be authorized by users of the account that built it. - Under OAuth Information, set OAuth Redirect URL to
https://cloud.anythingmcp.com/api/mcp-oauth/callbackand add the same URL to the OAuth Allow List. If you host AnythingMCP yourself, usehttps://your-anythingmcp-host/api/mcp-oauth/callbackin both places. Click Continue and skip Features and Surface. - On Scopes, click Add Scopes and tick the scopes listed below. For each one Zoom asks for a short reason, for example "lets the user's AI assistant read their meetings".
- Install the connector, click Authorize with Provider on the connector page, sign in to Zoom and click Allow. You do not need Add App Now under Local Test: authorizing does the same.
- Start with
zoom_get_current_userto check who is signed in, then let the AI list your meetings withzoom_list_meetings.
Read scopes: user:read:user, meeting:read:list_meetings, meeting:read:meeting, meeting:read:list_registrants, meeting:read:past_meeting, meeting:read:list_past_instances, meeting:read:list_past_participants, cloud_recording:read:list_user_recordings, cloud_recording:read:list_recording_files, webinar:read:list_webinars and webinar:read:webinar.
Write scopes: meeting:write:meeting (create), meeting:update:meeting (change), meeting:delete:meeting (delete), meeting:write:registrant (add a registrant) and meeting:update:registrant_status (approve, deny, cancel).
Admin scopes (only on an Admin-managed app, authorized by an admin, and only if you need them): user:read:list_users:admin for zoom_list_users, user:read:user:admin to read other users, the :admin variant of each meeting, recording and webinar scope above (for example meeting:read:list_meetings:admin) to work with other users' meetings, and report:read:user:admin, report:read:meeting:admin and report:read:list_meeting_participants:admin for the report tools. If the scope picker does not offer :admin scopes, switch the app to Admin-managed on Basic Info.
Read-only setup: tick only the read scopes and switch off zoom_create_meeting, zoom_update_meeting, zoom_add_meeting_registrant and zoom_update_meeting_registrant_status.
Switched off at install: zoom_delete_meeting, which deletes a meeting, or the whole series of a recurring meeting unless one occurrence is named. It cannot be undone, and no cancellation email goes out unless the reminder flags are set. Turn it on only if the AI should cancel meetings.
Staying signed in: the AI works as the Zoom user who authorized. me stands for that user wherever a tool takes user_id; another user's id or email works only with the admin scopes. Access tokens last an hour and are renewed automatically. The refresh token lasts 90 days and is replaced on every renewal, so the connector stays signed in as long as it is used at least once every 90 days. After changing scopes in the app, click Authorize with Provider again: a token only carries the scopes granted when it was issued.
Notifications: confirm first: creating or changing a meeting can email its alternative hosts and invitees, adding a registrant emails them a confirmation, and approving, denying or cancelling a registrant emails them too. The AI says who will be notified and waits for your yes. zoom_get_meeting and zoom_create_meeting leave out the start_url, which would start the meeting as the host: the host starts it from the Zoom app, or with the join_url while signed in.
Meetings and past meetings: a meeting id has 9 to 11 digits. zoom_list_meetings returns scheduled meetings only, never instant ones, and with the upcoming or previous_meetings filter it covers at most 6 months. Every occurrence of a meeting has its own UUID: zoom_list_past_meeting_instances lists them, and zoom_get_past_meeting, zoom_list_past_meeting_participants, zoom_get_meeting_recordings, zoom_get_meeting_report and zoom_get_meeting_participants_report take either a meeting id (latest occurrence) or a UUID. A UUID that starts with / or contains // is passed URL-encoded once (/ajXp112QmuoKj4854875== becomes %2FajXp112QmuoKj4854875%3D%3D) and the connector encodes it a second time, as Zoom requires. Past meetings stay readable for 12 months, participants and instances for 15 months. zoom_list_recordings covers at most one month per call, and recordings are shared through their play_url or share_url.
Plans: a free Basic account works for the meeting tools, but there meetings with 3 or more participants end after 40 minutes. Registration, past participants, cloud recordings and reports need Pro or higher (recordings also need cloud recording switched on). Webinars need Pro or higher plus the Webinars add-on, otherwise Zoom answers code 200 "Webinar plan is missing". zoom_get_user_meetings_report covers one month per call within the last 6 months and lists only meetings with at least two participants.
Rate limits: limits are per Zoom account and shared by all its apps. Free accounts allow 1 to 4 requests per second depending on the request type, and 1,000 to 6,000 a day (reports count as heavy requests); Pro and higher allow 10 to 80 per second. Creating and updating meetings is limited to 100 a day per host, and Zoom allows 3 registration requests and 10 status changes per registrant and meeting per day. Over a limit Zoom answers 429: wait a second, or until the next UTC day for daily limits.
Common errors: 401 code 124 "Invalid access token" means the sign-in expired or was revoked: click Authorize with Provider again. 400 code 4711 or 4700 ("does not contain scopes") means the app lacks the scope named in the message: add it under Scopes and authorize again. 400 code 200 "No permission" or "Only available for Paid account" means the plan or the user's role does not allow it. 404 code 3001 is an unknown meeting, 1001 an unknown user, 3301 a meeting without a recording. Code 300 means the next_page_token is invalid or expired (it lasts 15 minutes). 3161 means the user may not host or schedule meetings.
The connector does not cover the daily usage report, downloading recording files, transcripts and AI Companion summaries, creating or changing webinars, Zoom Phone, Team Chat, Rooms, account settings or user management.
Step 2 — Install the adapter
curl -fsSL https://raw.githubusercontent.com/HelpCode-ai/anythingmcp/main/docker-compose.quickstart.yml -o docker-compose.yml
printf 'JWT_SECRET=%s\nENCRYPTION_KEY=%s\n' "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .env
docker compose up -d
Step 3 — Add the connector in Gemini
Your server URL: in AnythingMCP, open MCP Servers → the server this connector is on, and copy its URL (
https://cloud.anythingmcp.com/mcp/…). Use it wherever this guide showsYOUR_SERVER_ID.
Gemini CLI reads MCP servers from ~/.gemini/settings.json (on Windows %USERPROFILE%\.gemini\settings.json). Add:
{
"mcpServers": {
"anythingmcp": {
"httpUrl": "https://cloud.anythingmcp.com/mcp/YOUR_SERVER_ID",
"headers": { "X-API-Key": "YOUR_MCP_API_KEY" }
}
}
}
- Create an MCP API key in AnythingMCP under MCP Servers → your server → API keys, and paste it in place of
YOUR_MCP_API_KEY. - Save the file and restart
gemini. - Run
/mcpinside Gemini CLI (orgemini mcp listin your shell):anythingmcpshould show as connected. - Start prompting: Gemini CLI can now call the
Zoomtools.
Available tools
| Tool | What it does |
|---|---|
zoom_get_current_user | Read the signed-in Zoom user: id, first and last name, display name, email, type (1 Basic, 2 Licensed), role, time zone, personal meeting… |
zoom_list_users | List the users of the Zoom account (admin only, scope user:read:list_users:admin): id, name, email, type, status, role_id, department, time… |
zoom_get_user | Read one Zoom user by id or email: name, email, type, role, department, time zone, language, personal meeting id and URL, status and last… |
zoom_list_meetings | List a host's scheduled meetings (not instant ones): id, uuid, topic, type, start_time, duration, timezone, agenda, join_url, created_at.… |
zoom_get_meeting | Read one meeting: topic, type, status, start_time, duration, timezone, agenda, join_url, passcode, host, occurrences of a recurring… |
zoom_create_meeting | Schedule a Zoom meeting for a host |
zoom_update_meeting | Change a meeting: only the fields given are changed, settings are merged |
zoom_delete_meeting | Delete a meeting, or one occurrence of a recurring meeting with occurrence_id; without it the whole series is deleted |
zoom_list_meeting_registrants | List the registrants of a meeting with registration (Pro plan): id, first_name, last_name, email, status, create_time, join_url and answers |
zoom_add_meeting_registrant | Register a person for a meeting that has registration on |
zoom_update_meeting_registrant_status | Approve or deny pending registrants, or cancel approved ones |
zoom_get_past_meeting | Read a meeting that has ended: uuid, topic, host name and email, start_time, end_time, duration, total_minutes, participants_count and… |
zoom_list_past_meeting_participants | List who took part in an ended meeting (paid plan): name, user_email, join_time, leave_time, duration in seconds, status and internal_user |
zoom_list_past_meeting_instances | List the ended occurrences of a meeting id, each with uuid and start_time, to read one occurrence with the UUID tools |
zoom_list_recordings | List a user's cloud recordings in a date range of at most one month (Pro plan): per meeting uuid, id, topic, start_time, duration… |
zoom_get_meeting_recordings | Read the cloud recording of one meeting or webinar: topic, start_time, duration, total_size, share_url, recording_play_passcode and… |
zoom_list_webinars | List a host's unexpired webinars (Webinars add-on): id, uuid, topic, type, start_time, duration, timezone, agenda, join_url, created_at |
zoom_get_webinar | Read one webinar: topic, type, start_time, duration, timezone, agenda, join_url, registration_url, occurrences, recurrence and settings… |
zoom_get_user_meetings_report | Report of the meetings and webinars a user held in up to one month within the last 6 months (Pro plan, admin scope report:read:user:admin)… |
zoom_get_meeting_report | Report on one ended meeting (Pro plan, admin scope report:read:meeting:admin): uuid, topic, host user_name and user_email, start_time… |
zoom_get_meeting_participants_report | Participant report of an ended meeting with 2 or more people (Pro plan, admin scope report:read:list_meeting_participants:admin): name… |
Example prompts
- "Which Zoom meetings do I have scheduled next week? List the topic, start time and join link for each."
- "Who attended the last Weekly sales sync, and how long did each person stay in the meeting?"
- "Schedule a 45-minute Zoom meeting called Q4 planning on 20 October at 15:00 Berlin time and send me the join link."
- "List my cloud recordings from September with their play links."
FAQ
Where does Gemini CLI look for MCP servers? In ~/.gemini/settings.json for your user, or in .gemini/settings.json inside a project. gemini mcp list shows each server and whether it connects.
Next steps
Was this guide helpful?