MCP Yandex Voice
Integrates with Yandex Cloud to generate text responses via Yandex GPT and convert them to speech using Yandex SpeechKit TTS, enabling voice output in chat applications. Also provides playback control tools for managing audio playback on macOS.
Click 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., "@MCP Yandex VoiceWhat is the capital of Russia?"
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.
MCP Yandex Voice — голосовые ответы в Cursor
MCP-сервер для Cursor: по сообщению из чата получает ответ от Yandex GPT (AI Studio) и озвучивает его через Yandex SpeechKit TTS. В чате можно вызывать инструмент и получать ответ текстом и аудио.
Что нужно
Доступ к Yandex Cloud AI Studio (Yandex GPT).
Включённый SpeechKit (TTS) в том же каталоге (folder).
API-ключ сервисного аккаунта с ролями в каталоге:
ai.languageModels.user(Yandex GPT)ai.speechkit-tts.user(SpeechKit TTS)
Related MCP server: Yandex AI Studio MCP Server
Настройка доступа к Yandex Cloud
Подробная инструкция: docs/YANDEX-CLOUD-SETUP.md
Включает:
Регистрацию и создание каталога
Включение AI Studio и SpeechKit
Создание сервисного аккаунта и добавление ролей в каталоге (
ai.languageModels.user,ai.speechkit-tts.user)Создание API-ключа (через консоль или YC CLI)
Проверку доступа через curl
Разбор частых ошибок
Установка
cd mcp-yandex-voice
npm install
npm run buildПеременные окружения
Скопируйте .env.example в .env и заполните:
Переменная | Обязательно | Описание |
| да | API-ключ сервисного аккаунта |
| да | ID каталога в Yandex Cloud |
| нет | Модель (по умолчанию |
| нет | Голос TTS (по умолчанию |
| нет | Язык (по умолчанию |
| нет | Формат аудио (по умолчанию |
| нет | Скорость речи: 0.1–3.0 (по умолчанию 1.0). 1.2–1.5 — быстрее |
| нет | Макс. токенов ответа GPT (по умолчанию 350). Меньше — быстрее ответ |
Подключение в Cursor
В корне репозитория уже есть конфиг .cursor/mcp.json. Подставьте в нём свои YANDEX_API_KEY и YANDEX_FOLDER_ID в блоке env для сервера yandex-voice, затем перезапустите Cursor.
Либо настройте вручную:
Откройте Cursor Settings → MCP (или конфиг MCP вручную).
Добавьте сервер, например в
~/.cursor/mcp.jsonили в настройках проекта:
{
"mcpServers": {
"yandex-voice": {
"command": "node",
"args": ["/ABSOLUTE/PATH/TO/leetcode/mcp-yandex-voice/dist/index.js"],
"env": {
"YANDEX_API_KEY": "ваш_api_ключ",
"YANDEX_FOLDER_ID": "ваш_folder_id"
}
}
}
}Замените ABSOLUTE/PATH/TO/leetcode на полный путь к репозиторию. После npm run build исполняемый файл — dist/index.js.
Вариант с tsx (без сборки):
{
"mcpServers": {
"yandex-voice": {
"command": "npx",
"args": ["tsx", "/ABSOLUTE/PATH/TO/leetcode/mcp-yandex-voice/src/index.ts"],
"env": {
"YANDEX_API_KEY": "ваш_api_ключ",
"YANDEX_FOLDER_ID": "ваш_folder_id"
}
}
}
}Перезапустите Cursor или перезагрузите MCP.
Инструмент speak_response
Название: Голосовой ответ (speak_response)
Вход:
message— вопрос пользователя; Yandex GPT генерирует ответ и озвучивает.textToSummarize— текст ответа ассистента; Yandex GPT кратко пересказывает (2–3 предложения) и озвучивает. Используй для озвучивания своих ответов.systemPrompt(опционально) — системный промпт (роль, стиль). ПриtextToSummarizeне используется.
Выход: текст и аудио (base64). Cursor может отобразить текст и воспроизвести аудио.
Нужен один из message или textToSummarize. Режим textToSummarize — для краткого озвучивания длинных ответов Cursor.
Инструмент playback_control
Название: Остановка / пауза воспроизведения (playback_control)
Вход:
action—"stop"или"pause"(остановить текущее воспроизведение).Выход: сообщение об успехе или подсказка.
Работает только на macOS. Останавливает воспроизведение, запущенное через afplay (ответы Yandex Voice в формате WAV). Если воспроизведение идёт через приложение по умолчанию (OGG), остановите его вручную. В чате можно написать: «Останови воспроизведение» или «Вызови playback_control с action stop».
Кнопки управления воспроизведением (пауза/стоп)
Пока MCP-сервер запущен (Cursor с подключённым yandex-voice), на macOS поднимается локальная панель с кнопками:
Открой в браузере: http://127.0.0.1:3846
Кнопки Стоп и Пауза останавливают текущее воспроизведение ответа Yandex Voice (работает только для afplay/WAV).
Держи вкладку открытой или добавь в закладки — во время озвучки ответа можно нажать «Стоп» прямо из браузера, без запроса в чате.
Локальная проверка
Запуск через stdio (для отладки или MCP Inspector):
export YANDEX_API_KEY=... YANDEX_FOLDER_ID=...
npm run dev
# или после сборки:
npm startСервер общается по stdin/stdout; для теста можно использовать MCP Inspector:npx @modelcontextprotocol/inspector node dist/index.js
Ускорение ответов
Чтобы диктор отвечал быстрее:
YANDEX_TTS_SPEED=1.3— ускорить речь (1.2–1.5 — комфортно, до 3.0 — максимально быстро).YANDEX_GPT_MAX_TOKENS=250— короче ответы GPT → меньше времени на генерацию и синтез.
Чанки TTS обрабатываются параллельно, что ускоряет длинные ответы.
Ограничения
SpeechKit TTS: размер одного запроса ограничен (в коде текст разбивается на чанки по 500 символов).
Для длинных ответов генерация и синтез могут занять несколько секунд.
Лицензия
MIT.
Available Tools
4 toolshealth_checkПроверка подключенияA
Проверяет, что Yandex GPT и SpeechKit TTS подключены и работают. Возвращает статус по каждому сервису.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the tool is a read-only health check returning service status. With no annotations, it carries full burden; it is clear but lacks details on error handling or response format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences efficiently convey purpose and output with no superfluous text. Front-loaded with the action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple health check with no parameters or output schema, the description adequately explains what it does and what it returns, covering all needed context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist; schema coverage is 100%. Baseline for 0 parameters is 4, and description appropriately requires no additional param info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool checks connectivity of Yandex GPT and SpeechKit TTS, returning status per service. It clearly distinguishes from sibling audio tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage before using related services but does not provide explicit when-to-use or when-not-to-use guidance, nor mentions alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
playback_controlОстановка / пауза воспроизведенияA
Остановить или поставить на паузу текущее воспроизведение голоса (ответа Yandex Voice). Работает только на macOS; действует только для воспроизведения через afplay (WAV).
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | stop — остановить, pause — остановить (возобновление не поддерживается) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must cover behavior. It mentions constraints but omits edge cases (e.g., no current playback, multiple instances, state after pause). Adequate but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: first states purpose, second adds constraints. No filler, front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, description covers key constraints. Lacks handling of error states, but acceptable given tool simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with enum values explained. Description repeats the action names without adding new meaning, meeting baseline but not exceeding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action (stop/pause) and resource (current playback of Yandex Voice response). Sibling tools like play_sound and speak_response are distinct, so no ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly specifies platform (macOS) and audio source (afplay/WAV) constraints, guiding when to use. Lacks explicit contrast with siblings but sufficient for differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
play_soundВоспроизвести звукA
Воспроизведение звуков на macOS: системные звуки, TTS или аудиофайл. Работает только на macOS.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Для system: имя звука (Basso, Glass, Hero, Ping и др.) | |
| path | No | Для file: абсолютный путь к аудиофайлу | |
| text | No | Для tts: текст для озвучки | |
| type | Yes | Тип: system — системный звук, tts — озвучка текста, file — аудиофайл |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the burden. It adds the critical constraint of macOS-only operation and lists three sound categories. However, it omits details like file format support, volume behavior, or whether the tool blocks or returns immediately.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no redundancy. It front-loads the purpose and then adds the platform constraint. Every word contributes to understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with 4 parameters, no output schema, and no annotations, the description covers the core functionality and platform. It could mention return behavior (e.g., no output on success) or error handling, but the current level is sufficient for most use cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are already documented. The description adds value by providing example sound names for the 'system' type (Basso, Glass, Hero, Ping), which goes beyond the schema. This helps the agent decide which parameter values to use.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose (playing sounds on macOS) and specifies three types: system sounds, TTS, audio file. It distinguishes itself from siblings by emphasizing macOS-only compatibility and the various sound sources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like speak_response or playback_control. There is no mention of prerequisites, when not to use, or how to choose between sound types.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
speak_responseГолосовой ответA
Озвучить ответ через Yandex GPT + TTS. Режимы: 1) message — вопрос пользователя, GPT генерирует и озвучивает развёрнутый ответ; 2) textToSummarize — текст ответа ассистента, GPT адаптирует для озвучивания. Контексты: default (краткое), coding_interview (алгоритмы, сложность), architecture (system design, trade-offs).
| Name | Required | Description | Default |
|---|---|---|---|
| context | No | Контекст: default — краткое озвучивание; coding_interview — развёрнуто с алгоритмами и Big O; architecture — развёрнуто с trade-offs и компонентами | |
| message | No | Вопрос пользователя — Yandex GPT генерирует развёрнутый ответ и озвучивает | |
| systemPrompt | No | Кастомный системный промпт. Переопределяет контекстный промпт | |
| textToSummarize | No | Текст ответа ассистента — Yandex GPT адаптирует под контекст (default: кратко; coding_interview/architecture: развёрнуто) и озвучивает |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses use of Yandex GPT and TTS, and explains the two modes. However, it does not mention the output format (audio stream, file, or direct playback), side effects, required permissions, or behavior when both message and textToSummarize are provided (likely exclusive). The description is basic but not misleading.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise: three sentences front-loaded with purpose, followed by mode and details. No extraneous words. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (4 parameters, no output schema, no annotations), the description is incomplete. It does not specify the output type (e.g., audio URL, base64, stream), whether the tool is synchronous, or what happens on parameter conflicts. Sibling tools hint at playback, but this tool's integration with them is unclear. The description could be enhanced to cover missing behavioral contracts.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description summarizes the modes and contexts, which aligns with schema comments. It does not add significant new meaning beyond the schema for each parameter. The high-level overview is helpful but not additional semantic depth.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Озвучить ответ через Yandex GPT + TTS' (voice response via GPT and TTS). It explains two main usage modes (message and textToSummarize) and three context options. This distinguishes it from sibling tools like health_check, playback_control, and play_sound, which are about audio system status or playback control, not generating speech from text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear guidance on when to use each mode (message for user questions, textToSummarize for assistant text) and context (default for brief, coding_interview/architecture for detailed). However, it does not explicitly state when NOT to use or compare with alternatives. Since siblings are unrelated, the guidance is adequate but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
v1.0.0- First observed
health_check - First observed
play_sound - First observed
playback_control - First observed
speak_response
TDQS
Scored across 4 tools
Each tool has a distinct purpose: health monitoring, playback control, sound playback, and TTS with GPT. No overlapping functionalities.
Tool names mostly follow a verb_noun pattern (play_sound, speak_response) with some compound nouns (health_check, playback_control). Consistent snake_case but minor variation in structure.
4 tools is a reasonable scope for a voice interaction server, covering health, playback control, sound playback, and speech response. Slightly thin but not undermanned.
Core voice interaction workflows are covered: health check, playback control, sound playback, and TTS with GPT context. Minor gaps like volume control or direct TTS are acceptable for this specific focus.
Maintenance
Related MCP Connectors
MCP server for AI dialogue using various LLM models via AceDataCloud
AI voice generation: text-to-speech and voice cloning from any MCP client.
MCP server for Text-to-Speech
MCP server for GLM chat completions using Zhipu AI models via AceDataCloud
Related MCP Servers
- AlicenseAqualityCmaintenanceAn MCP server implementation that integrates with Minimax API to provide AI-powered image generation and text-to-speech functionality in editors like Windsurf and Cursor.32950MIT
- FlicenseNot gradedqualityCmaintenanceMCP server for interacting with Yandex Cloud AI Studio, enabling chat, text generation, image generation, speech recognition/synthesis, embeddings, classification, search indexes, and AI agent creation with function calling.-
- AlicenseNot gradedqualityDmaintenanceWindows-optimized MCP server for ElevenLabs text-to-speech and audio processing, with fixed file paths and Cursor IDE integration.3MIT
- FlicenseAqualityCmaintenanceAn MCP server that enables voice-to-voice AI conversations using ElevenLabs for speech synthesis and recognition, with tools for voice management, text-to-speech, and speech-to-text.7-