VoiceLab MCP Server
OfficialClick on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@VoiceLab MCP Servergenerate Uzbek speech for: "Salom, dunyo!""
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
VoiceLab MCP Server
Official Model Context Protocol (MCP) server for VoiceLab — enabling AI agents (Cursor, ChatGPT, Grok, Muse, etc.) to use VoiceLab's speech AI capabilities.
Features
LLM Completions: Chat with Aisha models, manage requests
Text-to-Speech: Generate natural speech in Uzbek, Russian, and English
Speech-to-Text: Transcribe audio with timing and speaker labels
Voice Isolation: Remove background noise with optional speech restoration
Voice Management: List and discover available voices
Realtime Support: Create WebSocket tickets for streaming TTS/STT
Related MCP server: voice-mcp-server
Installation
Prerequisites
Node.js 20.0.0 or later
VoiceLab API key (get one at voicelab.uz)
Install from npm
npm install -g @voicelab/mcpOr build from source
git clone https://github.com/voicelab/voicelab-mcp.git
cd voicelab-mcp
npm install
npm run buildConfiguration
Environment Variables
export VOICELAB_API_KEY='vlk_your_api_key_here'
export VOICELAB_BASE_URL='https://api.voicelab.uz' # Optional, uses default if not setStore your API key securely. Never commit it to version control.
Cursor Configuration
Add to your Cursor settings (~/.cursor/mcp.json or workspace .cursor/mcp.json):
{
"mcpServers": {
"voicelab": {
"command": "npx",
"args": ["@voicelab/mcp"],
"env": {
"VOICELAB_API_KEY": "${VOICELAB_API_KEY}"
}
}
}
}Or if installed globally:
{
"mcpServers": {
"voicelab": {
"command": "voicelab-mcp",
"env": {
"VOICELAB_API_KEY": "vlk_your_api_key_here"
}
}
}
}Remote Usage (ChatGPT, Grok, Muse)
Once deployed to Cloudflare Workers, agents can connect to the hosted endpoint:
ChatGPT / OpenAI Plugins
Add MCP endpoint in ChatGPT settings:
https://mcp.voicelab.uz/mcpGrok
grok mcp add --transport http voicelab https://mcp.voicelab.uz/mcpOr use custom connector in grok.com/connectors.
Muse
Submit connector at muse.ai/platform → "Existing MCP" with:
Endpoint:
https://mcp.voicelab.uz/mcpAuth: Bearer token (user provides their API key)
See packaging/ folders for detailed catalog submission guides.
Usage
Start the Server
stdio mode (for local Cursor):
npm start
# or
voicelab-mcpHTTP mode (for remote hosting):
npm run start:httpAvailable Tools
LLM
list_models— List available LLM models with pricingchat_completions— Create chat completion (auto-generates idempotency key)get_llm_request— Get request status and token usage
Text-to-Speech
list_tts_languages— List supported languages and modelslist_voices— List available voices (filter by language)text_to_speech— Generate speech (returns base64 WAV)list_tts_generations— List generation historyget_tts_generation— Get generation details with audio URLdelete_tts_generation— Delete a generation (destructive)
Speech-to-Text
speech_to_text— Transcribe audio (accepts base64, returns job ID)get_transcription— Get transcription status and results (poll until complete)list_transcriptions— List transcription historyupdate_transcription— Update transcription titledelete_transcription— Delete transcription (destructive)export_transcription— Export as TXT, JSON, SRT, or VTT (returns base64)
Voice Isolation
isolate_voice— Remove background noise (returns job ID for polling)get_isolation— Get job status and audio URLs (poll until complete)list_isolations— List isolation historycreate_isolation_export— Request export in specific formatget_isolation_export— Get export status and download URLhide_isolation— Hide job from history (does not delete audio)
Realtime
create_realtime_ticket— Create WebSocket ticket for streaming TTS or STT
Example Agent Prompts
Generate speech:
Use VoiceLab to generate Uzbek speech for: "Salom, dunyo!"Transcribe audio:
Transcribe this meeting recording with speaker labels.
[Attach audio file]Clean audio:
Remove background noise from this call recording using VoiceLab voice isolation.
[Attach audio file]API Reference
Full API documentation: https://docs.voicelab.uz
Idempotency
STT, TTS, and Voice Isolator tools auto-generate UUIDs for idempotency when not provided. Retries with the same key and body return the original result without reprocessing or charging again.
Binary Audio Handling
Input: Audio passed as
audio_base64(base64-encoded file bytes)Output: Audio returned as
audio_base64(WAV/export format) or via signed URLs in job responses
Polling
STT transcriptions and Voice Isolator jobs are asynchronous:
Call
speech_to_textorisolate_voiceto submitPoll
get_transcriptionorget_isolationuntilstatus: "completed"Access results from the completed response
Respect Retry-After headers when present.
Development
Build
npm run buildTest
npm testProject Structure
src/
├── index.ts # MCP server and tool registration
├── client.ts # HTTP client and error handling
├── llm.ts # LLM module
├── tts.ts # Text-to-Speech module
├── stt.ts # Speech-to-Text module
├── voices.ts # Voices module
├── isolator.ts # Voice Isolator module
└── realtime.ts # Realtime ticket moduleDeployment
Cloudflare Workers
Deploy the MCP server to Cloudflare Workers for remote HTTP access at https://mcp.voicelab.uz.
Prerequisites
Cloudflare account (account ID:
ac52eda10a0df089ff1d6052087b5367)wrangler CLI:
npm install -g wranglerVoiceLab API key
Quick Deploy
# 1. Build the worker
npm run build:worker
# 2. Set your API key secret
wrangler secret put VOICELAB_API_KEY
# Paste your vlk_... key when prompted
# 3. Deploy to Workers
npm run deploy
# Your MCP endpoint will be at:
# https://voicelab-mcp.your-subdomain.workers.dev/mcpCustom Domain Setup
Deploy to Workers (initial deploy uses workers.dev subdomain)
npm run deployAdd Custom Domain in Cloudflare Dashboard:
Navigate to Workers & Pages
Select
voicelab-mcpGo to Settings → Triggers
Add Custom Domain:
mcp.voicelab.uz
Configure DNS for voicelab.uz zone:
Add
CNAMErecord:mcp→voicelab-mcp.your-subdomain.workers.devOr use Cloudflare's automatic setup
Update wrangler.toml (optional, after custom domain is configured):
routes = [{ pattern = "mcp.voicelab.uz/*", custom_domain = true }]Environment Variables
Set secrets via wrangler:
# Required
wrangler secret put VOICELAB_API_KEY
# Optional
wrangler secret put VOICELAB_BASE_URLOr configure in Cloudflare Dashboard under Settings → Variables.
Staging Environment
# Deploy to staging
npm run deploy:staging
# Set staging secrets
wrangler secret put VOICELAB_API_KEY --env stagingHealth Check
# Test deployment
curl https://mcp.voicelab.uz/
# Should return: {"name":"VoiceLab MCP Server","version":"1.0.0",...}
# Test MCP endpoint (requires MCP client)
curl -X POST https://mcp.voicelab.uz/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"tools/list","id":1}'Local Development
Test the worker locally before deploying:
# Start local worker with hot reload
npm run dev
# Server runs at http://localhost:8787
# Set VOICELAB_API_KEY in .dev.vars fileCreate .dev.vars for local development:
VOICELAB_API_KEY=vlk_your_test_key
VOICELAB_BASE_URL=https://api.voicelab.uzMonitoring
View logs:
wrangler tailDashboard: https://dash.cloudflare.com → Workers & Pages → voicelab-mcp
Metrics: requests/sec, errors, CPU time
Docker (Optional)
Create a Dockerfile:
FROM node:20-slim
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY dist ./dist
ENV VOICELAB_API_KEY=""
CMD ["node", "dist/index.js"]Build and run:
docker build -t voicelab-mcp .
docker run -e VOICELAB_API_KEY=vlk_your_key voicelab-mcpHosting for Remote MCP
The server supports both stdio (local Cursor) and HTTP (remote agents) transports:
Stdio (default): For local Cursor usage
npm startHTTP (Cloudflare Workers): For remote access
npm run deploy
# Endpoint: https://mcp.voicelab.uz/mcpUse the Workers deployment for ChatGPT, Grok, Muse, and other agents that require remote MCP endpoints.
Security
Never expose your API key in client code, URLs, or version control
Store keys in environment variables or a secret manager
Use restricted API keys with minimum required permissions
Set
allowed_ipsandexpires_atwhen creating keysSigned audio URLs expire after ~10 minutes; refresh as needed
Realtime tickets expire after ~2 minutes; mint fresh tickets per connection
Troubleshooting
"VOICELAB_API_KEY environment variable is required"
Set the environment variable before starting:
export VOICELAB_API_KEY='vlk_...'
npm start"401 invalid_api_key"
Check that your key is correct and not expired
Verify the key is enabled in the VoiceLab dashboard
Ensure the key has required permissions (
llm:access,tts:write,stt:write, etc.)
"402 insufficient_credits"
Add credits to your VoiceLab account at voicelab.uz.
"409 idempotency_key_reused"
You're retrying with a different request body but the same idempotency key. Either:
Use a new key for the new request
Reuse the original body to retrieve the cached result
Contributing
Contributions are welcome! Please:
Fork the repository
Create a feature branch
Add tests for new functionality
Ensure
npm testandnpm run buildpassSubmit a pull request
License
MIT License - see LICENSE file for details.
Links
What's Not Included
Per the VoiceLab developer API contract, this MCP server does not expose:
Account JWT analytics and API-key management UI routes
Meeting AI / voice-agent dashboard data
Browser realtime streams (use
create_realtime_ticketfor WebSocket setup)
These features are first-party dashboard surfaces, not part of the server-to-server API-key contract.
This server cannot be deployed
Maintenance
Related MCP Connectors
Speech, transcription, voice agents, Trace, Recap, dubbing and narration with browser OAuth.
Transcribe audio & video to text for AI agents: 100+ languages, speaker labels, webhooks.
- ChamadeOAuthio.chamade
Voice and chat for AI agents — Discord, Teams, Meet, Slack, Zoom, Telegram, WhatsApp, NC Talk, SIP
Audio for your agent: transcribe, speak, translate, summarise, plus sound effects and music.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables seamless integration with ElevenLabs Conversational AI to manage agents, tools, and knowledge base sources. It supports RAG indexing, webhook integration, and document management for building advanced voice-enabled AI agents.MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to speak and listen in real-time with interruption handling, using local ML models and hot-swappable adapters.32 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables voice-first interactions with AI agents and MCP tools, supporting speech input/output, STT/TTS, and a provider-independent agent core.1MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to initiate and control outbound telephone calls and answer inbound calls through Telnyx and LiveKit, with realtime voice conversations powered by Gemini Live or OpenAI Realtime.MIT