State Memory MCP
Local SQLite graph of tasks, decisions and blockers that coding assistants keep across sessions
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
Opens the app, which asks before it adds the server.
claude mcp add minutes -- npx -y minutes-mcp{
"mcpServers": {
"minutes": {
"command": "npx",
"args": [
"-y",
"minutes-mcp"
]
}
}
}{
"mcpServers": {
"minutes": {
"command": "npx",
"args": [
"-y",
"minutes-mcp"
]
}
}
}{
"servers": {
"minutes": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"minutes-mcp"
]
}
}
}[mcp_servers.minutes]
command = "npx"
args = ["-y", "minutes-mcp"]gemini mcp add --scope user minutes npx -- -y minutes-mcpMEETINGS_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. |
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).
| Runtime | Node.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.
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.
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.
start_recordingstop_recordingget_statuslist_processing_jobslist_meetingssearch_meetingsget_meetingactivity_summarysearch_contextget_momentget_screen_contextresearch_topicprocess_audioadd_noteresummarize_meetingconsistency_reportget_person_profiletrack_commitmentsrelationship_mapstart_dictationstop_dictationstart_live_transcriptread_live_transcriptlist_voicesconfirm_speakerget_meeting_insightsingest_meetingknowledge_statusstart_copilotstop_copilotcopilot_statusread_copilot_nudgesadd_agent_annotationget_agent_annotations