Limited Edition Jonathan

Build a Zoom MCP your AI can actually use.

Give your AI one prompt to build the connection, then keep the useful meeting data in an index you own.

00

Paste this into your AI.

This prompt turns the guide into a supervised build. Your AI does the local work; you handle Zoom login, credentials, and final permission changes.

Zoom MCP setup promptPaste this into Codex, Claude Code, or another coding agent with local file access.
Complete build prompt
<task>
Build a local Zoom MCP server and an optional indexed memory layer for me.
Work with me until the connection is tested end to end.
</task>

<operating_rules>
- Inspect my machine, current folder, Python version, and available MCP clients first.
- Never ask me to paste Zoom credentials, tokens, or secrets into chat.
- Keep secrets in a local .env file that is excluded from Git.
- Use a dedicated Zoom Server-to-Server OAuth app.
- Request only scopes used by implemented tools.
- Start read-only unless I explicitly approve scheduling or update access.
- Do not add deletion scopes without a separate explanation and confirmation.
- Stop before changing Zoom permissions, rotating credentials, or submitting forms;
  put the correct screen in front of me and tell me exactly what will change.
- Use current official Zoom and MCP documentation when an API detail may have changed.
</operating_rules>

<tools_to_build>
Read tools:
- list upcoming meetings
- get one meeting
- list cloud recordings by explicit date range
- get recording files
- list AI meeting summaries by explicit RFC 3339 date range
- get one summary using the meeting-instance UUID
- get and download one retained transcript

Optional write tools, only after I approve them:
- create a meeting
- update a meeting
</tools_to_build>

<zoom_setup>
Guide me through creating and activating the Server-to-Server OAuth app.
Map every requested granular scope to one implemented tool.
Also verify these Zoom settings:
- Cloud recording
- Create audio transcript
- Meeting Summary with AI Companion
- retained meeting transcripts for use by other AI services
Explain that cloud recordings, AI summaries, and retained transcripts are separate API lanes.
</zoom_setup>

<implementation>
- Use Python and the official stable MCP Python SDK.
- Use a small, readable project with .env.example, requirements.txt, and README.md.
- Cache one-hour Zoom access tokens safely.
- Encode meeting UUIDs correctly for API paths.
- Return useful errors without printing credentials or private meeting content.
- Register the server with my chosen MCP client using absolute paths.
</implementation>

<verification>
Test each lane separately and report status codes plus counts, not private content:
1. token request
2. meeting list
3. summary list for the last seven days
4. summary detail for the newest meeting UUID
5. retained transcript metadata and download character count
6. cloud recordings for an explicit date range
If an endpoint returns zero results, inspect its date window and data type before
concluding that permissions are broken.
</verification>

<memory_layer>
After the MCP works, ask me to choose one destination:
1. SQLite with normalized tables and FTS5 search
2. OpenBrain with provenance and entity links
3. Markdown with YAML frontmatter and monthly indexes

Build an idempotent ingestion job that stores meeting UUID, meeting number, topic,
time, people/projects, summary, transcript location or content, decisions, actions,
source URL, content hash, and sync time. The AI should search this local index first
and call Zoom only for fresh, missing, or action-oriented data.
</memory_layer>

<finish_line>
The work is complete only when the MCP reconnects cleanly, the new tools appear in
the client, a real summary and transcript can be retrieved, the chosen local index
can answer a search query, and all created files and retest commands are documented.
</finish_line>
Your partSign in to Zoom yourself. Keep credentials out of chat. Confirm account-level permission changes only after the AI explains the exact scope and tool it enables.
01

MCP handles access. Your index handles recall.

Scheduling and current account state belong in live tool calls. Summaries, transcripts, decisions, and action items should be normalized after the meeting so the AI does not rebuild context through the same chain of API calls every time.

The transcript is raw material. The index is what turns it into recall.
02

Give each Zoom permission one job.

Create the app

At marketplace.zoom.us, choose Develop → Build App → Server-to-Server OAuth. Use one dedicated app for this integration.

Store credentials locally

Put the Account ID, Client ID, and Client Secret in .env. Never put them in the prompt, source code, screenshots, or setup documentation.

Add scopes

Use the table below. Omit create and update scopes for a read-only research MCP. Leave deletion out unless you have a concrete workflow and confirmation gate.

Generate the data

In Zoom Recording settings, enable Cloud recording and Create audio transcript. Enable Meeting Summary with AI Companion and retained transcripts for the summary-generated transcript lane.

Activate

The app must be active before it can request one-hour account-credential tokens.

JobGranular scopeAccess
List meetingsmeeting:read:list_meetings:adminRead
View a meetingmeeting:read:meeting:adminRead
Create meetingsmeeting:write:meeting:adminOptional
Update meetingsmeeting:update:meeting:adminOptional
List cloud recordingscloud_recording:read:list_user_recordings:adminRead
View recording filescloud_recording:read:recording:adminRead
List AI summariesmeeting:read:list_summaries:adminRead
View one summarymeeting:read:summary:adminRead
Download retained transcriptcloud_recording:read:meeting_transcript:adminRead
Zoom App Marketplace scopes page showing where granular meeting and recording scopes are added
Use Add Scopes, then search by the human description if the scope ID search is unreliable.
Zoom recording settings with Create audio transcript enabled
Create audio transcript lives under Advanced cloud recording settings.
03

Install the small, boring server.

Download the starter, create a virtual environment, and register the absolute Python and script paths with your MCP client.

Install
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt
Claude Code example
claude mcp add zoom -s user -- \
  /absolute/path/zoom-mcp/.venv/bin/python \
  /absolute/path/zoom-mcp/zoom_mcp.py

Restart or reconnect the client after changing the server. Past summary and transcript detail calls must use the meeting-instance UUID returned by the list endpoint, not merely the reusable meeting number.

04

Prove each Zoom data lane separately.

Token and meetings

Confirm the token request and meeting list return 200 without printing secrets.

Summaries

List summaries for an explicit RFC 3339 date range, then retrieve one summary by its returned instance UUID.

Retained transcripts

Retrieve transcript metadata and download the content with the OAuth bearer token.

Cloud recordings

Query an explicit date range. The default window is narrow, so a successful empty result does not prove the scope is broken.

Retest prompt
Use the Zoom MCP to test meetings, summaries, retained transcripts,
and cloud recordings as separate data lanes. Use explicit date ranges.
Report status codes, result counts, and content character counts only.
Do not quote private meeting content or print credentials.
05

Choose where the meetings become memory.

Three tactile destinations for meeting data: a database, notebook, and knowledge box
09 JULAlan syncindexed
25 JUNHardware sessionindexed
09 JUNProject reviewindexed
08 JUNCreative reviewindexed

SQLite

The default for one person and one machine: normalized tables, FTS5 search, sync state, and simple backups.

OpenBrain

Use when meetings should join a broader graph of people, projects, decisions, and provenance.

Markdown

Use one file per meeting with YAML frontmatter, stable filenames, and monthly indexes.

06

Make one lookup answer “what do we know?”

FieldPurpose
meeting_uuidImmutable meeting-instance identity for detail calls.
meeting_idReusable human-facing meeting number.
topic + started_atScanning and date filtering.
people / projectsConnections to the rest of your work.
summary / transcriptNormalized content or stable local location.
decisions / actionsHigh-value retrieval objects.
source_url + synced_atProvenance and freshness.
content_hashChange detection and idempotent sync.

Search this index first. Load the relevant summary or transcript chunks. Return to Zoom only when the record is missing, stale, or an action must occur.

07

Download the working starter.

Download zoom-mcp-starter.zip

The ZIP includes the FastMCP server, safe environment template, requirements, normalized SQLite schema, ingestion script, and retest instructions.

Download files separately
zoom_mcp.pyMeeting, recording, summary, and transcript tools.
Get file
.env.exampleCredential names without secrets.
Get file
schema.sqlSQLite tables and FTS5 search.
Get file
ingest_zoom.pyIdempotent summary and transcript ingestion.
Get file
requirements.txt
Get file
README.md
Get file