
Call Copilot
io.github.AnisurRahmann由 GitHub 账号 AnisurRahmann 发布v0.4.3更新于 Nov 3, 2026
Search and read locally-recorded meeting transcripts over stdio. Read-only, no network.
概览
只读 MCP 服务器,让助手在 Mac 上列出、读取并按关键词搜索本地录制的会议转录稿。
- 可以做什么
- 列出已录制的会话,并按日期缩小范围查找某场会议
- 读取指定会话的完整转录稿
- 按关键词跨转录稿搜索,返回匹配行并标注会话 id 与时间戳
- 回答完全在本地完成:服务器严格只读,不发起任何网络请求
- 适用场景
- 如果你已在 macOS 上用 Call Copilot 的 rec 命令录制会议,并希望助手回答会上说了什么、列出过往会议及时长、或调出完整转录稿,且每条回答都引用会话 id,就适合使用。
- 运行要求
- 以本地 stdio 进程运行,命令为 rec mcp(PyPI 包 call-copilot,可用 uvx 启动)。需要 macOS 14.2 或更高版本,以及由 rec 工具产生的既有录音;搜索索引在 ~/.local/share/rec/index.db 按需构建。无需 API 密钥、账号或网络访问。
安装
在 SourceWeft 中
- 打开 控制台中的 Call Copilot,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
Call Copilot
[call-copilot MCP server] [Call Copilot MCP server]
One thing. Done really well. Record meetings. Save transcripts. Don't break audio.
Call Copilot is a terminal command (rec) that records your meeting audio and, when you
stop it, transcribes locally and saves a clean markdown transcript. Everything runs on
your machine — no cloud, no API keys, no account. Audio and transcripts never leave the
computer.
How it captures audio (no BlackHole, no Multi-Output Device)
By default, rec captures both the microphone (your voice) AND system audio (other
participants / anything apps play) — so a real meeting where you speak gets recorded,
not just the audio coming out of your speakers. Both sources are tapped directly via
Apple's Core Audio taps API (macOS 14.2+) using the audiotap
library. There is:
- no virtual audio driver to install (no BlackHole),
- no Multi-Output Device to create in Audio MIDI Setup,
- no system output device to switch and restore,
- and therefore no silent-recording failure that the old driver-based approaches produce when routing breaks.
The mic and system streams are recorded as two separate WAVs (each at its own true
rate), transcribed separately, and merged into one transcript with [Mic] / [System]
labels so you can tell who said what. Want just one source? rec start --mic-only or
--system-only.
Grant capture permission (one-time, per terminal app)
macOS ties capture permission to the app you run rec from (Terminal, iTerm, Warp,
VS Code, …). You need two grants:
- Microphone (your voice): System Settings → Privacy & Security → Microphone → enable your terminal app.
- System audio (grouped under Screen Recording on macOS 14.2+): System Settings → Privacy & Security → Screen Recording → enable your terminal app, then quit and reopen it (required for the change to take effect).
Until mic is granted, rec start records system audio only and skips the mic (it tells
you so). rec setup checks the current mic-permission status.
After rec stop (or Ctrl+C from rec start), the recording(s) are transcribed locally
with faster-whisper (CPU, int8 — no API, no
data leaves your machine) and written to a markdown transcript.
Requirements
- macOS 14.2 or later (Sonoma — the Core Audio process taps API
recrecords through landed in 14.2). Apple Silicon recommended. Intel works. - Python 3.11+ only needed for the
pipxinstall; the Homebrew formula brings its own.
No virtual audio driver (no BlackHole), no Multi-Output Device, no manual Audio MIDI Setup.
The tap reads system output directly. rec checks the macOS version itself and refuses to
run below 14.2 with a one-line message — you don't have to guess.
Install
Homebrew (recommended — no Python to manage):
pipx (if you prefer a plain Python install, no Homebrew):
Either way you get a rec command on your PATH. Then jump to
One-time setup.
Using
recon a machine below macOS 14.2 printsError: rec requires macOS 14.2 or later ...and exits — no traceback, no mystery. See docs/HOMEBREW.md if you're setting up the tap yourself.
Recording consent & privacy
Call Copilot records audio from your meetings, which may include other participants. Recording laws vary by jurisdiction and many require the consent of everyone being recorded (one-party vs. all-party consent). Obtaining that consent is your responsibility — check your local laws and your organization's policy before recording.
On the technical side, your data stays put:
- Transcription runs 100% locally with faster-whisper (CPU, int8) — no API, no cloud.
- Audio and transcripts never leave your machine. The only network access is the first run of a given Whisper model, which downloads its weights from Hugging Face; after that it's fully offline.
- Recordings live under
~/.local/share/rec/sessions/(XDG data home), outside any repo.
One-time setup
Verifies your macOS version, that the audiotap library + its bundled dylib load, saves
your config, and tells you about the one-time capture permission prompt.
Recording a meeting
By default rec start records both your microphone and system audio; the transcript
labels each line [Mic] or [System]. Use --system-only / --mic-only to narrow.
rec start shows a live indicator while recording:
Press Ctrl+C when your meeting ends — it stops the recording and transcribes in the same command, then prints the transcript path. One command, start to finish.
Want the old background behavior instead? rec start --detach spawns the recorder and
exits immediately; stop it later from another terminal with rec stop (or check progress
with rec status).
Tip: if a transcript comes back empty, the recording was silent — nothing was playing, or the capture permission was revoked.
rec start(andrec stop) warn you about this immediately, andrec diagnose <session>bundles the audio levels + logs.
Use your meetings from Claude Code
rec ships an MCP server (the open protocol Claude Code, Cursor, Zed, Cline, and
other AI tools speak). Point any MCP client at your locally-recorded transcripts and ask
questions about them — answers come back with the session id cited, so you can check
the exact moment. Nothing leaves your machine: the server is strictly read-only and makes
no network calls.
Then restart Claude Code and ask, for example:
- "What did the client actually ask for on Tuesday's call?" — it searches the transcripts,
finds the line, and cites the session id (e.g.
2026-07-28_12-25-20) with a timestamp. - "List my meetings from last week with their durations." — it lists sessions, narrowing by date.
- "Show me the full transcript of the standup where we discussed the API migration." — it finds the session, then reads the whole transcript.
Three tools are exposed: list_sessions (find a meeting by date), get_session (read a
whole transcript), and search_transcripts (find specific lines across long transcripts —
pass it keywords like pricing discount, not a full sentence). The search index lives
at ~/.local/share/rec/index.db; it builds lazily on first search and is a disposable cache
— rec index refreshes it, rec index --rebuild recreates it from scratch.
Other MCP clients (Cursor, Zed, Cline, …)
rec mcp install prints a config block that works in any MCP client. For Cursor, paste it
into .cursor/mcp.json; for Zed, into settings.json under mcp_servers. It looks like:
You can also run the server directly with rec mcp (stdio transport) if a client prefers a
raw command.
Official MCP Registry
Call Copilot is listed on the official MCP Registry
under io.github.AnisurRahmann/call-copilot. Any MCP client that speaks the registry can
discover and add it from there. The registry entry runs the server with:
(The PyPI package is call-copilot; the command it installs is rec, so the server is
launched as rec mcp.)
Browser UI
rec web opens a local browser tab — a read-mostly viewer for sessions you've
already recorded, plus Start/Stop controls. It's modelled on the qBittorrent /
Transmission web UI: a loopback HTTP server serves a single-page app that drives
the same session store the CLI uses. The terminal can't show a live capture
meter, a seekable audio player beside its transcript, or a session list you can
skim in one glance — the browser can, so the UI exists for exactly those three
things.
[rec web — session detail with audio and transcript]
From the tab you can browse sessions, play and seek the audio next to its
transcript, search across every transcript, and Start/Stop a recording. Start
calls the same recorder the CLI does; Stop queues transcription and the page
polls until the transcript is ready. If no config is found, the Start button
tells you to run rec setup in a terminal first.
The server binds to 127.0.0.1 only — the host is not configurable, by design
(a local tool must not become an open transcript server). --port overrides the
default port; --no-open skips the automatic browser tab.
What this is not. The UI is still not a real-time transcription surface — the transcript arrives after Stop, exactly as in the CLI, and there is still no cloud, no sync, and no account. Every action in the browser maps to a command that already exists; if a feature has no CLI equivalent, it is not in the UI.
Configuration
Stored at ~/.config/rec/config.json (XDG). Recordings live under
~/.local/share/rec/sessions/{id}/. Override the XDG roots with XDG_CONFIG_HOME /
XDG_DATA_HOME if needed.
16 kHz mono float32 is Whisper's native input format — no resampling, smallest files (~7.5 MB/min), best transcription accuracy.
A note on sample rate (why your recordings play at the right speed)
audiotap's sample_rate parameter is not honored — the tap always delivers
audio at your output device's native rate (typically 48 kHz), regardless of what
we request. rec handles this transparently: the recorder measures the true
capture rate when the tap starts and writes the WAV at that rate (so playback
is the correct speed), and the transcriber resamples to 16 kHz before
feeding Whisper (so transcription is accurate). You don't need to do anything;
this section exists to explain the capture_sample_rate field in session.json
(which may differ from the sample_rate in your config).
A note on VAD (voice activity detection)
Transcription runs without faster-whisper's Silero VAD pre-filter by default.
The VAD is tuned for close-mic speech and aggressively rejects system-audio
capture (speakers/headphones via a tap, which has a different character) — we've
seen it discard 100% of a clearly-audible recording and return an empty
transcript. Whisper's own no_speech_threshold handles silence adequately
without that risk.
If you have clean close-mic input and want long silences skipped (faster, cleaner output), enable it per run:
Stack
Everything is free and open-source. Transcription runs 100% locally — no API cost, no data leaves the machine. (The first run of a given whisper model downloads its weights from Hugging Face; after that it's offline.)
Logging & debugging
Every activity — the audio tap lifecycle, chunk writes, transcription, formatting, each CLI decision — is logged. Logs flow to three destinations:
* WARNING by default: -v → INFO, -vv → DEBUG, --quiet → CRITICAL, REC_LOG_LEVEL=DEBUG.
Every command failure is logged at ERROR with the reason + exit code; unexpected
crashes include the full traceback.
Hand a session to an AI agent to debug
The bundle contains the session metadata, the daemon's recorder.log, the global-log
lines tagged with that session, the transcript if it exists, and the config — followed
by a debugging checklist. (rec diagnose accepts a unique prefix too, e.g. 2026-07-27.)
Note on the recording loop: the audio callback runs on Core Audio's real-time thread and deliberately logs nothing — it copies each chunk to a queue and a writer thread does the disk I/O. The daemon logs only at tap start/stop and on signals.
Development
You only need this if you're hacking on rec itself. End users should use the
Install commands above.
make install requires Python 3.11+ on your PATH (it pins python3.11 for the
venv). For everything else — releasing, the Homebrew tap, code style — see
CONTRIBUTING.md and docs/HOMEBREW.md.
Contributing
Issues and pull requests are welcome at github.com/AnisurRahmann/call-copilot. Please read CONTRIBUTING.md before opening a PR, and report security issues privately per SECURITY.md.
What this is NOT
- Not a real-time transcription tool (transcription happens after you stop).
- Not a meeting summarizer (just the transcript).
- Not a Zoom/Meet plugin (it captures system audio generically).
- Not cross-platform (macOS 14.2+ only).
License
MIT — see LICENSE. © Anisur Rahman.
来源:README.md,提交 b8355c0
工具
0版本历史
1- v0.4.3最新Sep 16, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分
