The Svara MCP server lets AI assistants that speak the Model Context Protocol (Claude Desktop, Claude Code, Cursor, VS Code and others) use Svara directly. Your assistant can:
- Upload a recording (MP3, M4A/AAC, OGG/Opus, WAV or WebM, up to 4 MB) and get back an
audio_url. - Validate a send with a dry run, without delivering anything.
- Send a native LinkedIn voice note to someone you can already message on LinkedIn.
- Check delivery (
queued,sent,failed,expired) and your plan usage.
The server is open source: github.com/zenmode87/svara-mcp. It is published on npm as svara-mcp.
Prerequisites
- A Svara API key. Create one in your dashboard.
- The Svara Chrome extension installed.
- You are signed in to LinkedIn in that Chrome browser.
- Node.js 20 or newer (for
npx).
Setup
Every client runs the same command, npx -y svara-mcp, with your key in the SVARA_API_KEY environment variable.
Claude Desktop
Add to claude_desktop_config.json (Settings > Developer > Edit Config):
{
"mcpServers": {
"svara": {
"command": "npx",
"args": ["-y", "svara-mcp"],
"env": { "SVARA_API_KEY": "your_svara_api_key" }
}
}
}
Claude Code
claude mcp add svara --env SVARA_API_KEY=your_svara_api_key -- npx -y svara-mcp
Cursor
Add to ~/.cursor/mcp.json (or .cursor/mcp.json in a project):
{
"mcpServers": {
"svara": {
"command": "npx",
"args": ["-y", "svara-mcp"],
"env": { "SVARA_API_KEY": "your_svara_api_key" }
}
}
}
VS Code
Add to .vscode/mcp.json:
{
"inputs": [
{ "type": "promptString", "id": "svara-api-key", "description": "Svara API key", "password": true }
],
"servers": {
"svara": {
"type": "stdio",
"command": "npx",
"args": ["-y", "svara-mcp"],
"env": { "SVARA_API_KEY": "${input:svara-api-key}" }
}
}
}
Tools
| Tool | Inputs | What it does |
|---|---|---|
upload_audio | file_path | Uploads a local audio file and returns an audio_url. Sends nothing. |
send_linkedin_voice_note | recipient, audio_url or file_path, dry_run (default true) | Sends a voice note. recipient is a LinkedIn profile URL (preferred) or name. Give exactly one of audio_url or file_path (a file is uploaded first). Nothing is sent unless dry_run is false. |
get_send_status | id | Delivery status of a send. |
get_usage | none | Current plan usage and limits. |
Example prompt:
Upload ~/Desktop/intro.m4a and do a dry run of sending it to https://www.linkedin.com/in/example. If it validates, send it for real.
Safety
A real send reaches a real person. When dry_run is false, send_linkedin_voice_note sends a LinkedIn message from your own LinkedIn account, and it cannot be unsent.
dry_rundefaults totrue, which validates the request without sending anything.- The send tool is marked as destructive, so MCP clients that support tool annotations ask you to confirm before it runs. Keep that confirmation on.
- Only send to people you can already message on LinkedIn, and only messages you would send yourself.
Sends count against your plan like any other send. Plans and limits: pricing. When you hit a limit, the tool error includes an upgrade link.
Links
- Source and issues: github.com/zenmode87/svara-mcp
- npm package: npmjs.com/package/svara-mcp
- Quickstart — the same flow over the REST API
- LinkedIn Voice Notes — the LinkedIn guide