Connect Cursor to Speech is Cheap
This guide walks you through connecting Cursor to the Speech is Cheap MCP server, so you can transcribe audio and video recordings from public URLs and from files on your computer. The steps use the Cursor desktop app.
What You Need
Before starting, ensure you have:
- An eligible Cursor account: We tested these steps on the Plus plan. See Cursor's MCP documentation for background on how Cursor handles MCP servers.
- A Speech is Cheap account with an active plan: Pick a plan on the Pricing page if you do not have an account. Your initial API key arrives by email.
- A Speech is Cheap API key: Keys start with
sk_. Create a dedicated API key in the Dashboard named "Cursor" so you can revoke it on its own. The dashboard displays keys only once. See the Dashboard guide for details.
Setup Steps
Follow these steps to add the Speech is Cheap MCP server in Cursor:
-
Cursor opens in its Agents window. In the left sidebar, click Customize, and then click the MCPs tab.
-
Click New MCP Server. A menu offers User and, under Workspaces, the open projects. Choose User so the server is available in every project. Cursor opens
~/.cursor/mcp.json. -
Add this entry and save the file. If the file already lists other servers, add the
speech-is-cheapentry inside the existingmcpServersobject:{
"mcpServers": {
"speech-is-cheap": {
"url": "https://mcp.speechischeap.com/mcp"
}
}
} -
Back on the MCPs tab, speech-is-cheap appears under Needs Attention with "Needs authentication" and an Authenticate link. Click Authenticate. Cursor shows "Waiting for callback…" and opens a Speech is Cheap page in your browser.
-
The page is titled Connect Cursor to Speech is Cheap. Because Cursor registers itself, the page displays: "This app registered itself, so its name may not be real. Access will be sent to www.cursor.com. Continue only if you started connecting from an app at that address." Continue if you just clicked Authenticate in Cursor. Enter your API key in the field labeled Speech is Cheap API key, and click Connect.
-
The browser shows "Authorization complete!" and "You can close this tab and return to Cursor." Cursor finishes the sign-in through an address on your own computer (localhost), so complete the sign-in in a browser on the same computer that runs Cursor.
-
On the MCPs tab, speech-is-cheap moves to Connected with "5 tools enabled".
The connection stays active when you restart Cursor.
Alternative: Add with an Install Link
As an alternative to steps 1 through 3, click Add Speech is Cheap to Cursor.
This link opens Cursor's Install MCP server? dialog with Name set to speech-is-cheap, Type set to Remote HTTPS, and Server URL set to https://mcp.speechischeap.com/mcp. Leave HTTP headers, Client ID, and Client Secret empty, click Install, and then continue from step 4 above.
Test the Connection
Start a new conversation in Cursor and test the integration with a sample recording:
Please transcribe this audio file using Speech is Cheap: https://cdn.speechischeap.com/podcast-sic-api-01.m4a
Cursor calls the Speech is Cheap MCP server to transcribe the audio and prints the resulting text. In our test with Composer 2.5, this 20-minute audio sample returned the full transcript in a single transcribe call.
Composer turned on speaker labels without being asked. Because speaker labels are a paid add-on, specify the options you want in your prompt, such as "without speaker labels" or "with word-level timestamps".
In our test, Cursor answered follow-up questions from the transcript already in the chat, with timestamps, without new tool calls. Long transcripts arrive in pages, and Cursor fetched each page with get_transcript: the 20-minute sample in JSON format arrived in two pages. Word-level timestamps in JSON also worked, and the timings matched the Jobs API.
Approve Jobs Before They Run
Cursor decides whether to ask before running a tool based on its Run Mode setting, at Settings (the gear icon next to your name in the bottom left) > Agents > Execution and Approvals > Run Mode. The options are Allowlist, Auto-Review (the default), and Run Everything.
In our test with the default Auto-Review, Cursor ran transcribe without asking, so the job started with no approval prompt.
With Allowlist, Cursor stopped before running transcribe, displayed the tool's arguments, and offered three choices: Skip, Always Run, and Run. Selecting Skip started no job.
If you want to approve each transcription before it starts, set Run Mode to Allowlist. Only completed jobs bill against your account plan; see Billing for details.
Transcribe Local Files
Cursor's agent can run terminal commands on your computer, which allows it to transcribe local audio and video files. To transcribe a local file, Cursor calls prepare_upload, runs the returned upload command in the terminal, and retrieves the transcript using get_transcript.
The upload command reads your API key from the SIC_API_KEY environment variable. Signing in through Cursor does not set this variable.
Cursor reads environment variables only when it starts. To set up local file transcription:
-
Add your API key to your shell profile (for example,
~/.zshrcor~/.bashrc):export SIC_API_KEY=sk_...Keep your API key out of the chat and out of project files, such as a project's
.cursor/mcp.json, which may be committed to source control. -
Quit Cursor completely and reopen it. In our test, adding the variable while Cursor was running had no effect until Cursor restarted. After the restart, the upload worked.
Once configured, test transcribing a local file in a Cursor conversation:
Please transcribe /path/to/recording.mp3 using Speech is Cheap.
Troubleshooting
If you encounter issues during setup or while transcribing, check these common error messages:
This page expired. Enter your API key again.(on the sign-in page) The sign-in page expires after 10 minutes. Enter your API key again and click Connect.Speech is Cheap rejected that API key.(on the sign-in page) orSpeech is Cheap rejected the API key.(in a conversation) The API key is invalid or has been revoked. Generate a new key in the Dashboard. Then on the MCPs tab, click speech-is-cheap, click Logout, and click Authenticate again with the new key.That API key has no active plan…(on the sign-in page) orThis API key has no active plan…(in a conversation) Your API key is recognized, but the account lacks an active subscription or billing method. Open the Dashboard and update your plan under the Billing section.- Model unavailable on your plan
If Cursor says the model is unavailable on your plan, pick one of the included models it lists. On the Plus plan, the default Auto model shows
Model unavailable on Pluswith a Switch to Composer button. Invalid authorization header. Format: "Authorization: Bearer <key>"(when transcribing a local file) TheSIC_API_KEYenvironment variable is not set where Cursor runs the upload command. Addexport SIC_API_KEY=sk_...to your shell profile, quit Cursor completely, and reopen it.- "Needs authentication" (on the MCPs tab) The connection ended, for example after you clicked Logout or after 30 days without use. Click Authenticate to sign in again.
- URL download errors When transcribing from a URL, the audio or video file must reside at a publicly accessible URL that downloads directly without requiring a login, session cookies, or interactive screens. See Input Requirements for supported media formats and URL rules.
Try again shortlymessages These messages indicate temporary service or connection interruptions. Wait a few moments and resubmit your prompt.- Failed jobs If a transcription job fails, you are not charged. Only completed jobs bill against your account.
Disconnecting
To disconnect Speech is Cheap from Cursor:
- To sign out, go to the MCPs tab and click speech-is-cheap. In the Configure speech-is-cheap dialog, find Environments > Local, and click Logout. The server then shows "Needs authentication". Click Authenticate whenever you want to sign in again.
- To remove the server completely, delete the
speech-is-cheapentry from~/.cursor/mcp.json. - Signing out or removing the server may not delete the API key the server stores for that connection. To cut off access everywhere at once, revoke the key in the Dashboard. Revocation can take a minute or more to apply across all systems.