Minutes

Local meeting recording, transcription and recall over Markdown files, exposed to MCP clients

By Mat Silverstein (individual) TypeScript Local · stdio Knowledge and memoryMediaProductivity

57 popularity score ★ 1.6k ↓ 1.0k/wk

Connect your client

Local (npm)

Add in one click

Opens the app, which asks before it adds the server.

Or add it by command or config

Claude CodeTerminal
claude mcp add minutes -- npx -y minutes-mcp
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "minutes": {
      "command": "npx",
      "args": [
        "-y",
        "minutes-mcp"
      ]
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "minutes": {
      "command": "npx",
      "args": [
        "-y",
        "minutes-mcp"
      ]
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "minutes": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "minutes-mcp"
      ]
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.minutes]
command = "npx"
args = ["-y", "minutes-mcp"]
Gemini CLITerminal
gemini mcp add --scope user minutes npx -- -y minutes-mcp

Settings 4

MEETINGS_DIR Optional: Folder of meeting Markdown files the recall tools read; ~/meetings by default.
MINUTES_MCP_AUTO_SETUP Optional: Set to "0" to skip speech-model health checks and downloads when only reading existing transcripts.
MINUTES_MCP_RESTRICTED_POLICY Optional: Set to logged-override to let tools return restricted meetings when asked; each request is audited.
MINUTES_HOME Optional: State folder for logs and settings; ~/.minutes by default.

What it does

Minutes is a meeting and voice-memo recorder that transcribes on your own machine and saves each conversation as a Markdown file with YAML frontmatter (decisions, action items, attendees) under ~/meetings/. The minutes-mcp package is its MCP server: a Node program that gives an assistant tools to start and stop recordings, list and search past meetings, read a full transcript, follow open commitments, build a profile of a person from the meetings they appear in, and flag decisions that later meetings contradicted.

The server does not do the audio work itself. Every tool calls the separate `minutes` command-line program (Rust), and when no compatible copy is found the server downloads a checksum-verified release of it; on Apple Silicon that archive also carries the Parakeet speech plugin, and the server then runs `minutes setup` to fetch speech models unless MINUTES_MCP_AUTO_SETUP is "0" (autoInstall.ts, agent-integrations doc).

At v0.29.1 the server registers 34 tools, 11 resources (including an interactive dashboard) and 6 prompt templates, matching the generated tool reference. Meetings marked restricted are left out of list, search and transcript results unless the person launching the server sets MINUTES_MCP_RESTRICTED_POLICY=logged-override and the call also asks for them; each such request is written to an audit log (index.ts).

What it needs

RuntimeNode.js 20+

Node.js 20 or newer for npx (package.json engines). The `minutes` CLI on PATH, or let the server fetch it: release builds exist for macOS on Apple Silicon, Windows x64 (zip, needs the Visual C++ runtime) and Linux x64 (glibc 2.39+, i.e. Ubuntu 24.04, plus ALSA and PipeWire runtime libraries even for read-only use). Building from source needs Rust and cmake. A microphone for recording; speech models are downloaded on first setup. The desktop app is installed separately with Homebrew (brew install --cask silverstein/tap/minutes). The knowledge-base tools need a [knowledge] section in ~/.config/minutes/config.toml.

Limits

Recall covers only meetings in the local folder (MEETINGS_DIR, ~/meetings by default); it does not join hosted calls. process_audio reads only WAV files from the inbox or Downloads on macOS and Linux; compressed files and Windows are refused. confirm_speaker and get_agent_annotations are kept as names but only return a notice. add_note works only during a recording and cannot edit saved meetings. get_screen_context refuses images over 10 MiB (index.ts). ingest_meeting needs a configured knowledge base and appends to an append-only log. Parakeet transcription comes with the desktop app and Apple Silicon archive; Homebrew, cargo and bare binaries use Whisper.

Who it suits

Suits someone who wants an assistant to answer questions about their own past meetings and voice memos while audio and transcripts stay on their own disk, and who is willing to run the Minutes CLI or desktop app to capture them. It works best on a Mac with Apple Silicon, where the server can set up the CLI and speech plugin unattended; on Linux the prebuilt CLI needs a recent glibc. Someone whose meetings already live in a hosted note-taker's cloud, or who only wants a general memory store rather than recordings, would be better served by a server for that service, since this one only reads its own Markdown library.

Tools 34

start_recording
Begin capturing audio from the default input device
stop_recording
End the current recording and send it for transcription and summary
get_status
Report whether a recording is running
list_processing_jobs
Show background processing jobs for recent recordings
list_meetings
List recent meetings and voice memos, without restricted ones by default
search_meetings
Search transcripts and memos by text
get_meeting
Return the full transcript of one meeting
activity_summary
Summarise desktop activity tied to one meeting
search_context
Search desktop-context events tied to one meeting
get_moment
Show the desktop activity around a point in one meeting
get_screen_context
Fetch verified screenshots linked to one meeting, up to 10 MiB each
research_topic
Gather what several meetings said about a topic
process_audio
Transcribe a WAV file from the inbox or Downloads folder
add_note
Add a timestamped note to the recording in progress
resummarize_meeting
Re-run the summary on an edited meeting, previewing first by default
consistency_report
Point out conflicting decisions and stale commitments
get_person_profile
Build a profile of a person from the meetings they were in
track_commitments
List open and overdue commitments, optionally for one person
relationship_map
Rank the people you meet with by relationship strength
start_dictation
Start speech-to-clipboard dictation that also logs to daily notes
stop_dictation
End dictation mode
start_live_transcript
Begin a real-time transcript session
read_live_transcript
Read new lines from the live transcript by cursor or time window
list_voices
List enrolled voice profiles used to tell speakers apart
confirm_speaker
Kept for compatibility; points to the app or CLI instead of changing speakers
get_meeting_insights
Query extracted decisions, commitments and questions with confidence filters
ingest_meeting
Extract facts from a meeting into the configured knowledge base
knowledge_status
Show the knowledge base settings and counts
start_copilot
Start the real-time meeting coach for a stated goal
stop_copilot
Stop the real-time coach without touching the recording
copilot_status
Report the coach session and provider health
read_copilot_nudges
Read the coach's suggestions by cursor or time window
add_agent_annotation
Append an attributed agent comment as an event, for allow-listed agents only
get_agent_annotations
Kept for compatibility; returns an unavailable notice

Similar servers