meetey
Allows recording audio from Zoom meetings and generating structured notes and transcripts via local transcription.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@meeteystart recording my Zoom meeting"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.

Meetey
Join a meeting, run /meetey start, and get back dated notes where every decision and action item carries the [mm:ss] it came from. Audio comes off the meeting app through macOS ScreenCaptureKit, whisper.cpp does the transcription, and Claude writes the summary. Screen content — slides, screen shares, code — is opt-in per meeting, with text recognized on-device.
Recording and transcription happen entirely on your machine. No subscriptions, no third-party meeting bots, no cloud transcription service. See What stays local for exactly what is and isn't sent anywhere.
Install
Requires macOS 13+, Node.js 18+, and Xcode Command Line Tools.
npx jej2k5/meetey installThis will:
Install whisper-cpp via Homebrew (if not already present)
Download the Whisper base model (~142 MB) to
~/.meetey/models/Build and sign the Swift capture binary
Register the MCP server in Claude Code
Install the
/meeteyskillAdd hotkeys (
Ctrl+Shift+R/Ctrl+Shift+S)
After installation, open System Settings → Privacy & Security → Screen Recording and enable your terminal app. Then start a new Claude Code session.
Related MCP server: Voice MCP
Usage
In Claude Code
/meetey start Detect running meeting apps and start recording
/meetey stop Stop recording, transcribe, and save notes
/meetey status Check whether a recording is active
/meetey list Browse past meetings
/meetey show Open one meeting's notes
/meetey search Find a moment across every meeting
/meetey delete Remove a recording
/meetey doctor Check the install/meetey start asks whether to also capture screen content. Answer up front to skip the question:
/meetey start --video Audio + screen keyframes
/meetey start --audio-only Audio onlyOr use the hotkeys:
Hotkey | Action |
|
|
|
|
Workflow
Join your meeting in Chrome (Google Meet / Teams web), Zoom, or Microsoft Teams
Run
/meetey start— Claude detects the running app, asks whether to capture screen content, and begins recordingWhen the meeting ends, run
/meetey stop— Claude transcribes the audio, reads any screen content, and produces:
## Q3 Roadmap and API Cutover
**Recorded:** Fri 1 Aug 2026, 2:02–2:47 PM · 45 min
### Summary
...
### Key Decisions
- **[12:04]** Ship v1.1 without the motion heuristic; revisit next cycle
### Action Items
- [ ] **[31:17]** Draft the migration doc — Priya · due Friday
### Screen Content ← only when screen capture was used
- **[04:12]** Burndown chart, actual tracking ~11 days behind plan
### Transcript
Full transcript: `2026-08-01-1402-q3-roadmap-transcript.md` · 6,180 wordsEvery claim carries the timestamp it came from. If you doubt a decision, jump straight to that moment in the transcript instead of searching thousands of words.
Notes are written to ~/.meetey/recordings/ as YYYY-MM-DD-HHMM-<slug>.md — chronologically sortable, so ls is a meeting history. The transcript lives in a sibling -transcript.md file rather than inline, so the notes stay scannable.
When the transcription is unreliable, the notes say so at the top instead of summarizing noise with a confident voice:
> ⚠️ Transcription quality: poor — 80% of segments were silence markers,
> fragments, or repeats. Summary may be incomplete; ggml-base.en.bin was used.That assessment is computed from the transcript itself (fragment rate, whisper looping, speech pace against spoken time), not guessed.
Supported apps
App | Audio captured | Screen captured (opt-in) |
Chrome | All Chrome audio | Everything Chrome displays — all tabs and windows |
Zoom | Zoom meeting audio | The Zoom window, including screen shares |
Microsoft Teams (desktop) | Teams meeting audio | The Teams window, including screen shares |
Chrome note: ScreenCaptureKit captures at the process level, not the tab level. Mute any other Chrome tabs playing audio before starting — and if you opt into screen capture, close or hide anything you don't want recorded, because every Chrome tab and window is in frame.
Screen capture
Meetey can also capture what was on screen — slides, screen shares, code, diagrams — and fold it into the notes.
It is off by default and opt-in per meeting. Claude asks every time you run /meetey start; there is no setting that turns it on permanently. Skip the question with /meetey start --video or /meetey start --audio-only.
/meetey start --video Record audio + screen keyframes
/meetey start --audio-only Record audio only, don't askInstead of recording video, Meetey samples the screen once a second and keeps a JPEG only when the picture materially changes. An hour-long meeting typically yields a few dozen keyframes rather than 3,600, which is what makes this cheap enough to be worth doing:
Storage/hr | Sent to Claude | |
Audio | ~115 MB | ~12K tokens (transcript) |
Screen keyframes | ~10 MB | ~5K tokens (recognized text) |
Text is recognized on-device with the macOS Vision framework, so the default path sends only text. Claude reads an actual keyframe image only when the text isn't enough — a diagram, a chart, a UI screenshot.
⚠️ Screen capture records everything the target app displays — other tabs, other windows of that app, and notification banners that appear over it. A screen share can contain credentials, customer data, or a colleague's private dashboard. Close or mute anything sensitive before you opt in.
Keyframes are written to ~/.meetey/recordings/<session>-frames/ and are not deleted automatically — the notes reference them, so removing them would make the summary unverifiable. Delete that folder yourself when you're done with it.
Tuning, if you need it (pass through to meetey-capture):
Flag | Default | Purpose |
|
| Frames sampled per second |
|
| Grid cells (of 1024) that must change to count as a new scene. Raise it if a video tile is producing too many keyframes |
|
| Hard cap per session |
| off | Skip on-device text recognition |
Camera-heavy calls are a poor fit. A moving video tile changes the picture constantly and will burn through the frame budget. Screen capture pays off for slides, demos, and screen shares; for a faces-only discussion, stay on audio.
Managing your meetings
Everything about the library is reachable from Claude Code — there's no separate app, dashboard, or web UI to open. Every subcommand has a plain-language equivalent, so use whichever you'd reach for:
Subcommand | Or just ask | Tool |
| "what meetings do I have this week?" |
|
| "show me the standup from Thursday" |
|
| "what did we decide about the API cutover?" |
|
| "delete yesterday's test recording but keep the notes" |
|
| "is meetey working? screen recording seems broken" |
|
/meetey status is about the recording running right now; /meetey doctor is about whether the install itself is healthy.
Search is the one worth knowing about. Asking "what did we decide about the API cutover?" returns the decision, the meeting, and the timestamp — so you can jump straight to that second in the transcript instead of reading it.
What stays local
Stays on your machine, always | Sent to Claude to write the summary |
Meeting audio (the WAV) | The transcript text |
Screen keyframes (the JPEGs) | Recognized on-screen text (OCR) |
Whisper transcription — runs locally | A few keyframe images, only when text isn't enough |
Vision OCR — runs on-device |
Nothing is uploaded to a third-party meeting service, and no bot joins your call. Audio and images never leave your machine unless Claude needs a specific keyframe to interpret a diagram. Summarization itself runs through Claude, so the text does go to the API — the same as anything else you'd paste into Claude Code.
CLI
npx jej2k5/meetey install # First-time setup
npx jej2k5/meetey update # Rebuild binary and refresh MCP server + skill
npx jej2k5/meetey status # Show what's installed and whether everything is wired upstatus output:
Meetey status
✔ meetey-capture binary (~/.meetey/meetey-capture/.build/release/meetey-capture)
✔ binary code-signed
✔ whisper-cli (/opt/homebrew/bin/whisper-cli)
✔ Whisper model (ggml-base.en.bin) (~/.meetey/models/ggml-base.en.bin)
✔ MCP server files (~/.meetey/mcp-server)
✔ MCP server registered in ~/.claude.json
✔ /meetey skill installed
✔ Hotkeys registered (Ctrl+Shift+R / Ctrl+Shift+S)Requirements
macOS 13 (Ventura) or later
Node.js 18+
Xcode Command Line Tools (
xcode-select --install)Claude Code
Homebrew (installed automatically if missing)
Whisper model
The default model is ggml-base.en.bin (~142 MB), stored at ~/.meetey/models/. It handles clear English speech well. For better accuracy on accented speech or technical vocabulary, switch to a larger model:
Model | Size | Notes |
| 142 MB | Default. Fast, good for clear English. |
| 466 MB | Better accuracy. |
| 1.1 GB | Best accuracy. Slower. |
To switch, download the model to ~/.meetey/models/ and set MEETEY_MODEL in the mcpServers.meetey.env section of ~/.claude.json.
Troubleshooting
Problem | Fix |
| Run |
| Run |
App not listed by | Ensure the meeting app is open and a call is active |
Blank or garbled transcript | Check Screen Recording permission: System Settings → Privacy & Security → Screen Recording |
Chrome captures wrong audio | Mute other tabs playing audio before starting |
MCP tools not available after install | Restart Claude Code — MCP servers connect at session startup |
No screen content in the notes | Screen capture is opt-in per meeting — start with |
Too many near-identical keyframes | A video tile or animation was on screen. Raise |
Slide changes missed | Lower |
Keyframe text is garbled | Confirm the meeting window isn't scaled down; OCR runs on the captured resolution |
How it works
/meetey skill → MCP server (Node.js, ~/.meetey/mcp-server/) → meetey-capture (Swift, ~/.meetey/)
→ whisper-climeetey-capture is a Swift CLI using ScreenCaptureKit. It takes --app <bundle-id> and --output <path.wav>, records app audio as 16-bit PCM WAV at 16 kHz mono, and stops on SIGTERM. With --video it also samples the screen, keeps a JPEG when the picture changes, and runs Vision OCR on each one.
MCP server manages the capture process lifecycle and shells out to whisper-cli for transcription. Registered globally in ~/.claude.json so it's available in every Claude Code session.
/meetey skill drives the user-facing flow: list_apps → start_recording → stop_recording → transcribe → get_keyframes, then formats and saves the output.
Run meetey-capture --selftest to exercise the keyframe pipeline (scene detection, JPEG encoding, OCR, manifest) with synthetic frames — no Screen Recording permission or live meeting required.
Files written
Path | Contents |
| Raw audio from each session |
| Structured notes — summary, timestamped decisions and action items, screen content |
| Full transcript, one timestamped line per utterance |
| Screen keyframes + |
| Whisper model |
| MCP server (stable install location) |
| Swift binary and sources |
Contributing
Issues and pull requests are welcome. To work on Meetey from a local clone:
git clone https://github.com/jej2k5/meetey.git
cd meetey
node cli/index.js install # build, sign, and register everything locallyAfter changing Swift sources, rebuild and re-sign:
cd meetey-capture
swift build -c release
codesign --force --sign - --options runtime --entitlements entitlements.plist \
.build/release/meetey-captureThen restart Claude Code so the MCP server reconnects.
New source files should carry the Apache 2.0 header used by the existing files. By contributing, you agree that your contributions are licensed under the Apache License 2.0.
License
Copyright 2026 John Joseph
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the LICENSE file for the specific language governing permissions and limitations under the License.
Third-party attributions are listed in NOTICE.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityCmaintenanceCaptures and organizes structured markdown notes from Claude Code sessions with automatic pattern detection, complexity analysis, advanced search, and weekly reports. Everything runs locally without external dependencies.Last updated1MIT
- Alicense-qualityCmaintenanceEnables bidirectional voice interaction for Claude Code using local speech-to-text and text-to-speech models optimized for Apple Silicon. It provides tools to listen to user speech via microphone and speak responses aloud through system speakers.Last updated16Apache 2.0
- AlicenseAqualityAmaintenanceEnables transcription, summarization, and action item extraction from audio files on your Mac using MacWhisper and Claude Desktop, all locally without any cloud APIs.Last updated72MIT
- AlicenseAqualityDmaintenanceLocal speech-to-text transcription using Microsoft's VibeVoice-ASR model with speaker diarization, enabling audio transcription directly in AI tools like Claude Code, Cursor, and OpenCode.Last updated32MIT
Related MCP Connectors
Connect Claude to Fathom meeting recordings, transcripts, and summaries
WHOOP recovery, strain, sleep and workouts in Claude via official WHOOP OAuth. Free, open source.
Search recordings, summarize meetings, create clips, and automate workflows from your AI assistant.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/jej2k5/meetey'
If you have feedback or need assistance with the MCP directory API, please join our Discord server