meeting-transcriber-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MEETING_TRANSCRIBER_TOKEN | No | Pin the token directly instead of reading a file. Disables the re-read-on-401 recovery | |
| MEETING_TRANSCRIBER_BASE_URL | No | Where the app's API listens | http://127.0.0.1:9876 |
| MEETING_TRANSCRIBER_TIMEOUT_MS | No | Budget for the short endpoints. transcribe_file derives its own from maxWaitSeconds | 30000 |
| MEETING_TRANSCRIBER_TOKEN_PATH | No | Read the bearer token from somewhere else | The app's token file under Application Support |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| transcribe_fileA | Submit one audio or video file to Meeting Transcriber and wait for the diarized transcript. Runs headless, so a multi-speaker recording finishes on its own with auto-assigned speaker names instead of parking on the naming step. Use enqueue_files plus get_job when you do not want to block, or when you want to assign speaker names yourself. |
| enqueue_filesA | Queue one or more audio files and return their job ids immediately. Poll each one with get_job. Unlike transcribe_file these jobs can park on the speaker-naming step, which you resolve with confirm_naming or skip_naming. |
| get_jobA | Read a job's state, result paths and transcript. Answers for live jobs and for finished ones the app has already reaped. A 404 means the id was never enqueued, aged out of the app's terminal store, or was cancelled before finishing. A job in error is not always final: a user can retry it from the menu bar, which moves the same id back to waiting. |
| get_namingA | Read the speaker labels a job is waiting to have named, with the app's own suggestion and how long each one spoke. Only meaningful while the job is in speakerNamingPending; any other state answers 404. Voice embeddings and audio are deliberately not exposed. |
| confirm_namingA | Confirm the real names behind a job's diarization labels so it can finish. A 409 means the job exists but is no longer awaiting naming. This does not enroll new voices in the app's speaker database; no endpoint here does. |
| skip_namingA | Let a job finish with the speaker names the app assigned itself. A 409 means the job exists but is no longer awaiting naming. |
| get_watch_statusA | Read whether Meeting Transcriber is watching for Teams, Zoom and Webex meetings, what the menu bar badge shows, and whether its permissions are healthy. Cheap enough to poll, and it answers even while the app is still starting up, which also makes it the liveness check for the automation API. |
| set_watchA | Start or stop automatic meeting detection, the same thing the menu bar's Start Watching item does. A 409 means a manual recording owns the watch loop. The first start on a fresh install can raise a macOS microphone or screen-recording prompt that somebody has to answer, so grant those once interactively before relying on this. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 8 tools
Most tools have clear distinct purposes: the naming cluster (get_naming/confirm_naming/skip_naming) and the watch cluster (set_watch/get_watch_status) are separable, and get_job is unique. transcribe_file vs enqueue_files share the same transcription goal and differ mainly in blocking behavior, which is the one spot an agent could misselect, though descriptions clarify it well.
All tools follow a consistent snake_case verb_noun pattern (transcribe_file, enqueue_files, get_job, set_watch, get_naming, confirm_naming, skip_naming, get_watch_status). The get_/set_/confirm_/skip_ prefixes are used predictably.
Eight tools is well-scoped for a transcription-and-watch domain, with no redundant or filler endpoints. Each tool maps to a distinct capability (sync/async transcription, job polling, naming resolution, watch control and status).
The surface covers the core lifecycle: submit, queue, poll, resolve naming, and watch automation, and get_job returns transcript results. Minor gaps exist (no job cancellation, no list/enumerate jobs, no speaker enrollment), but the descriptions explicitly flag some of these as intentional and workflows remain achievable.