All MCP servers

Zoom MCP server

Zoom meetings, cloud recording transcripts, users, and team chat, connected with a Server-to-Server OAuth app.

How it connects

New to MCP? What is an MCP server?

Runs on
Statio's runtime
Connects with
Credentials you paste in once: Account ID, Client ID, Client Secret
May connect to
zoom.usapi.zoom.us
Category
Communication

Checked October 25, 2026 against the tools/list of @kindflow/zoom-mcp-server 1.0.6 (reports itself as zoom 1.0.0)

What it does

This server reads a Zoom account's meetings, cloud recording transcripts, AI Companion summaries, users and Team Chat messages, and it can create, change and delete meetings and send Team Chat messages. It is @kindflow/zoom-mcp-server, an MIT-licensed community package, and Zoom does not maintain it. It signs in with a Server-to-Server OAuth app that you create in your own Zoom account, and Statio runs version 1.0.6 of it with its write tools turned on.

Zoom documents MCP servers of its own behind a gateway at mcp.zoom.us, aimed at AI Companion and custom agents. As of October 2026 that page lists no tools or setup steps, so this guide covers only the package above.

Tools

The package has 14 tools. Ten read, and four write. The write tools only load when ZOOM_MODE is set to readwrite, which Statio's catalog entry sets, so through Statio the server lists all 14 and your grants decide who gets which. None of them set annotations.

ToolWhat it doesReads or changes
zoom_list_recordingsCloud recordings for one user in a date range, with the IDs needed to fetch transcripts.Reads
zoom_get_meeting_transcriptDownloads a recording's VTT transcript and returns it as text with timestamps and speaker names. Falls back to the AI Companion transcript, then to the meeting summary.Reads
zoom_get_meeting_summaryThe AI Companion summary of one meeting. Needs AI Companion turned on for the account.Reads
zoom_list_meetingsOne user's scheduled, live, upcoming or previous meetings.Reads
zoom_get_meetingOne meeting's settings, join URL and agenda.Reads
zoom_list_past_meeting_participantsWho attended a past meeting, with join and leave times.Reads
zoom_list_usersEvery user in the account, filtered by active, inactive or pending.Reads
zoom_get_userOne user's email, role, timezone and department.Reads
zoom_list_channelsOne user's Team Chat channels.Reads
zoom_list_chat_messagesMessages in a Team Chat channel, with sender and time, for a date range.Reads

The four write tools, listed only with ZOOM_MODE=readwrite:

ToolWhat it doesReads or changes
zoom_create_meetingCreates an instant or scheduled meeting for a user and returns the join URL.Changes
zoom_update_meetingChanges a meeting's topic, time, duration, agenda or password.Changes
zoom_delete_meetingDeletes a meeting.Changes
zoom_send_chat_messageSends a Team Chat message to a channel or a person, as the user you name.Changes

Every tool that takes a userId accepts any user's ID or email address in the account. Nothing in the server ties a call to the person who asked for it.

Set it up

Both setups need a Server-to-Server OAuth app. On the Zoom App Marketplace, open Developers, click the plus sign next to Developer and choose Build an app, then pick Server-to-Server OAuth app. You need permission to view and edit these apps, and admin-level role permissions to add the admin scopes this server uses.

Under Scopes, choose Add Scopes and add only what the agent needs. The package README lists:

  • cloud_recording:read:admin for recordings and transcripts
  • meeting:read:admin for meetings and past participants
  • user:read:admin for users
  • chat_channel:read:admin and chat_message:read:admin for Team Chat
  • meeting:write:admin to create, change or delete meetings, and chat_message:write:admin to send chat messages. Leave them off the app if no agent should write, and the write tools fail on every call.

The summary tool calls Zoom's meeting summary endpoint, which the README's list doesn't mention. If it fails on scopes, add the one Zoom's API reference names for that endpoint. Activate the app, or Zoom won't issue a token. The App credentials section then shows the Account ID, Client ID and Client Secret. The server swaps them for an access token that lasts an hour and fetches a new one when it expires.

Claude Code, directly:

bash
claude mcp add zoom \
  -e ZOOM_ACCOUNT_ID=your-account-id \
  -e ZOOM_CLIENT_ID=your-client-id \
  -e ZOOM_CLIENT_SECRET=your-client-secret \
  -- npx -y @kindflow/zoom-mcp-server@1.0.6

Cursor, directly, in ~/.cursor/mcp.json or .cursor/mcp.json:

json
{
  "mcpServers": {
    "zoom": {
      "command": "npx",
      "args": ["-y", "@kindflow/zoom-mcp-server@1.0.6"],
      "env": {
        "ZOOM_ACCOUNT_ID": "${env:ZOOM_ACCOUNT_ID}",
        "ZOOM_CLIENT_ID": "${env:ZOOM_CLIENT_ID}",
        "ZOOM_CLIENT_SECRET": "${env:ZOOM_CLIENT_SECRET}"
      }
    }
  }
}

Add -e ZOOM_MODE=readwrite, or "ZOOM_MODE": "readwrite" in the env block, to load the four write tools. Leave it out to stay read-only. Any other value does the same.

The client tutorials, How to add MCP servers to Claude Code and How to set up MCP servers in Cursor, explain config scopes and how to keep the secret out of files you commit.

Through Statio: install Zoom from the catalog, paste the Account ID, Client ID and Client Secret under the server's Credentials, and grant tools under Permissions. A new server has no grants, so nobody can call it until you add some. The desktop app then writes your client configs. The manual entry is the local proxy URL with the server name from your dashboard, http://127.0.0.1:7777/zoom/mcp, added in Claude Code with claude mcp add --transport http zoom <url> or as a "url" in Cursor. Tools missing after that? Start a fresh session, then work through How to debug an MCP server that won't connect.

What to hold back

Start with reach. A Server-to-Server OAuth app belongs to the account, not to a person. With the admin scopes above, an agent can list every user and then read any of their recordings, transcripts, meetings and chat channels by passing their email as userId. An agent you set up to summarize your own meetings can read the CEO's one-on-ones just as easily. Nothing in this server narrows that to some users, so the limits are the scopes you add and the tools you grant.

zoom_get_meeting_transcript and zoom_get_meeting_summary are the most sensitive tools here. A transcript is everything said in the meeting, with speaker names, including the parts people assumed stayed in the room: hiring decisions, customer complaints, someone's medical leave. Once the agent reads it, it can end up in a summary, a ticket or another tool's input. Leave out cloud_recording:read:admin unless the agent's job is transcripts.

zoom_list_chat_messages is the same problem for Team Chat, and zoom_list_users and zoom_get_user hand over the company directory with roles and departments. An agent that only needs to find a meeting time needs neither.

Transcripts and chat messages are also text written by other people, including guests from outside your company. Anyone in a meeting can say something aimed at an AI that will read the transcript later. An agent that holds these reads next to write tools on another server, such as email or a ticketing system, is the setup where that becomes an action.

The four write tools act for any user you name. zoom_send_chat_message posts in someone else's name, and zoom_delete_meeting deletes a meeting other people may be planning to join. Grant them to an agent that books meetings for one person, and not to one that reads transcripts.

With Statio you grant each tool separately, so a scheduling agent can have zoom_list_meetings, zoom_get_meeting and zoom_create_meeting while a transcript agent gets the recording reads and no writes. MCP permissions covers how grants and denies combine.

Questions

Zoom documents MCP servers of its own behind mcp.zoom.us, aimed at AI Companion and custom agents. The server on this page is a community package, @kindflow/zoom-mcp-server, which signs in with your own Server-to-Server OAuth app.

Yes. With ZOOM_MODE=readwrite, which Statio sets, it adds create, update and delete tools for meetings and a tool that sends Team Chat messages. The app also needs the matching write scopes. Run directly without that setting, it only reads.

The meeting needs a cloud recording with audio transcription turned on, under Zoom's recording settings. The tool tries the recording's transcript file, then the AI Companion transcript, then the meeting summary, and reports an error if none exists.

Not in this server. Every tool takes any user's ID or email, and the app's admin scopes cover the account. Limit which tools each agent holds instead, and keep the recording and chat scopes off the app unless an agent needs them.

What Statio adds

  • You choose which of its tools each agent may call. A tool you hold back is removed from that agent's tool list, and a call to it is refused.
  • The credentials stay encrypted in Statio, so they never sit in an agent config file.
  • Every call is recorded with the agent that made it, when, how long it took and whether it succeeded.
  • The outbound list above is enforced outside the server's container, so it cannot reach any other host.

Lock down your first tool in minutes.

Three MCP servers, one of them hosted, and 10,000 calls a month, free and without a card. If you outgrow it the next plan is $19.

Two steps: create your account, then install the desktop app on each machine that runs an AI client.