# Zoom MCP

> Official Zoom MCP Server guidance for AI-agent access to the unified Zoom MCP Server and dedicated Meetings, Chat, Canvas, Tasks, Whiteboard, and Revenue Accelerator servers. Use for Zoom-hosted MCP endpoints, tools/list, tools/call, OAuth scopes, or server selection. Route product-specific work to the matching zoom-mcp child skill.

- Skill: `zoom-skills/zoom-mcp` (Agent Skill, multi-file: 12 files)
- Install (CLI): `npx skillmds add zoom-skills/zoom-mcp`
- Raw SKILL.md: https://api.skillmd.com/api/skills/zoom-skills/zoom-mcp/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: zoom (https://skillmd.com/u/zoom-skills)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/zoom-skills/zoom-mcp

---


# Zoom MCP Server

Zoom hosts an MCP server at `mcp.zoom.us` for AI-agent access to:

- semantic meeting search
- cross-Zoom search over Team Chat messages and Zoom Canvas content
- meeting-linked asset retrieval
- recording resource retrieval
- Canvas/My Notes file creation from Markdown and Markdown content export
- Zoom Hub file creation and multi-format content export

Current default Zoom MCP server tool names verified by `tools/list`:

- `create_new_file_with_markdown`
- `get_file_content`
- `get_meeting_assets`
- `get_recording_resource`
- `hub_create_file_from_content`
- `hub_get_file_content`
- `recordings_list`
- `search_meetings`
- `search_zoom`

Some MCP clients namespace server tools in the UI, for example `zoom-mcp:recordings_list`.
Treat the raw tool names above as authoritative.

Product-specific MCP work is split into child skills for
[Whiteboard](whiteboard/SKILL.md), [Team Chat](team-chat/SKILL.md),
[Meetings](meetings/SKILL.md), [Canvas](canvas/SKILL.md), [Tasks](tasks/SKILL.md), and
[Revenue Accelerator](revenue-accelerator/SKILL.md).
The old [Docs alias](docs/SKILL.md) routes legacy "Docs MCP" requests to Canvas.

> **Marketplace-first skill chain:** Before connecting to any Zoom MCP server, route to
> [Marketplace app management](../rest-api/references/marketplace-apps.md) and the
> [Marketplace template selector](../rest-api/references/marketplace-app-templates.md). For an
> automated client, first inspect the machine-readable
> [template index](../rest-api/assets/marketplace-apps/marketplace-manifest-template-index.json).
> Create
> a user-managed General App from the matching MCP template and obtain its client ID. Then
> route to [zoom-oauth](../oauth/SKILL.md) to authorize the user, exchange the authorization
> code (with PKCE where configured), and obtain the bearer access token. Only after those steps
> should this skill configure the MCP endpoint and call `initialize`, `tools/list`, or
> `tools/call`.

## Quick Start

**1. Create the Marketplace app:**

- Select the exact MCP scenario from the
  [Marketplace template selector](../rest-api/references/marketplace-app-templates.md).
- Confirm the selected index entry has `app_type: general`, `usage: USER_OPERATION`, and
  `supports_manifest_update: true`; do not substitute an S2S or Meeting SDK create request.
- Create the user-managed General App and configure its redirect URI.
- Keep only the scopes required by the MCP tools you intend to call.

**2. Obtain a user OAuth access token:**

- Complete authorization-code OAuth, using PKCE when the client cannot safely hold a secret.
- Exchange the returned code and retain the access and refresh tokens securely.
- Follow [concepts/oauth-setup.md](concepts/oauth-setup.md) for the complete flow.

**3. Add to an MCP client (Claude Code example):**
```bash
claude mcp add --transport http zoom-mcp \
  https://mcp.zoom.us/mcp/zoom/streamable \
  --header "Authorization: Bearer YOUR_ZOOM_OAUTH_TOKEN" \
  --scope user
```

**4. Verify discovery:**
- Confirm the client can see 9 default Zoom MCP tools: `search_meetings`,
  `create_new_file_with_markdown`, `search_zoom`, `get_meeting_assets`,
  `get_recording_resource`, `get_file_content`, `recordings_list`,
  `hub_create_file_from_content`, and `hub_get_file_content`.
- If the client exposes raw protocol inspection, `tools/list` is the authoritative discovery source.
- The current catalog is documented in [references/tools.md](references/tools.md).

**5. Run the first useful call:**
```text
recordings_list
  from: "2026-03-01"
  to: "2026-03-06"
  page_size: 10
```

## Critical Notes

**1. User OAuth is the recommended execution path**

A Server-to-Server OAuth token can:
- initialize against the MCP gateway
- complete `tools/list`
- open a session in environments where S2S has been separately validated

Use user OAuth as the default execution path for Zoom MCP tool use unless you have already
validated S2S scope coverage and tool execution for your app.

**2. Zoom MCP uses MCP-specific granular scopes**

The Zoom MCP scope set is not the same as the older broad REST scopes.
The key scopes for this surface are:
- `meeting:read:search`
- `meeting:read:assets`
- `ai_companion:read:search`
- `cloud_recording:read:list_user_recordings`
- `cloud_recording:read:content`
- `docs:write:import` for Canvas/My Notes file creation
- `docs:read:export` for Canvas/My Notes Markdown content export
- `hub:write:content` for Hub file creation
- `hub:read:content` for Hub file content export

**3. AI Companion features are feature prerequisites, not scope substitutes**

Semantic meeting search, meeting assets, and recording-content retrieval depend on account
features such as **Smart Recording** and **Meeting Summary** for useful results. These feature
settings do not replace the required OAuth scopes.

**4. Whiteboard is a separate MCP surface**

The Zoom MCP endpoint and the Whiteboard MCP endpoint are separate. Route Whiteboard-specific
requests to [whiteboard/SKILL.md](whiteboard/SKILL.md).

**5. Team Chat tools are a separate MCP surface**

The default Zoom MCP server includes read-only `search_zoom` for Team Chat and Canvas search.
The Team Chat MCP server is separate and exposes read, search, write, and update tools for
messages, files, contacts, channels, and channel members. Route Team Chat MCP requests to
[team-chat/SKILL.md](team-chat/SKILL.md).

**6. Use REST for deterministic meeting CRUD**

The current Zoom MCP tool surface does not expose deterministic
meeting create, update, or delete tools. If the user needs explicit meeting CRUD operations,
route to [../rest-api/SKILL.md](../rest-api/SKILL.md).

## Current Official Server Catalog

| Official server | Streamable HTTP endpoint | Current tools | Child skill |
|-----------------|---------------------------|---------------|-------------|
| Zoom MCP Server (Zoom All-in-One) | `https://mcp.zoom.us/mcp/zoom/streamable` | 9 | This skill |
| Zoom Meetings MCP Server | `https://mcp.zoom.us/mcp/meeting/streamable` | 4 | [Meetings](meetings/SKILL.md) |
| Zoom Chat MCP Server | `https://mcp.zoom.us/mcp/chat/streamable` | 20 | [Team Chat](team-chat/SKILL.md) |
| Zoom Canvas MCP Server | `https://mcp.zoom.us/mcp/canvas/streamable` | 18 | [Canvas](canvas/SKILL.md) |
| Zoom Tasks MCP Server | `https://mcp.zoom.us/mcp/tasks/streamable` | 20 | [Tasks](tasks/SKILL.md) |
| Zoom Whiteboard MCP Server | `https://mcp.zoom.us/mcp/whiteboard/streamable` | 11 | [Whiteboard](whiteboard/SKILL.md) |
| Zoom Revenue Accelerator MCP Server | `https://mcp.zoom.us/mcp/revenue_accelerator/streamable` | 15 | [Revenue Accelerator](revenue-accelerator/SKILL.md) |

The tool counts are observations from Zoom's current official server metadata, not API
contracts. Always run `tools/list` before making routing or authorization decisions. This
catalog was last checked on 2026-07-28. The current official catalog documents Streamable
HTTP; do not assume an SSE fallback exists.

Zoom's general MCP page also describes broader Workplace use cases such as Calendar, Clips,
and Email. No separate remote endpoint for those surfaces is listed in the current official
server catalog; use the unified server only when its live `tools/list` response exposes the
needed capability.

Whiteboard child skill:
- [whiteboard/SKILL.md](whiteboard/SKILL.md)

Team Chat child skill:
- [team-chat/SKILL.md](team-chat/SKILL.md)

Other dedicated child skills:
- [meetings/SKILL.md](meetings/SKILL.md)
- [canvas/SKILL.md](canvas/SKILL.md)
- [tasks/SKILL.md](tasks/SKILL.md)
- [revenue-accelerator/SKILL.md](revenue-accelerator/SKILL.md)

## Search and Retrieval Model

`search_meetings` uses AI Companion retrieval rather than a plain metadata filter. In this
use the live MCP server as authoritative for response schema and scope behavior.

Two result families matter most:

- **Recap-oriented results**: AI summary, meeting-linked documents, recordings, and related assets
- **Recording-oriented results**: cloud recording references and transcript-capable resources

Use `search_zoom` instead of `search_meetings` when the task is cross-Zoom knowledge discovery
over Team Chat messages, Zoom Canvas, or My Notes. Use `get_file_content` after `search_zoom`
when the user asks to inspect the Markdown content of a returned Canvas file or My Notes file.

Use [examples/transcript-retrieval.md](examples/transcript-retrieval.md) for the main retrieval
workflow.

## Tool Catalog

| Tool | Key Parameters | Required Scope |
|------|---------------|----------------|
| `create_new_file_with_markdown` | `content`*, `file_name`, `parent_id` | `docs:write:import` |
| `get_file_content` | `fileId`* | `docs:read:export` |
| `get_meeting_assets` | `meetingId`* | `meeting:read:assets` |
| `get_recording_resource` | `meetingId`*, `types`, `clip_num`, `play_time`, `raw_passcode`, `encode_passcode` | `cloud_recording:read:content` |
| `hub_create_file_from_content` | `content`*, file type/name and destination fields from live schema | `hub:write:content` |
| `hub_get_file_content` | file identifier* and `format` | `hub:read:content` |
| `recordings_list` | `from`, `to`, `meeting_id`, `trash`, `trash_type`, `page_size`, `next_page_token` | `cloud_recording:read:list_user_recordings` |
| `search_meetings` | `q`, `from`, `to`, `include_zoom_my_notes`, `page_size`, `next_page_token` | `meeting:read:search` |
| `search_zoom` | `search_entities`*, `query`, `page_size` | `ai_companion:read:search` |

\* Required parameter

Full parameter and output guidance: [references/tools.md](references/tools.md)

## Key Workflows

**Search meeting content, then retrieve assets:**
```text
search_meetings
  q: "Q4 planning discussion"
  from: "2026-03-01"
  to: "2026-03-06"
→ choose a returned meeting
→ get_meeting_assets  meetingId: "MEETING_ID_OR_UUID"
```

**List recordings, then retrieve recording resources:**
```text
recordings_list
  from: "2026-03-01"
  to: "2026-03-06"
→ choose a recording target
→ get_recording_resource  meetingId: "MEETING_UUID_OR_RECORDING_ID"
```

**Create a Zoom Doc from Markdown:**
```text
create_new_file_with_markdown
  file_name: "Q4 Planning Notes"
  content: "# Decisions\n\n- ..."
```

**Search Zoom Chat or Canvas, then read a returned file:**
```text
search_zoom
  query: "Q4 planning decisions"
  search_entities:
    - entity_type: "zoom_doc"
      filters:
        doc_view: "notes"
  page_size: 10
→ choose a returned Zoom Doc file_id
→ get_file_content  fileId: "FILE_ID"
```

## Error Reference

| Code | Meaning | Fix |
|------|---------|-----|
| `401 Unauthorized` | Missing or rejected bearer token at the endpoint | Re-register the MCP server with a valid bearer token |
| `-32001 Invalid access token` | Token expired, malformed, or missing required scopes | Refresh OAuth token and verify the MCP-specific scopes |
| `-32602 Can not found tool` | Requested tool name is not exposed by the active MCP server | Re-run `tools/list` and use the current tool names for that endpoint |
| `404` | Possible downstream resource-not-found response | Re-discover the target with `search_meetings` or `recordings_list` |

Full error reference: [references/error-codes.md](references/error-codes.md)

## Documentation

### Concepts
- [concepts/mcp-architecture.md](concepts/mcp-architecture.md) — MCP protocol, hosted endpoints, discovery, and capability model
- [concepts/oauth-setup.md](concepts/oauth-setup.md) — OAuth app creation, MCP-specific scopes, AI Companion prerequisites, token lifecycle

### Examples
- [examples/transcript-retrieval.md](examples/transcript-retrieval.md) — Search/assets and recording-resource workflows
- [examples/search-chat-docs.md](examples/search-chat-docs.md) — Cross-Zoom search over Team Chat, Zoom Canvas, and My Notes
- [examples/create-zoom-doc.md](examples/create-zoom-doc.md) — Verified Canvas file creation flow
- [examples/search-and-act.md](examples/search-and-act.md) — Search, inspect assets, and hand off CRUD work to REST when needed
- [examples/meeting-lifecycle.md](examples/meeting-lifecycle.md) — Why meeting CRUD belongs in REST, plus the MCP-to-REST handoff pattern

### References
- [references/tools.md](references/tools.md) — Current Zoom MCP tool reference
- [references/error-codes.md](references/error-codes.md) — MCP and Zoom API errors with fixes
- [whiteboard/SKILL.md](whiteboard/SKILL.md) — Whiteboard MCP child skill
- [team-chat/SKILL.md](team-chat/SKILL.md) — Team Chat MCP child skill
- [meetings/SKILL.md](meetings/SKILL.md) — Dedicated Meetings MCP child skill
- [canvas/SKILL.md](canvas/SKILL.md) — Dedicated Canvas MCP child skill
- [tasks/SKILL.md](tasks/SKILL.md) — Tasks MCP child skill
- [revenue-accelerator/SKILL.md](revenue-accelerator/SKILL.md) — Revenue Accelerator MCP child skill

### Troubleshooting
- [troubleshooting/common-errors.md](troubleshooting/common-errors.md) — Scope failures, endpoint mixups, search/recording issues

### Operations
- [RUNBOOK.md](RUNBOOK.md) — 5-minute preflight and debugging checklist

## Related Skills

- [zoom-rest-api](../rest-api/SKILL.md) — Deterministic REST API access, including meeting CRUD
- [zoom-oauth](../oauth/SKILL.md) — OAuth implementation patterns
- [zoom-webhooks](../webhooks/SKILL.md) — Event-driven recording and meeting workflows
- [zoom-rtms](../rtms/SKILL.md) — Live media and transcript streams during active meetings

