FunASR
by modelscope
FunASR's MCP server turns a local audio file into text with one transcribe_audio tool, no cloud API key, five languages, optional timestamps.
Install & run
pip install funasr && python examples/mcp_server/funasr_mcp.py
About
The MCP server example bundled with FunASR exposes a single tool, transcribe_audio, which takes a local audio file path (and an optional language hint) and returns a transcript, using SenseVoiceSmall by default. It auto-detects or accepts an explicit language among Mandarin, Cantonese, English, Japanese, and Korean, runs voice activity detection to segment longer recordings first, and can return per-segment timestamps when the underlying model supports them.
Everything runs locally against whatever FunASR model is configured (CPU, CUDA, or MPS), no API key, no cloud call. This MCP example is a thin wrapper around the much larger FunASR toolkit, which also covers streaming ASR, punctuation, and speaker diarization pipelines beyond what the single MCP tool surfaces.
Key features
- transcribe_audio converts a local audio file to text with one call, no cloud dependency
- Supports Mandarin, Cantonese, English, Japanese, and Korean, with auto or explicit language selection
- Voice activity detection segments long recordings before transcription
- Optional per-segment timestamps when the underlying model provides them
- Configurable to run on CPU, CUDA, or MPS with no API key required
- Backed by the broader FunASR toolkit, which also supports streaming ASR and speaker diarization outside this MCP example
Use cases
- Transcribing local meeting or interview recordings without sending audio to a cloud API
- Building a multilingual transcription step into an agent workflow across five supported languages
- Getting timestamped segments for captioning or indexing longer audio files
- Running speech-to-text fully offline on a machine with no internet access
Available tools
transcribe_audio
Transcribes a local audio file to text, with optional language hint and per-segment timestamps.
Model backend
Defaults to SenseVoiceSmall for the bundled MCP example, but is swappable for other FunASR models (e.g. Paraformer, Fun-ASR-Nano) since the server is a thin wrapper over the broader toolkit.
Frequently asked questions
Does it need an API key or internet access?
No. It runs entirely locally against a FunASR model like SenseVoiceSmall, with no external API calls.
What happens with long audio files?
The server runs voice activity detection to segment the recording before transcribing it, rather than processing it as one block.