
Mcp Listen
io.github.analyticsinmotion由 GitHub 帳號 analyticsinmotion 發布v0.1.1更新於 Oct 24, 2026
Give your AI agents the ability to listen. Microphone capture and speech-to-text.
概覽
一個本機 MCP 伺服器,讓助理存取麥克風:列出輸入裝置、錄製 WAV 音訊,並執行本機語音轉文字與 Ollama 語音查詢。
- 可以做什麼
- 列出可用的麥克風輸入裝置,附上穩定 id 與預設標記,方便在重新開機與裝置變動後可靠地選擇裝置。從指定麥克風錄製音訊並存成 WAV 檔案,可依固定長度錄製,或透過裝置端語音活動偵測在說話者停止時結束。執行完整語音流程:擷取語音、用 whisper.cpp 在本機轉寫、把轉寫文字送給本機 Ollama 模型,並回傳轉寫結果與模型回覆。區分靜音、有語音但無法轉寫,以及擷取、轉寫或語言模型失敗等不同結果。
- 適用情境
- 適合希望助理在同一台機器上接收語音輸入的情境,例如用語音提問、錄製一段短音訊,或對本機模型進行免手操作查詢。由於音訊與轉寫都留在本機,也適合重視隱私的設定。
- 執行需求
- 以本機 npm 套件執行(npx mcp-listen 或全域安裝),支援 Windows x64、macOS Apple 晶片與 Linux x64/arm64;不支援 Intel Mac。列出裝置與錄音需要 Node.js 18+ 及麥克風。語音查詢工具還需要本機執行 Ollama 並已拉取模型,以及事先下載的 Whisper GGML 模型(約 150MB),可透過 WHISPER_MODEL_PATH 環境變數指定位置。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Mcp Listen,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
mcp-listen
Give your AI agents the ability to listen
Microphone capture and speech-to-text tools for MCP-compatible agents.
Tools
Quick Start
Claude Code
Claude Desktop / ChatGPT Desktop / Cursor / Windsurf / VS Code
Add to your MCP configuration:
Compatible with Claude Desktop, ChatGPT Desktop, Cursor, GitHub Copilot, Windsurf, VS Code, Gemini, Zed, and any MCP-compatible client.
Global Install
Requirements
Supported platforms:
- Windows x64
- macOS Apple silicon (arm64)
- Linux x64 and arm64 (glibc)
Intel Mac (darwin-x64) is not supported: Apple has discontinued the platform and no decibri binary is published for it.
For list_audio_devices and capture_audio:
- Node.js 18+
- A microphone
For voice_query (optional):
- Ollama running locally
- Whisper GGML model (see Whisper Model Setup)
Tool Reference
Arguments are validated before anything is recorded or written. An argument a tool does not declare is rejected with an error naming it, rather than silently ignored. duration_ms must be an integer between 100 and 30000; silence_ms an integer between 100 and 10000; stop_on_silence a boolean; device a non-negative integer index or a non-empty string id from list_audio_devices. A silence_ms that cannot take effect (passed without silence-stopping active) is rejected for the same reason unknown arguments are. A rejected call writes nothing to disk.
list_audio_devices
Returns a JSON array of available audio input devices.
Parameters: None
Example response:
The id is stable across reboots and device changes. The index is positional and can shift when devices are added or removed, and names are not unique. Prefer id when selecting a device. In the rare case the host cannot produce a stable id for a device, its id is an empty string and it can only be selected by index.
capture_audio
Records audio from the microphone and saves as a WAV file. Records for exactly duration_ms by default, or until the speaker stops talking with stop_on_silence: true.
Parameters:
Example response (fixed duration):
Example response (stop_on_silence: true):
With stop_on_silence, duration_ms in the response is the actual captured length, and stopped_by says how the recording ended: "silence" (the speaker finished), "ceiling" (the duration_ms maximum was reached), or "no_speech_timeout" (nobody spoke for 10 seconds; the WAV is still returned, with speech_detected: false, so silence is a reported outcome rather than an error). Detection runs per ~100ms audio buffer, so the effective hangover rounds up to the next buffer, and the recording keeps everything from the start of the call through the stop decision: nothing is gated or clipped at speech boundaries, and the audio itself is byte-identical to a fixed-duration capture of the same sounds.
voice_query
Full voice pipeline: capture audio, transcribe it on this machine with whisper.cpp, send the transcription to the local Ollama daemon, and return the transcription and the response. The audio stays on this machine. Recording stops automatically when the speaker stops talking; pass stop_on_silence: false for a fixed-length recording.
Parameters:
Example response:
Result outcomes. voice_query reports five distinct outcomes. The structured fields are the contract (isError, speech_detected, transcription); any message is a human-readable hint whose wording is not part of the contract, so a caller branches on the fields, never on the prose. The rule is simple: if the pipeline ran, the result is a success (even when it found no words); if a dependency broke, the result is an error.
A caller distinguishes "the user was silent" from "the user spoke but produced no words" by speech_detected (false vs true), both carrying transcription: null. Non-speech audio never reaches the language model: whisper's non-speech markers ([BLANK_AUDIO], [MUSIC], (silence), and similar) are treated as no usable words rather than sent on as a query.
No speech (speech_detected: false):
Speech, but no transcribable words (speech_detected: true, transcription: null):
Transcription and dependency failures return isError: true with the real cause (a missing model, a whisper load failure, Ollama not running, a timeout, or an empty model response), so a caller debugging can tell whether the failure was in capture, transcription, or the language model.
How It Works
mcp-listen uses decibri for cross-platform microphone capture. No ffmpeg, no SoX, no system audio tools required. Pre-built native binaries with zero setup.
Audio is captured as 16-bit PCM at 16kHz mono, the standard format for speech-to-text engines.
Silence-stopping uses the Silero voice activity detection model that ships inside decibri, running on-device through the bundled ONNX Runtime. Nothing extra is downloaded and no audio leaves the machine. The stop decision is measured in captured audio, not wall-clock time, and the VAD only decides when to stop: it never gates or alters the recorded samples.
The voice_query tool captures audio and transcribes it on this machine with whisper.cpp, sends the transcription to the local Ollama daemon, and returns the transcription and the response to the calling client. The audio stays on this machine.
Whisper Model Setup
The voice_query tool requires a Whisper GGML model file. Download one:
Linux / macOS:
Windows (PowerShell):
The model is ~150MB and downloads once. You can also set the WHISPER_MODEL_PATH environment variable to a custom directory.
Ollama Setup
- Install Ollama from https://ollama.com
- Pull a model:
ollama pull llama3.2 - Ensure Ollama is running:
ollama serve
Known Limitations
- A loud transient can register as speech. Silence-stopping decides "speech has started" from the VAD score, so a door slam or a cough can start the countdown and end the recording after
silence_msof quiet, yielding a short capture of mostly silence. The outcome is visible, not silent: the result reports the actual duration, andvoice_queryreports an empty transcription rather than inventing one. A minimum-speech-duration guard is a candidate refinement. voice_queryrequires Ollama running. If Ollama isn't running, the tool returns a clear error message.- Whisper model must be downloaded before first use.
voice_querydoes not download the model itself; the first call requires a pre-downloaded model (~150MB). See Whisper Model Setup. - No streaming. MCP's request/response pattern means the entire recording is captured, then transcribed, then sent to the LLM. No real-time partial results.
- Temp files.
capture_audiowrites WAV files to the system temp directory and returns the path, so the file has to outlive the call for the caller to read it. Recordings older than 24 hours are removed the next time the server starts; recordings made since the last restart persist until then.voice_querydeletes its recording as soon as the query completes.
Troubleshooting
Windows: "Error opening microphone" Windows may block microphone access by default. Go to Settings > Privacy & security > Microphone and ensure microphone access is enabled for desktop apps.
Ollama: "Ollama is not running"
Some Ollama installations start as a background service automatically. If you see this error, run ollama serve manually or check that the Ollama service is running.
Whisper: "model not found" The whisper model file must be downloaded before first use. See Whisper Model Setup for instructions.
Whisper: "installed but failed to load"
The @kutalia/whisper-node-addon package is present but a native library it depends on is missing or incompatible on your system. The error includes the underlying loader message naming the library. Reinstalling the package will not help; resolve the named library instead.
License
Apache-2.0. See LICENSE for details.
Copyright 2026 Decibri
來源:README.md,提交 77a0f4b
工具
0版本歷史
1- v0.1.1最新Sep 16, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分
