Skip to main content
← Back to Articles
mcpelevenlabscursoridetext-to-speechvoice-aisetup2026

ElevenLabs MCP Server Cursor IDE Setup (2026): Hosted OAuth vs. Local uvx Install

Connect ElevenLabs' official MCP server to Cursor IDE two ways: the new hosted server at api.elevenlabs.io with OAuth and nothing to install, or a local uvx-run process with an API key in mcp.json — plus the text-to-speech, voice cloning, and transcription tools each one exposes.

By Web MCP GuideSeptember 1, 202612 min read

How do you connect ElevenLabs to Cursor? Since August 2026, the fastest route is the hosted server: add a url entry pointing at https://api.elevenlabs.io/v1/mcp in Cursor's mcp.json, restart, and approve an OAuth login — no package to install, no API key to copy anywhere. The older, still-supported route runs the server locally with uv, passing your API key as an environment variable in the config block instead. Either way, Cursor gets tools for text-to-speech, voice cloning, speech-to-text, audio isolation, and ElevenLabs' newer conversational-agent features, callable from a normal chat prompt.

This is a different category of MCP server from most of what's covered on this site. A GitHub or Postgres server gives an agent read/write access to data; ElevenLabs' server gives it the ability to generate and manipulate audio — a real file gets written to disk (or streamed back as a resource) as a side effect of a chat message. That changes what "setup" needs to cover: not just auth, but where the output lands and how large it can get.

What You Get, in Plain Terms

PublisherElevenLabs (official server, maintained in the elevenlabs/elevenlabs-mcp GitHub repo)
Hosted optionhttps://api.elevenlabs.io/v1/mcp, OAuth, added August 2026
Local optionuvx elevenlabs-mcp, API key via ELEVENLABS_API_KEY env var
Core toolsText-to-speech, voice cloning, speech-to-text, audio/voice isolation, speech-to-speech, sound effects, soundscapes
Free tier10,000 credits/month on an ElevenLabs account
Output location~/Desktop by default (local install), configurable via env var

Why Use This from Cursor at All

The obvious use case is narration or demo audio for something you're already building in the editor — generate a voiceover for a product walkthrough, read a changelog aloud, or produce placeholder dialogue for a game or app without leaving the chat panel to go paste text into a separate web app. The less obvious one is testing: if you're building against the ElevenLabs API directly, having the MCP server available means you can ask the agent to "generate a 10-second sample in this voice and tell me the file size" as a sanity check, without writing a throwaway script first.

It's also useful paired with a transcription-heavy workflow. If a project involves turning interview recordings or support calls into text, the speech-to-text tool means that step can happen inside the same chat session where you're then asking the agent to summarize or extract action items from what came back — one continuous flow instead of switching to a separate transcription tool and pasting the result in.

Step 1: Get an API Key (Needed for the Local Route, Optional for Hosted)

Sign in to ElevenLabs and go to Settings → API Keys at elevenlabs.io/app/settings/api-keys. Free accounts get 10,000 credits per month, enough for a meaningful amount of testing before you need to think about a paid tier. You don't strictly need this for the hosted route below — that one authenticates with OAuth against your logged-in account instead — but it's worth generating anyway if you plan to ever run the server locally or use the API directly.

Step 2 (Option A): Hosted Server with OAuth — the 2026 Default

This is the simpler of the two paths and the one ElevenLabs now recommends. Open (or create) ~/.cursor/mcp.json and add:

{
  "mcpServers": {
    "ElevenLabs": {
      "url": "https://api.elevenlabs.io/v1/mcp"
    }
  }
}

Restart Cursor. On the first tool call that touches ElevenLabs, Cursor opens a browser window for an OAuth authorization screen tied to your ElevenLabs account. Approve it, and the connection is live — no API key sits in a plaintext config file, and revoking access later is a matter of pulling the connected-app grant from your ElevenLabs account settings rather than rotating a key everywhere it was pasted.

This is the same shape used elsewhere on this site for other vendor-hosted remote servers — see the Webflow MCP server guide for a side-by-side comparison of a url-based OAuth entry versus a token-based local one, since ElevenLabs now offers the same choice.

Step 2 (Option B): Local Server via uv

Prefer a locally-run process, or need to pin a specific server version? Install uv first if you don't have it:

curl -LsSf https://astral.sh/uv/install.sh | sh

Then add this block instead:

{
  "mcpServers": {
    "ElevenLabs": {
      "command": "uvx",
      "args": ["elevenlabs-mcp"],
      "env": {
        "ELEVENLABS_API_KEY": "<insert-your-api-key-here>"
      }
    }
  }
}

uvx downloads and runs the elevenlabs-mcp package in an isolated environment on demand — there's no separate pip install step needed for this exact block, since uvx handles that itself. Restart Cursor after saving.

ElevenLabs' own documentation also describes a pip install elevenlabs-mcp route, followed by running python -m elevenlabs_mcp --api-key={{your-key}} --print to generate a ready-to-paste config block. That's functionally equivalent to the uvx block above — use whichever fits how you already manage Python packages. If you've set up other Python-based MCP servers on this site via uvx (Chroma's official server works the same way), this will feel familiar.

Step 3: Optional Environment Variables (Local Route Only)

These only apply if you're running the server locally, not through the hosted OAuth option:

  • ELEVENLABS_MCP_BASE_PATH — where generated audio files get written. Defaults to ~/Desktop, which is a reasonable default for casual use but worth changing to a project-specific folder if you're generating a lot of files and don't want them cluttering your desktop.

  • ELEVENLABS_MCP_OUTPUT_MODE — controls how output comes back: files (default, writes to disk and returns a path), resources (returns the audio as an MCP resource without writing a file), or both.

  • ELEVENLABS_API_RESIDENCY — data residency region for enterprise accounts, defaults to us. Leave this alone unless your organization has a specific residency requirement from ElevenLabs.
  • Add any of these inside the same env block as ELEVENLABS_API_KEY:

    {
      "mcpServers": {
        "ElevenLabs": {
          "command": "uvx",
          "args": ["elevenlabs-mcp"],
          "env": {
            "ELEVENLABS_API_KEY": "<insert-your-api-key-here>",
            "ELEVENLABS_MCP_BASE_PATH": "/Users/you/projects/my-app/audio",
            "ELEVENLABS_MCP_OUTPUT_MODE": "files"
          }
        }
      }
    }
    

    Step 4: Verify the Connection

    Open Cursor's MCP settings panel and confirm ElevenLabs shows a green/connected status — hosted and local installs both surface here the same way. Then try a low-stakes prompt in chat:

    Generate a short spoken sample saying "MCP server connected" and tell me where the file was saved.
    

    If it comes back with a file path (local route) or a playable resource (either route), the connection and credentials are both working. If nothing happens or you get an authorization error, see Troubleshooting below.

    What the ElevenLabs MCP Server Can Do


  • Text-to-speech — generate spoken audio from text in any of ElevenLabs' voices, including custom cloned ones

  • Voice cloning — create a new voice from a sample recording

  • Speech-to-text — transcribe an audio file to text

  • Voice/audio isolation — strip background noise from a recording, isolating the primary voice

  • Speech-to-speech — convert a recording from one voice to another while keeping the original delivery and timing

  • Sound effects and soundscapes — generate short sound effects or ambient audio beds from a text description

  • Conversational agents — newer tooling for setting up and interacting with ElevenLabs' voice-agent product, not just one-shot generation
  • Not every tool is available in every account tier — voice cloning quality and conversational-agent features in particular scale with paid plans, so a free-tier account may see some tool calls fail or degrade gracefully rather than produce studio-quality output.

    Practical Prompts Once Connected


  • "Generate a 15-second voiceover of this changelog summary in a calm, professional voice"

  • "Transcribe this customer call recording and give me a bulleted list of action items"

  • "Clean up the background noise in this interview recording before I send it to the transcription tool"

  • "Create three short sound-effect variations of a notification chime"

  • "Clone a voice from this sample and generate a test line to compare against the original"
  • Windows Note

    If you previously set this up for Claude Desktop on Windows, ElevenLabs' documentation calls out that Developer Mode needs to be enabled in Claude Desktop for local MCP servers to run. Cursor doesn't have an equivalent toggle, but if a local (non-hosted) uvx-based install behaves oddly on Windows specifically, that Windows/Claude-Desktop quirk is worth knowing about even though it doesn't map directly onto Cursor's settings.

    Troubleshooting

    OAuth browser window never opens (hosted route). Confirm Cursor's version supports url-based remote MCP servers — this is a newer capability, and an older Cursor build may silently fail to trigger the authorization flow. Update Cursor and retry.

    "uvx: command not found" (local route). uv isn't installed or isn't on the PATH Cursor's process sees, which is not always identical to your terminal's PATH. Reinstall uv and fully restart Cursor, not just reload the window.

    Tool calls succeed but no audio file appears. Check ELEVENLABS_MCP_OUTPUT_MODE — if it's set to resources, nothing gets written to disk by design; the audio comes back as an MCP resource instead. Switch to files or both if you specifically need a file on disk.

    "Insufficient credits" or similar quota error. Free-tier accounts get 10,000 credits/month, and generation cost scales with output length and voice complexity. Check usage in the ElevenLabs dashboard before assuming the config is broken.

    Works locally but the hosted OAuth route won't authorize. Confirm you're logged into the correct ElevenLabs account in your default browser — the OAuth flow authorizes against whichever account session the browser already has active, which can be the wrong one if you use multiple ElevenLabs accounts for different projects.

    When Not to Use This

    If you need frame-accurate audio editing, multi-track mixing, or precise control over cloning parameters beyond what a chat prompt can express, the MCP server's tool surface covers common generation and transcription tasks, not a full audio production workflow. For that, use ElevenLabs' own web app or API directly rather than routing every adjustment through a conversational agent.

    Frequently Asked Questions

    Q: Do I need an API key if I use the hosted OAuth server?
    A: No. The hosted route at https://api.elevenlabs.io/v1/mcp authenticates with OAuth against your logged-in ElevenLabs account. An API key is only needed for the local uvx-run install.

    Q: Where do generated audio files get saved?
    A: By default, ~/Desktop for the local install. Set ELEVENLABS_MCP_BASE_PATH to a different directory, or ELEVENLABS_MCP_OUTPUT_MODE to resources to skip writing files entirely and get the audio back as an MCP resource instead.

    Q: Can I use this on the free tier?
    A: Yes, free ElevenLabs accounts get 10,000 credits per month, which is enough to test most of the tools. Voice cloning quality and some conversational-agent features scale with paid plans.

    Q: What's the difference between the hosted server and the local uvx install?
    A: The hosted server at api.elevenlabs.io/v1/mcp needs no local installation and authenticates via OAuth, with nothing to store in your config file. The local install runs the elevenlabs-mcp Python package via uvx on your machine and needs an API key in the env block — useful if you want a pinned local version or don't want to depend on a hosted endpoint.

    Q: Does this work with Claude Desktop too, or only Cursor?
    A: Both, plus Windsurf and other MCP clients. The config shape is the same mcpServers block; only the file path differs (claude_desktop_config.json for Claude Desktop, mcp.json for Cursor).

    Related Guides


  • Cursor IDE MCP Setup: Complete Guide (2026)

  • Webflow MCP Server: Cursor IDE Setup (2026)

  • Hugging Face MCP Server: Cursor IDE Setup (2026)

  • Local vs Remote MCP Servers: Which Should You Choose?

  • How to Authenticate MCP Servers: OAuth and API Keys

  • Best MCP Servers for Developers (2026)
  • Official docs cited


  • Introducing the ElevenLabs MCP Server

  • elevenlabs/elevenlabs-mcp on GitHub

  • Related guides