SpeechWeave

io.github.speechweavePublished by GitHub account speechweavev1.10.0Updated Oct 29, 2026

Transcribe local files and URLs with SpeechWeave's OpenAI-compatible Speech-to-Text API.

VerifiedSTDIODesktop onlyMedia & DesignAI & ML

Overview

AI-generated overview

SpeechWeave's official MCP server that lets an assistant transcribe or translate local audio/video files and public HTTPS media URLs into text, SRT or VTT.

What you can do
  • Transcribe or translate a local audio/video file by absolute path, returning the transcript in the same call
  • Transcribe or translate media from a public HTTPS URL, synchronously or as a background job
  • Start long-running jobs, poll their status, fetch formatted transcripts, and cancel queued or processing jobs
  • Save transcripts to a chosen file path in text, markdown, JSON, SRT or VTT instead of returning them inline
  • Check upload size ceilings for the API key and read bundled or live API documentation
When to use it
Useful when you want an assistant to turn meeting recordings, interviews, podcasts or other audio/video into transcripts, subtitles or English translations without leaving the chat client. It suits both short clips handled in one call and long recordings handled as polled jobs.
Requirements
Runs locally over stdio via npx, requiring Node.js 18 or newer. Needs a SpeechWeave API key supplied in the SPEECHWEAVE_API_KEY environment variable. Network access to the SpeechWeave API is required, and local file transcription needs absolute filesystem paths.
Before you install
The API key is a billable secret stored in the client config; keep it out of shared files. Transcription consumes paid credits, and billing errors such as spend caps or empty wallets require an account change rather than a retry. Local files and media URLs are sent to SpeechWeave's service, so consider its data retention terms. Saving transcripts with output_file can overwrite an existing file when overwrite is enabled.

Installation

In SourceWeft

  1. Open SpeechWeave in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

@speechweave/mcp

[npm version] [License: MIT]

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 sync tools (the transcript comes back in the same tool call) and async tools (start a job, then poll for status).

Docs: speechweave.com/docs/mcp · API reference

Install / run

Requires Node.js 18+ and a SpeechWeave API key (sk_live_…).

bash
export SPEECHWEAVE_API_KEY="sk_live_..."npx -y @speechweave/mcp

Cursor / Claude Desktop

Add to your MCP config (e.g. .cursor/mcp.json, claude_desktop_config.json):

json
{	"mcpServers": {		"speechweave": {			"command": "npx",			"args": ["-y", "@speechweave/mcp"],			"env": {				"SPEECHWEAVE_API_KEY": "sk_live_..."			}		}	}}

Claude Code

bash
claude mcp add speechweave --env SPEECHWEAVE_API_KEY=sk_live_... -- npx -y @speechweave/mcp

Tools

ToolDeliveryWhen to use
transcribe_filesyncAbsolute local path. Returns the transcript in this call
transcribe_urlsyncPublic HTTPS URL. Returns the transcript in this call
start_job_fileasyncAbsolute local path. Returns job_id immediately
start_job_urlasyncPublic HTTPS URL. Returns job_id immediately
get_job_statusasyncPoll status / transcript for a job id
cancel_jobn/aCancel a queued or processing job
get_limitsn/aUpload size ceilings for your API key
fetch_docn/aPublic docs by slug (bundled pages + live OpenAPI)

Delivery (sync or async) is separate from service_mode (standard or deferred). Either service mode works with either delivery.

Never pass raw audio bytes over MCP. Use absolute file paths (local clients) or HTTPS URLs.

Configuration & Arguments

All transcription and job-start tools accept the following optional arguments:

  • model: Choose core (default) or max.
  • service_mode: Choose standard (default) or deferred (lower cost, lower priority).
  • 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.

Saving to a file: transcribe_file, transcribe_url, and get_job_status accept output_file (an absolute path). The transcript is written there instead of being returned, so long transcripts stay out of the conversation. The result includes output_file and bytes_written. The path must end in .txt, .md, .json, .srt, or .vtt and cannot be inside a hidden folder. The parent folder must exist, and an existing file is only replaced when overwrite is true. With response_format: "verbose_json" the file holds the text plus segment timings as JSON.

Billing errors: a 402 comes back as a tool error with code and a hint. USER_SPEND_CAP_REACHED (raise your spend cap), PLATFORM_SPEND_CAP_REACHED (monthly account limit, request an increase), and INSUFFICIENT_BALANCE or WALLET_EMPTY (top up) all need a change on the account first, so the hint tells the assistant not to retry.

Timeout behavior: Sync 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.

Account limits and docs

  • 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, and api/<operation_slug> returns one endpoint (e.g. api/get_v1_limits).

Example Prompts

After adding the server and restarting your client, try asking your AI assistant:

Short clip (sync)

"Use SpeechWeave to transcribe /Users/me/recordings/standup.mp3 and summarize action items."

The assistant will call transcribe_file with the absolute path and summarize the returned transcript.

Long podcast (async)

"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 to subtitles (sync)

"Translate /Users/me/recordings/spanish_interview.mp3 into English SRT subtitles using SpeechWeave."

The assistant will call transcribe_file with task: "translate" and response_format: "srt".

Source: README.md at commit e8fe2d9

Tools

8

transcribe_file

Transcribe local file (sync)

Upload a local audio/video file and wait until transcription finishes. Prefer for short/medium clips when you need the transcript in this turn. Pass an absolute filesystem path (never raw binary). Set task='translate' to get an English translation instead of a same-language transcript. Pass output_file (absolute path) to save the transcript to disk instead of returning it, which keeps long transcripts out of context. On wait timeout, returns job_id, then call get_job_status. For long audio you plan to poll yourself, use start_job_file instead.

Parameterspathrequiredtaskmodelpromptlanguageoverwritetimeout_msoutput_fileservice_moderesponse_format

transcribe_url

Transcribe URL (sync)

Start transcription from a public HTTPS URL and wait until it finishes. Prefer for short/medium media when you need the transcript in this turn. Set task='translate' to get an English translation instead of a same-language transcript. Pass output_file (absolute path) to save the transcript to disk instead of returning it. On wait timeout, returns job_id, then call get_job_status. For long audio you plan to poll yourself, use start_job_url instead.

Parametersurlrequiredtaskmodelpromptlanguageoverwritetimeout_msoutput_fileservice_moderesponse_format

start_job_file

Start job from local file (async)

Upload a local audio/video file and return a job id immediately without waiting. Use for long recordings or when you will poll later with get_job_status. Pass an absolute filesystem path. Set task='translate' for an English translation instead of a same-language transcript.

Parameterspathrequiredtaskmodelpromptlanguageservice_mode

start_job_url

Start job from URL (async)

Create a transcription job from a public HTTPS URL and return a job id immediately. Use for long media. Poll with get_job_status until completed, failed, or cancelled. Set task='translate' for an English translation instead of a same-language transcript.

Parametersurlrequiredtaskmodelpromptlanguageservice_mode

get_job_status

Get job status

Fetch the current status of a transcription job (and transcript when completed). Poll until status is completed, failed, or cancelled. Pass response_format ('srt', 'vtt', or 'verbose_json') on a completed job to fetch it re-formatted. Pass output_file (absolute path) to save the transcript to disk instead of returning it.

Parametersjob_idrequiredoverwriteoutput_fileresponse_format

cancel_job

Cancel job

Cancel a queued or processing transcription job. Fails if the job is already terminal.

Parametersjob_idrequired

get_limits

Get account upload limits

Fetch upload size ceilings for the calling API key (GET /v1/limits). Returns max_input_bytes, standard_max_bytes, and proxy_max_bytes plus MB equivalents. Call before transcribe_file or start_job_file when file size is large.

Takes no parameters.

fetch_doc

Fetch SpeechWeave documentation

Return public SpeechWeave documentation for a slug. Use slug 'list' for the catalog. Bundled pages include quickstart, mcp, models, billing, and data_retention. Use slug 'api' for a live OpenAPI overview, or 'api/<operation_slug>' for one endpoint (e.g. api/get_v1_limits).

Parametersslugrequired

Version history

3
  1. v1.10.0LatestOct 21, 2026
  2. v1.9.3Sep 19, 2026
  3. v1.9.0Sep 16, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts