Transcribe local files and URLs with SpeechWeave's OpenAI-compatible Speech-to-Text API.
Runs on your machine from its package; the steps are below.
At most: only reads or looks up information.
Odel charges nothing per call. The publisher may charge for its own service.
Runs locally over stdio
This server isn't hosted — your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).
Run
npx -y @speechweave/mcp
MCP client config
{
"mcpServers": {
"speechweave": {
"command": "npx",
"args": [
"-y",
"@speechweave/mcp"
]
}
}
}Official Model Context Protocol server for SpeechWeave. Use to transcribe local files and URLs from Cursor, Claude Desktop, Claude Code, Windsurf, and other MCP clients.
SpeechWeave handles short clips and long-form audio without client-side chunking. This MCP server exposes both wait-first tools (get a transcript in one turn) and async create + poll tools (start a job, then check status).
Docs: speechweave.com/docs/mcp · API reference
Requires Node.js 18+ and a SpeechWeave API key (sk_live_…).
export SPEECHWEAVE_API_KEY="sk_live_..."
npx -y @speechweave/mcp
Add to your MCP config (e.g. .cursor/mcp.json, claude_desktop_config.json):
{
"mcpServers": {
"speechweave": {
"command": "npx",
"args": ["-y", "@speechweave/mcp"],
"env": {
"SPEECHWEAVE_API_KEY": "sk_live_..."
}
}
}
}
| Tool | Mode | When to use |
|---|---|---|
transcribe_file | Wait-first | Absolute local path; wait until transcript is ready |
transcribe_url | Wait-first | Public HTTPS URL; wait until transcript is ready |
start_job_file | Async | Absolute local path; return job_id immediately |
start_job_url | Async | Public HTTPS URL; return job_id immediately |
get_job_status | Poll | Fetch status / transcript for a job id |
cancel_job | Control | Cancel a queued or processing job |
get_limits | Info | Upload size ceilings for your API key |
fetch_doc | Info | Public docs by slug (bundled pages + live OpenAPI) |
Never pass raw audio bytes over MCP. Use absolute file paths (local clients) or HTTPS URLs.
All transcription and job-start tools accept the following optional arguments:
model: Choose core (default) or max.service_mode: Choose standard (default) or deferred for the background queue. synchronous is accepted as an alias for standard.language: Optional ISO language code to force language detection.task: Choose transcribe (default) or translate to produce an English translation instead; language is ignored when translating.prompt: Optional custom vocabulary hint (proper nouns, acronyms, product names) for the first ~30s of audio.Formatted transcripts: transcribe_file, transcribe_url, and get_job_status also accept an optional response_format (text, srt, vtt, or verbose_json) to return the transcript in that shape instead of the default plain text.
Timeout behavior: Wait-first tools accept an optional timeout_ms. If the transcription exceeds the timeout, the tool gracefully returns a job_id and instructs the client to switch to get_job_status polling.
get_limits: Returns GET /v1/limits for the calling key, with MB equivalents. Use before uploading large local files.fetch_doc: Returns public documentation. Slug list shows the catalog. Bundled pages include quickstart, mcp, models, billing, and data_retention. Slug api fetches a live OpenAPI overview; api/<operation_slug> returns one endpoint (e.g. api/get_v1_limits).After adding the server and restarting your client, try asking your AI assistant:
"Use SpeechWeave to transcribe
/Users/me/recordings/standup.mp3and summarize action items."
The assistant will call transcribe_file with the absolute path and summarize the returned transcript.
"Start a SpeechWeave job for
https://cdn.example.com/three_hour_podcast.mp3, then check back until it completes."
The assistant will call start_job_url, then periodically call get_job_status until the status reaches completed.
"Translate
/Users/me/recordings/spanish_interview.mp3into English SRT subtitles using SpeechWeave."
The assistant will call transcribe_file with task: "translate" and response_format: "srt".